From: Andrew Bartlett Date: Tue, 29 Oct 2019 21:19:05 +0000 (+0000) Subject: pidl: Handle obtaining objects from a fixed-size array X-Git-Tag: talloc-2.3.1~13 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=f38077ea5ee0a8d3d18970e3e183c3ee516fa121;p=thirdparty%2Fsamba.git pidl: Handle obtaining objects from a fixed-size array Previously we would assume the array head was the talloc context however this is not the case if the array is a fixed size inline array within the parent struct. In that case the overall object's talloc context is the correct context to reference. Signed-off-by: Andrew Bartlett Pair-programmed-with: Douglas Bagnall Signed-off-by: Andrew Bartlett Reviewed-by: Noel Power Autobuild-User(master): Noel Power Autobuild-Date(master): Thu Nov 14 17:36:49 UTC 2019 on sn-devel-184 --- diff --git a/pidl/lib/Parse/Pidl/Samba4/Python.pm b/pidl/lib/Parse/Pidl/Samba4/Python.pm index fbb61c33580..161521c6e3a 100644 --- a/pidl/lib/Parse/Pidl/Samba4/Python.pm +++ b/pidl/lib/Parse/Pidl/Samba4/Python.pm @@ -2289,7 +2289,11 @@ sub ConvertObjectToPythonLevel($$$$$$$) $self->indent; my $member_var = "py_$e->{NAME}_$l->{LEVEL_INDEX}"; $self->pidl("PyObject *$member_var;"); - $self->ConvertObjectToPythonLevel($var_name, $env, $e, $nl, $var_name."[$counter]", $member_var, $fail, $recurse); + if (ArrayDynamicallyAllocated($e, $l)) { + $self->ConvertObjectToPythonLevel($var_name, $env, $e, $nl, $var_name."[$counter]", $member_var, $fail, $recurse); + } else { + $self->ConvertObjectToPythonLevel($mem_ctx, $env, $e, $nl, $var_name."[$counter]", $member_var, $fail, $recurse); + } $self->pidl("PyList_SetItem($py_var, $counter, $member_var);"); $self->deindent; $self->pidl("}"); diff --git a/selftest/knownfail.d/python-segfaults b/selftest/knownfail.d/python-segfaults index e100356553d..1be0566dcb1 100644 --- a/selftest/knownfail.d/python-segfaults +++ b/selftest/knownfail.d/python-segfaults @@ -1,2 +1 @@ samba.tests.segfault.samba.tests.segfault.SegfaultTests.test_net_replicate_init__3 -samba.tests.segfault.samba.tests.segfault.SegfaultTests.test_dcerpc_idl_inline_arrays