The branch, master has been updated via 76967b33ebb pyldb: avoid segfault when adding an element with no name via 1d7dee5815d pytest/segfault: segfault with nameless element from e24e344d0da waf: install: Remove installation of PIDL and manpages.
https://git.samba.org/?p=samba.git;a=shortlog;h=master - Log ----------------------------------------------------------------- commit 76967b33ebb93a7ef5daa94b123ef9bfdce59ece Author: Douglas Bagnall <douglas.bagn...@catalyst.net.nz> Date: Fri Apr 12 15:00:20 2019 +1200 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 "<string>", line 7, in <module> ValueError: The element has no name Signed-off-by: Douglas Bagnall <douglas.bagn...@catalyst.net.nz> Reviewed-by: Noel Power <npo...@samba.org> Autobuild-User(master): Noel Power <npo...@samba.org> Autobuild-Date(master): Tue Apr 23 19:03:35 UTC 2019 on sn-devel-144 commit 1d7dee5815d1eaf43f841231767e19d110551aa3 Author: Douglas Bagnall <douglas.bagn...@catalyst.net.nz> Date: Sat Apr 13 11:29:15 2019 +1200 pytest/segfault: segfault with nameless element Signed-off-by: Douglas Bagnall <douglas.bagn...@catalyst.net.nz> Reviewed-by: Noel Power <npo...@samba.org> ----------------------------------------------------------------------- Summary of changes: lib/ldb/pyldb.c | 6 +++++- python/samba/tests/segfault.py | 10 ++++++++++ 2 files changed, 15 insertions(+), 1 deletion(-) Changeset truncated at 500 lines: 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/python/samba/tests/segfault.py b/python/samba/tests/segfault.py index 38dcb5c7036..b95c1ef5fa9 100644 --- a/python/samba/tests/segfault.py +++ b/python/samba/tests/segfault.py @@ -124,3 +124,13 @@ class SegfaultTests(samba.tests.TestCase): registry.open_ldb('', credentials=42) except ldb.LdbError as e: print("failed with %s" % e) + + @segfault_detector + def test_ldb_add_nameless_element(self): + m = ldb.Message() + e = ldb.MessageElement('q') + try: + m.add(e) + except ldb.LdbError: + pass + str(m) -- Samba Shared Repository