From 50d5d5c2b8b304234b222c76413c47dc31a6379f Mon Sep 17 00:00:00 2001 From: Jakub Hrozek Date: Fri, 19 Feb 2016 15:50:12 +0100 Subject: [PATCH 109/109] memberof: Don't allocate on a NULL context MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit https://fedorahosted.org/sssd/ticket/2959 In case no previous delete operation occured, the del_ctx->muops pointer we allocate the diff structure was would be NULL, effectivelly leaking the diff array during the memberof processing. Allocating on del_ctx is safer as that pointer is always allocated and prevents the leak. Reviewed-by: Pavel Březina (cherry picked from commit cd7a272fb361626a45d54cd45daaab4bfe7ad93f) --- src/ldb_modules/memberof.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/ldb_modules/memberof.c b/src/ldb_modules/memberof.c index 4d7b23ea1b95bed0ec5c7cc717b95e6da3cd0717..be7c07dbcda257b6d813bb232ec27973167c25c4 100644 --- a/src/ldb_modules/memberof.c +++ b/src/ldb_modules/memberof.c @@ -2145,7 +2145,7 @@ static int mbof_del_mod_entry(struct mbof_del_operation *delop) if (!el || !el->num_values) { return LDB_ERR_OPERATIONS_ERROR; } - diff = talloc_array(del_ctx->muops, struct ldb_dn *, + diff = talloc_array(del_ctx, struct ldb_dn *, el->num_values + 1); if (!diff) { return LDB_ERR_OPERATIONS_ERROR; @@ -2241,6 +2241,7 @@ static int mbof_del_mod_entry(struct mbof_del_operation *delop) if (ret != LDB_SUCCESS) { return ret; } + talloc_steal(del_ctx->muops, diff[i]); } } -- 2.4.11