pygensec: insist on proper AuthContext in start_server
authorDouglas Bagnall <douglas.bagnall@catalyst.net.nz>
Wed, 2 May 2018 22:26:26 +0000 (10:26 +1200)
committerAndrew Bartlett <abartlet@samba.org>
Fri, 1 Feb 2019 02:36:17 +0000 (03:36 +0100)
Fixes another segfault.

Signed-off-by: Douglas Bagnall <douglas.bagnall@catalyst.net.nz>
Reviewed-by: Andrew Bartlett <abartlet@samba.org>
selftest/knownfail.d/python-segfaults
source4/auth/gensec/pygensec.c

index c4f83f36a122033ecfd4565797b37db0eea6b241..c8331d941ef3745e8c980e56fb43e1f64ea956a1 100644 (file)
@@ -1,6 +1,5 @@
 samba.tests.segfault.samba.tests.segfault.SegfaultTests.test_auth_user_session
 samba.tests.segfault.samba.tests.segfault.SegfaultTests.test_encrypt_netr_crypt_password
 samba.tests.segfault.samba.tests.segfault.SegfaultTests.test_auth_user_session
 samba.tests.segfault.samba.tests.segfault.SegfaultTests.test_encrypt_netr_crypt_password
-samba.tests.segfault.samba.tests.segfault.SegfaultTests.test_gensec_start_server
 samba.tests.segfault.samba.tests.segfault.SegfaultTests.test_hive_open_ldb
 samba.tests.segfault.samba.tests.segfault.SegfaultTests.test_net_replicate_chunk_1
 samba.tests.segfault.samba.tests.segfault.SegfaultTests.test_net_replicate_init__1
 samba.tests.segfault.samba.tests.segfault.SegfaultTests.test_hive_open_ldb
 samba.tests.segfault.samba.tests.segfault.SegfaultTests.test_net_replicate_chunk_1
 samba.tests.segfault.samba.tests.segfault.SegfaultTests.test_net_replicate_init__1
index d27fe28648a807bfe9e6f8fc4aca7974041b3f6c..d8f782f8d191138eae85995f43915cf641a73fe7 100644 (file)
@@ -176,7 +176,15 @@ static PyObject *py_gensec_start_server(PyTypeObject *type, PyObject *args, PyOb
        }
 
        if (py_auth_context != Py_None) {
        }
 
        if (py_auth_context != Py_None) {
-               auth_context = pytalloc_get_type(py_auth_context, struct auth4_context);
+               bool ok = py_check_dcerpc_type(py_auth_context,
+                                              "samba.auth",
+                                              "AuthContext");
+               if (!ok) {
+                       return NULL;
+               }
+
+               auth_context = pytalloc_get_type(py_auth_context,
+                                                struct auth4_context);
                if (!auth_context) {
                        PyErr_Format(PyExc_TypeError,
                                     "Expected auth.AuthContext for auth_context argument, got %s",
                if (!auth_context) {
                        PyErr_Format(PyExc_TypeError,
                                     "Expected auth.AuthContext for auth_context argument, got %s",