pidl: Handle obtaining objects from a fixed-size array
authorAndrew Bartlett <abartlet@samba.org>
Tue, 29 Oct 2019 21:19:05 +0000 (21:19 +0000)
committerNoel Power <npower@samba.org>
Thu, 14 Nov 2019 17:36:49 +0000 (17:36 +0000)
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 <abartlet@samba.org>
Pair-programmed-with: Douglas Bagnall <douglas.bagnall@catalyst.net.nz>
Signed-off-by: Andrew Bartlett <abartlet@samba.org>
Reviewed-by: Noel Power <npower@samba.org>
Autobuild-User(master): Noel Power <npower@samba.org>
Autobuild-Date(master): Thu Nov 14 17:36:49 UTC 2019 on sn-devel-184

pidl/lib/Parse/Pidl/Samba4/Python.pm
selftest/knownfail.d/python-segfaults

index fbb61c33580823869a8462039d66a6d85f11d1f2..161521c6e3af40c72267a7d9deb3a65bd904fd11 100644 (file)
@@ -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("}");
index e100356553dcdd759803b80b47d5b5147406745b..1be0566dcb1eab45e2509718e14dff7419b27e90 100644 (file)
@@ -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