From e6dee5182d07e3fdbcdfe5b1b3d36f1d26672223 Mon Sep 17 00:00:00 2001 From: Pavel Březina Date: Mon, 17 Jun 2013 14:47:36 +0200 Subject: nested groups: do not return ENOMEM if num_groups is 0 talloc_realloc(..., 0) calls talloc_free() and returns NULL. If we process group that contains only users, we errornously return ENOMEM. --- src/providers/ldap/sdap_async_nested_groups.c | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) (limited to 'src/providers') diff --git a/src/providers/ldap/sdap_async_nested_groups.c b/src/providers/ldap/sdap_async_nested_groups.c index e20715359..f72b3a3f8 100644 --- a/src/providers/ldap/sdap_async_nested_groups.c +++ b/src/providers/ldap/sdap_async_nested_groups.c @@ -2168,12 +2168,16 @@ sdap_nested_group_deref_direct_process(struct tevent_req *subreq) } /* adjust size of nested groups array */ - state->nested_groups = talloc_realloc(state, state->nested_groups, - struct sysdb_attrs *, - state->num_groups); - if (state->nested_groups == NULL) { - ret = ENOMEM; - goto done; + if (state->num_groups > 0) { + state->nested_groups = talloc_realloc(state, state->nested_groups, + struct sysdb_attrs *, + state->num_groups); + if (state->nested_groups == NULL) { + ret = ENOMEM; + goto done; + } + } else { + talloc_zfree(state->nested_groups); } ret = EOK; -- cgit