wt., 3 gru 2019 o 20:24 Joel Savitz <jsavitz@xxxxxxxxxx> napisał(a): > > When Line.request() is called without the required 'consumer=value' > argument, the module attempts access an empty dictionary object > resulting in a segfault. This patch avoids such access when the > dictionary is empty and maintains the current design where the > LineBulk object is responsible for validation of arguments. > > Signed-off-by: Joel Savitz <jsavitz@xxxxxxxxxx> > --- > bindings/python/gpiodmodule.c | 8 ++++++-- > 1 file changed, 6 insertions(+), 2 deletions(-) > > diff --git a/bindings/python/gpiodmodule.c b/bindings/python/gpiodmodule.c > index 2f6ef51..ae7e1cc 100644 > --- a/bindings/python/gpiodmodule.c > +++ b/bindings/python/gpiodmodule.c > @@ -434,8 +434,12 @@ static PyObject *gpiod_Line_request(gpiod_LineObject *self, > gpiod_LineBulkObject *bulk_obj; > int rv; > > - def_val = PyDict_GetItemString(kwds, "default_val"); > - def_vals = PyDict_GetItemString(kwds, "default_vals"); > + if (PyDict_Size(kwds) > 0) { > + def_val = PyDict_GetItemString(kwds, "default_val"); > + def_vals = PyDict_GetItemString(kwds, "default_vals"); > + } else { > + def_val = def_vals = NULL; > + } > > if (def_val && def_vals) { > PyErr_SetString(PyExc_TypeError, > -- > 2.23.0 > Applied to master and 1.4.x stable. Thanks, Bartosz