diff options
author | Sumit Bose <sbose@redhat.com> | 2014-10-29 15:20:12 +0100 |
---|---|---|
committer | Jakub Hrozek <jhrozek@redhat.com> | 2014-11-04 12:34:44 +0100 |
commit | a1bd8bc666df7fa696523ec8ec1dfe3d79780588 (patch) | |
tree | 39881072cb375ee0119ad96edbcdb2e130195a8b /src | |
parent | cff89439b21f8573c6896b09cb1a8d5f9de3144c (diff) | |
download | sssd-a1bd8bc666df7fa696523ec8ec1dfe3d79780588.tar.gz sssd-a1bd8bc666df7fa696523ec8ec1dfe3d79780588.tar.xz sssd-a1bd8bc666df7fa696523ec8ec1dfe3d79780588.zip |
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>
Diffstat (limited to 'src')
-rw-r--r-- | src/ldb_modules/memberof.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/src/ldb_modules/memberof.c b/src/ldb_modules/memberof.c index ceeba0e47..995c382a8 100644 --- a/src/ldb_modules/memberof.c +++ b/src/ldb_modules/memberof.c @@ -3654,7 +3654,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); @@ -3724,7 +3724,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) { |