From 287cf82682c0f70a57e7d90748778e3b3fc36cda Mon Sep 17 00:00:00 2001 From: Andrew Bartlett Date: Mon, 25 Mar 2024 22:33:02 +1300 Subject: [PATCH] plydb: Keep talloc_reference() to the DN in PyDict_AsMessage Signed-off-by: Andrew Bartlett Reviewed-by: Douglas Bagnall --- lib/ldb/pyldb.c | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) 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); -- 2.11.4.GIT