]> git.ipfire.org Git - thirdparty/samba.git/commitdiff
pyldb: Fix Message.items() for a message containing elements
authorJoseph Sutton <josephsutton@catalyst.net.nz>
Fri, 28 May 2021 02:15:43 +0000 (14:15 +1200)
committerAndrew Bartlett <abartlet@samba.org>
Fri, 11 Jun 2021 07:41:38 +0000 (07:41 +0000)
Previously, message elements were being freed before the call to
Py_BuildValue(), resulting in an exception being raised. Additionally,
only the first element of the returned list was ever assigned to.

Signed-off-by: Joseph Sutton <josephsutton@catalyst.net.nz>
Reviewed-by: Andrew Bartlett <abartlet@samba.org>
Reviewed-by: Douglas Bagnall <douglas.bagnall@catalyst.net.nz>
lib/ldb/pyldb.c
selftest/knownfail.d/pyldb [deleted file]

index be01b24325bbfcf7a5605463364ee5bcba6ad1c1..dadea2a7d6e62932e6700cf2588f172a6ba22a7b 100644 (file)
@@ -3509,13 +3509,13 @@ static PyObject *py_ldb_msg_items(PyLdbMessageObject *self,
                PyObject *value = NULL;
                PyObject *py_el = PyLdbMessageElement_FromMessageElement(&msg->elements[i], msg->elements);
                int res = 0;
-               Py_CLEAR(py_el);
                value = Py_BuildValue("(sO)", msg->elements[i].name, py_el);
+               Py_CLEAR(py_el);
                if (value == NULL ) {
                        Py_CLEAR(l);
                        return NULL;
                }
-               res = PyList_SetItem(l, 0, value);
+               res = PyList_SetItem(l, j, value);
                if (res == -1) {
                        Py_CLEAR(l);
                        return NULL;
diff --git a/selftest/knownfail.d/pyldb b/selftest/knownfail.d/pyldb
deleted file mode 100644 (file)
index c93fb09..0000000
+++ /dev/null
@@ -1 +0,0 @@
-^ldb.python.api.LdbMsgTests.test_items