On Wed, Oct 16, 2024 at 2:48 PM Petr Lautrbach <lautrbach@xxxxxxxxxx> wrote: > > https://github.com/swig/swig/blob/master/CHANGES.current > > "[Python] #2907 Fix returning null from functions with output > parameters. Ensures OUTPUT and INOUT typemaps are handled > consistently wrt return type. > > New declaration of SWIG_Python_AppendOutput is now: > > SWIG_Python_AppendOutput(PyObject* result, PyObject* obj, int is_void); > > The 3rd parameter is new and the new $isvoid special variable > should be passed to it, indicating whether or not the wrapped > function returns void. > > Also consider replacing with: > > SWIG_AppendOutput(PyObject* result, PyObject* obj); > > which calls SWIG_Python_AppendOutput with same parameters but adding $isvoid > for final parameter." > > Fixes: https://github.com/SELinuxProject/selinux/issues/447 > > selinuxswig_python_wrap.c: In function ‘_wrap_security_compute_user’: > selinuxswig_python_wrap.c:11499:17: error: too few arguments to function ‘SWIG_Python_AppendOutput’ > 11499 | resultobj = SWIG_Python_AppendOutput(resultobj, plist); > | ^~~~~~~~~~~~~~~~~~~~~~~~ > selinuxswig_python_wrap.c:1248:1: note: declared here > 1248 | SWIG_Python_AppendOutput(PyObject* result, PyObject* obj, int is_void) { > | ^~~~~~~~~~~~~~~~~~~~~~~~ > selinuxswig_python_wrap.c: In function ‘_wrap_security_compute_user_raw’: > selinuxswig_python_wrap.c:11570:17: error: too few arguments to function ‘SWIG_Python_AppendOutput’ > 11570 | resultobj = SWIG_Python_AppendOutput(resultobj, plist); > | ^~~~~~~~~~~~~~~~~~~~~~~~ > selinuxswig_python_wrap.c:1248:1: note: declared here > 1248 | SWIG_Python_AppendOutput(PyObject* result, PyObject* obj, int is_void) { > | ^~~~~~~~~~~~~~~~~~~~~~~~ > selinuxswig_python_wrap.c: In function ‘_wrap_security_get_boolean_names’: > selinuxswig_python_wrap.c:12470:17: error: too few arguments to function ‘SWIG_Python_AppendOutput’ > 12470 | resultobj = SWIG_Python_AppendOutput(resultobj, list); > | ^~~~~~~~~~~~~~~~~~~~~~~~ > selinuxswig_python_wrap.c:1248:1: note: declared here > 1248 | SWIG_Python_AppendOutput(PyObject* result, PyObject* obj, int is_void) { > | ^~~~~~~~~~~~~~~~~~~~~~~~ > error: command '/usr/bin/gcc' failed with exit code 1 > > Suggested-by: Jitka Plesnikova <jplesnik@xxxxxxxxxx> > Signed-off-by: Petr Lautrbach <lautrbach@xxxxxxxxxx> For these two patches: Acked-by: James Carter <jwcart2@xxxxxxxxx> > --- > libselinux/src/selinuxswig_python.i | 4 ++-- > 1 file changed, 2 insertions(+), 2 deletions(-) > > diff --git a/libselinux/src/selinuxswig_python.i b/libselinux/src/selinuxswig_python.i > index 17e03b9e36a5..03ed296d5b85 100644 > --- a/libselinux/src/selinuxswig_python.i > +++ b/libselinux/src/selinuxswig_python.i > @@ -71,7 +71,7 @@ def install(src, dest): > for (i = 0; i < *$2; i++) { > PyList_SetItem(list, i, PyString_FromString((*$1)[i])); > } > - $result = SWIG_Python_AppendOutput($result, list); > + $result = SWIG_AppendOutput($result, list); > } > > /* return a sid along with the result */ > @@ -108,7 +108,7 @@ def install(src, dest): > plist = PyList_New(0); > } > > - $result = SWIG_Python_AppendOutput($result, plist); > + $result = SWIG_AppendOutput($result, plist); > } > > /* Makes functions in get_context_list.h return a Python list of contexts */ > -- > 2.47.0 > >