From: Douglas Bagnall Date: Fri, 12 Apr 2019 03:00:20 +0000 (+1200) Subject: pyldb: avoid segfault when adding an element with no name X-Git-Url: http://git.samba.org/samba.git/?p=sharpe%2Fsamba-autobuild%2F.git;a=commitdiff_plain;h=76967b33ebb93a7ef5daa94b123ef9bfdce59ece pyldb: avoid segfault when adding an element with no name We don't want to see this: python3 -c "import sys sys.path.insert(0, 'bin/python') import ldb m = ldb.Message() e = ldb.MessageElement('q') try: m.add(e) except ldb.LdbError: pass print(m) " Segmentation fault (core dumped) instead we want this: Traceback (most recent call last): File "", line 7, in ValueError: The element has no name Signed-off-by: Douglas Bagnall Reviewed-by: Noel Power Autobuild-User(master): Noel Power Autobuild-Date(master): Tue Apr 23 19:03:35 UTC 2019 on sn-devel-144 --- diff --git a/lib/ldb/pyldb.c b/lib/ldb/pyldb.c index 6e845d15c36..319840c2ea6 100644 --- a/lib/ldb/pyldb.c +++ b/lib/ldb/pyldb.c @@ -3528,7 +3528,11 @@ static PyObject *py_ldb_msg_add(PyLdbMessageObject *self, PyObject *args) PyErr_SetString(PyExc_ValueError, "Invalid MessageElement object"); return NULL; } - + if (el->name == NULL) { + PyErr_SetString(PyExc_ValueError, + "The element has no name"); + return NULL; + } ret = ldb_msg_add_empty(msg, el->name, el->flags, &el_new); PyErr_LDB_ERROR_IS_ERR_RAISE(PyExc_LdbError, ret, NULL); diff --git a/selftest/knownfail.d/python-segfaults b/selftest/knownfail.d/python-segfaults index bc2a71610a1..c8331d941ef 100644 --- a/selftest/knownfail.d/python-segfaults +++ b/selftest/knownfail.d/python-segfaults @@ -4,4 +4,3 @@ 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_net_replicate_init__3 -samba.tests.segfault.samba.tests.segfault.SegfaultTests.test_ldb_add_nameless_element