diff options
author | Andrew Bartlett <abartlet@samba.org> | 2019-10-29 21:19:05 +0000 |
---|---|---|
committer | Noel Power <npower@samba.org> | 2019-11-14 17:36:49 +0000 |
commit | f38077ea5ee0a8d3d18970e3e183c3ee516fa121 (patch) | |
tree | 840c38f7eb86fdb73a37f34da689dcfc31df2400 | |
parent | 1261894ecaebc1a3340c42e818be25caa69f6364 (diff) | |
download | samba-f38077ea5ee0a8d3d18970e3e183c3ee516fa121.tar.gz |
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 <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
-rw-r--r-- | pidl/lib/Parse/Pidl/Samba4/Python.pm | 6 | ||||
-rw-r--r-- | selftest/knownfail.d/python-segfaults | 1 |
2 files changed, 5 insertions, 2 deletions
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 |