From: Andrew Bartlett Date: Mon, 25 Mar 2024 09:33:02 +0000 (+1300) Subject: plydb: Keep talloc_reference() to the DN in PyDict_AsMessage X-Git-Tag: tdb-1.4.11~1354 X-Git-Url: http://git.ipfire.org/gitweb/?a=commitdiff_plain;h=287cf82682c0f70a57e7d90748778e3b3fc36cda;p=thirdparty%2Fsamba.git plydb: Keep talloc_reference() to the DN in PyDict_AsMessage Signed-off-by: Andrew Bartlett Reviewed-by: Douglas Bagnall --- diff --git a/lib/ldb/pyldb.c b/lib/ldb/pyldb.c index fc11599a93d..67e6141d1b8 100644 --- a/lib/ldb/pyldb.c +++ b/lib/ldb/pyldb.c @@ -1425,16 +1425,23 @@ static struct ldb_message *PyDict_AsMessage(TALLOC_CTX *mem_ctx, } if (dn_value) { - if (!pyldb_Object_AsDn(msg, dn_value, ldb_ctx, &msg->dn)) { + struct ldb_dn *dn = NULL; + if (!pyldb_Object_AsDn(msg, dn_value, ldb_ctx, &dn)) { PyErr_SetString(PyExc_TypeError, "unable to import dn object"); TALLOC_FREE(msg); return NULL; } - if (msg->dn == NULL) { + if (dn == NULL) { PyErr_SetString(PyExc_TypeError, "dn set but not found"); TALLOC_FREE(msg); return NULL; } + msg->dn = talloc_reference(msg, dn); + if (msg->dn == NULL) { + talloc_free(mem_ctx); + PyErr_NoMemory(); + return NULL; + } } else { PyErr_SetString(PyExc_TypeError, "no dn set"); TALLOC_FREE(msg);