pyldb: py_ldb_msg_contains() checks ldb equality
authorDouglas Bagnall <douglas.bagnall@catalyst.net.nz>
Fri, 15 Mar 2024 04:09:53 +0000 (17:09 +1300)
committerAndrew Bartlett <abartlet@samba.org>
Wed, 10 Apr 2024 05:13:32 +0000 (05:13 +0000)
We can't use PyErr_LDB_MESSAGE_OR_RAISE() here, because the return type
is int, not PyObject*.

Signed-off-by: Douglas Bagnall <douglas.bagnall@catalyst.net.nz>
Reviewed-by: Andrew Bartlett <abartlet@samba.org>
lib/ldb/pyldb.c

index eeba4470277207341fcfdbe3176843e52c32d162..874168b05644b3a915d930c55f597a0b8d096ba5 100644 (file)
@@ -3770,7 +3770,13 @@ static int py_ldb_msg_contains(PyLdbMessageObject *self, PyObject *py_name)
 {
        struct ldb_message_element *el = NULL;
        const char *name = NULL;
-       struct ldb_message *msg = pyldb_Message_AsMessage(self);
+       struct ldb_message *msg = pyldb_Message_as_message(self);
+       struct ldb_dn *dn = msg->dn;
+
+       if (dn != NULL && (self->pyldb->ldb_ctx != ldb_dn_get_ldb_context(dn))) {
+               return -1;
+       }
+
        name = PyUnicode_AsUTF8(py_name);
        if (name == NULL) {
                return -1;