The branch, master has been updated via 9342b3e pyrpc: Fix segfault in ClientConnection from 375d772 vfs_acl_xattr|tdb: ensure create mask is at least 0666 if ignore_system_acls is set
https://git.samba.org/?p=samba.git;a=shortlog;h=master - Log ----------------------------------------------------------------- commit 9342b3ebf7fe7b7565406bd9a606b6676c08b029 Author: Gary Lockyer <g...@catalyst.net.nz> Date: Wed Apr 19 16:13:20 2017 +1200 pyrpc: Fix segfault in ClientConnection Fix segfault when connecting over TCP, the endpoints list in dummy_table was not initialised this caused a segfault when attempting to connect over TCP. Signed-off-by: Gary Lockyer <g...@catalyst.net.nz> Reviewed-by: Andrew Bartlet <abart...@samba.org> Reviewed-by: Andreas Schneider <a...@samba.org> Autobuild-User(master): Andreas Schneider <a...@cryptomilk.org> Autobuild-Date(master): Fri Apr 21 16:10:12 CEST 2017 on sn-devel-144 ----------------------------------------------------------------------- Summary of changes: python/samba/tests/dcerpc/bare.py | 18 ++++++++++++++++++ source4/librpc/rpc/pyrpc.c | 8 ++++++++ 2 files changed, 26 insertions(+) Changeset truncated at 500 lines: diff --git a/python/samba/tests/dcerpc/bare.py b/python/samba/tests/dcerpc/bare.py index e101c5b..270c7af 100644 --- a/python/samba/tests/dcerpc/bare.py +++ b/python/samba/tests/dcerpc/bare.py @@ -19,6 +19,7 @@ """Tests for samba.tests.dcerpc.bare.""" +import os from samba.dcerpc import ClientConnection import samba.tests @@ -40,3 +41,20 @@ class BareTestCase(samba.tests.TestCase): basis_connection=x, lp_ctx=samba.tests.env_loadparm()) self.assertEquals(24, len(x.request(0, chr(0) * 8))) self.assertEquals("\x01\x00\x00\x00", y.request(0, chr(0) * 4)) + + def test_bare_tcp(self): + # Connect to the echo pipe + x = ClientConnection("ncacn_ip_tcp:%s" % os.environ["SERVER"], + ("60a15ec5-4de8-11d7-a637-005056a20182", 1), + lp_ctx=samba.tests.env_loadparm()) + self.assertEquals("\x01\x00\x00\x00", x.request(0, chr(0) * 4)) + + def test_two_contexts_tcp(self): + x = ClientConnection("ncacn_ip_tcp:%s" % os.environ["SERVER"], + ("12345778-1234-abcd-ef00-0123456789ac", 1), + lp_ctx=samba.tests.env_loadparm()) + y = ClientConnection("ncacn_ip_tcp:%s" % os.environ["SERVER"], + ("60a15ec5-4de8-11d7-a637-005056a20182", 1), + basis_connection=x, lp_ctx=samba.tests.env_loadparm()) + self.assertEquals(24, len(x.request(0, chr(0) * 8))) + self.assertEquals("\x01\x00\x00\x00", y.request(0, chr(0) * 4)) diff --git a/source4/librpc/rpc/pyrpc.c b/source4/librpc/rpc/pyrpc.c index d4f13ba..8b817b8 100644 --- a/source4/librpc/rpc/pyrpc.c +++ b/source4/librpc/rpc/pyrpc.c @@ -293,6 +293,7 @@ static PyObject *dcerpc_interface_new(PyTypeObject *type, PyObject *args, PyObje "binding", "syntax", "lp_ctx", "credentials", "basis_connection", NULL }; static struct ndr_interface_table dummy_table; + static struct ndr_interface_string_array dummy_endpoints; PyObject *args2 = Py_None; PyObject *kwargs2 = Py_None; @@ -316,6 +317,13 @@ static PyObject *dcerpc_interface_new(PyTypeObject *type, PyObject *args, PyObje return NULL; } + /* + * Initialise the endpoints list in dummy_table if required + */ + if (dummy_table.endpoints == NULL) { + dummy_table.endpoints = &dummy_endpoints; + } + args2 = Py_BuildValue("(s)", binding_string); if (args2 == NULL) { return NULL; -- Samba Shared Repository