Blob Blame History Raw
From 82b0b6e036902ddd43f1818e472f035dfce06162 Mon Sep 17 00:00:00 2001
From: Sumit Bose <sbose@redhat.com>
Date: Wed, 29 Oct 2014 15:20:12 +0100
Subject: [PATCH 28/45] memberof: check for empty arrays to avoid segfaults

The arrays with members to add or delete may be empty, i.e. have 0
entries. In this case further processing should be skipped to avoid
segfaults later on.

Fixes (hopefully) https://fedorahosted.org/sssd/ticket/2430

Reviewed-by: Jakub Hrozek <jhrozek@redhat.com>
(cherry picked from commit a1bd8bc666df7fa696523ec8ec1dfe3d79780588)
---
 src/ldb_modules/memberof.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/src/ldb_modules/memberof.c b/src/ldb_modules/memberof.c
index c26a13bb94bafe62299572565cab4b53c77f3d94..c49be5d5fca593d69ba6dacc3460454080058100 100644
--- a/src/ldb_modules/memberof.c
+++ b/src/ldb_modules/memberof.c
@@ -3655,7 +3655,7 @@ static int mbof_mod_add(struct mbof_mod_ctx *mod_ctx,
         }
     }
 
-    if (ael != NULL) {
+    if (ael != NULL && ael->num > 0) {
         /* Add itself to the list of the parents to also get the memberuid */
         parents->dns = talloc_realloc(parents, parents->dns,
                                     struct ldb_dn *, parents->num + 1);
@@ -3725,7 +3725,7 @@ static int mbof_mod_delete(struct mbof_mod_ctx *mod_ctx,
     }
 
     /* prepare del sets */
-    if (del != NULL) {
+    if (del != NULL && del->num > 0) {
         for (i = 0; i < del->num; i++) {
             ret = mbof_append_delop(first, del->dns[i]);
             if (ret != LDB_SUCCESS) {
-- 
2.4.3