[SCM] Samba Shared Repository - branch master updated

Andreas Schneider asn at samba.org
Fri Apr 21 14:11:03 UTC 2017


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 <gary at 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 <gary at catalyst.net.nz>
    Reviewed-by: Andrew Bartlet <abartlet at samba.org>
    Reviewed-by: Andreas Schneider <asn at samba.org>
    
    Autobuild-User(master): Andreas Schneider <asn at 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



More information about the samba-cvs mailing list