ldb: Don’t leak ‘msg’
authorJoseph Sutton <josephsutton@catalyst.net.nz>
Thu, 6 Jul 2023 22:42:01 +0000 (10:42 +1200)
committerAndrew Bartlett <abartlet@samba.org>
Tue, 8 Aug 2023 04:39:37 +0000 (04:39 +0000)
Signed-off-by: Joseph Sutton <josephsutton@catalyst.net.nz>
Reviewed-by: Andrew Bartlett <abartlet@samba.org>
lib/ldb/pyldb.c

index cc222ed7f3d64bc1e8a301dd390c87753e9858ef..8d38ed83fc9c150636b172311ee986b3a2781769 100644 (file)
@@ -1396,14 +1396,17 @@ static struct ldb_message *PyDict_AsMessage(TALLOC_CTX *mem_ctx,
        if (dn_value) {
                if (!pyldb_Object_AsDn(msg, dn_value, ldb_ctx, &msg->dn)) {
                        PyErr_SetString(PyExc_TypeError, "unable to import dn object");
+                       TALLOC_FREE(msg);
                        return NULL;
                }
                if (msg->dn == NULL) {
                        PyErr_SetString(PyExc_TypeError, "dn set but not found");
+                       TALLOC_FREE(msg);
                        return NULL;
                }
        } else {
                PyErr_SetString(PyExc_TypeError, "no dn set");
+               TALLOC_FREE(msg);
                return NULL;
        }
 
@@ -1414,6 +1417,7 @@ static struct ldb_message *PyDict_AsMessage(TALLOC_CTX *mem_ctx,
                                                           mod_flags, key_str);
                        if (msg_el == NULL) {
                                PyErr_Format(PyExc_TypeError, "unable to import element '%s'", key_str);
+                               TALLOC_FREE(msg);
                                return NULL;
                        }
                        memcpy(&msg->elements[msg_pos], msg_el, sizeof(*msg_el));