summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDouglas Bagnall <douglas.bagnall@catalyst.net.nz>2019-07-04 16:43:12 +1200
committerDouglas Bagnall <dbagnall@samba.org>2019-07-10 04:32:13 +0000
commitfdb9a59069c5fea131669510b59901cbe3d9e58e (patch)
treeed9f005035f036b2b72edc7172e49201c5974900
parent192386ede62c4a72c0fbc173240f02357455c609 (diff)
downloadsamba-fdb9a59069c5fea131669510b59901cbe3d9e58e.tar.gz
pyldb: ldb.register_module() checks arguments a little bit
Signed-off-by: Douglas Bagnall <douglas.bagnall@catalyst.net.nz> Reviewed-by: Gary Lockyer <gary@catalyst.net.nz>
-rw-r--r--lib/ldb/pyldb.c14
-rw-r--r--selftest/knownfail.d/python-segfaults1
2 files changed, 11 insertions, 4 deletions
diff --git a/lib/ldb/pyldb.c b/lib/ldb/pyldb.c
index 13d7c962d1e..a6069be46a9 100644
--- a/lib/ldb/pyldb.c
+++ b/lib/ldb/pyldb.c
@@ -4136,7 +4136,8 @@ static PyObject *py_register_module(PyObject *module, PyObject *args)
int ret;
struct ldb_module_ops *ops;
PyObject *input;
- PyObject *tmp;
+ PyObject *tmp = NULL;
+ const char *name = NULL;
if (!PyArg_ParseTuple(args, "O", &input))
return NULL;
@@ -4148,10 +4149,17 @@ static PyObject *py_register_module(PyObject *module, PyObject *args)
}
tmp = PyObject_GetAttrString(input, discard_const_p(char, "name"));
- ops->name = talloc_strdup(ops, PyUnicode_AsUTF8(tmp));
-
+ if (tmp == NULL) {
+ return NULL;
+ }
+ name = PyUnicode_AsUTF8(tmp);
+ if (name == NULL) {
+ return NULL;
+ }
Py_XDECREF(tmp);
Py_INCREF(input);
+
+ ops->name = talloc_strdup(ops, name);
ops->private_data = input;
ops->init_context = py_module_init;
ops->search = py_module_search;
diff --git a/selftest/knownfail.d/python-segfaults b/selftest/knownfail.d/python-segfaults
index e5821538b6e..42f83f8b8b9 100644
--- a/selftest/knownfail.d/python-segfaults
+++ b/selftest/knownfail.d/python-segfaults
@@ -1,5 +1,4 @@
samba.tests.segfault.samba.tests.segfault.SegfaultTests.test_encrypt_netr_crypt_password
samba.tests.segfault.samba.tests.segfault.SegfaultTests.test_hive_open_ldb
-samba.tests.segfault.samba.tests.segfault.SegfaultTests.test_ldb_register_module
samba.tests.segfault.samba.tests.segfault.SegfaultTests.test_net_replicate_chunk_1
samba.tests.segfault.samba.tests.segfault.SegfaultTests.test_net_replicate_init__3