From f38077ea5ee0a8d3d18970e3e183c3ee516fa121 Mon Sep 17 00:00:00 2001 From: Andrew Bartlett Date: Tue, 29 Oct 2019 21:19:05 +0000 Subject: [PATCH] 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 --- pidl/lib/Parse/Pidl/Samba4/Python.pm | 6 +++++- 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 -- 2.47.3