diff options
author | Jakub Hrozek <jhrozek@redhat.com> | 2013-01-15 17:31:18 +0100 |
---|---|---|
committer | Jakub Hrozek <jhrozek@redhat.com> | 2013-01-15 20:42:26 +0100 |
commit | 1a54e022351a60fbfa619ef7ed6138fb892ad11a (patch) | |
tree | 547d47ba8e51e0087ebbadbe2a49079319e870fc /src/providers | |
parent | 2c0a971010596c122d7a0c0d76c8eb85f16f6d06 (diff) | |
download | sssd-1a54e022351a60fbfa619ef7ed6138fb892ad11a.tar.gz sssd-1a54e022351a60fbfa619ef7ed6138fb892ad11a.tar.bz2 sssd-1a54e022351a60fbfa619ef7ed6138fb892ad11a.zip |
LDAP: avoid complex realloc logic in save_rfc2307bis_group_memberships
https://fedorahosted.org/sssd/ticket/1761
The function tried to be smart and realloc only when needed, but that
only lead to hard-to find bugs where the logic would not allocate the
proper space. Remove the reallocation and prefer readability over speed
in this case.
Diffstat (limited to 'src/providers')
-rw-r--r-- | src/providers/ldap/sdap_async_initgroups.c | 16 |
1 files changed, 4 insertions, 12 deletions
diff --git a/src/providers/ldap/sdap_async_initgroups.c b/src/providers/ldap/sdap_async_initgroups.c index 698c9e1c..8c0b0167 100644 --- a/src/providers/ldap/sdap_async_initgroups.c +++ b/src/providers/ldap/sdap_async_initgroups.c @@ -1803,7 +1803,6 @@ save_rfc2307bis_group_memberships(struct sdap_initgr_rfc2307bis_state *state) int num_added; int i; int grp_count; - int grp_count_old = 0; char **add = NULL; tmp_ctx = talloc_new(NULL); @@ -1843,12 +1842,10 @@ save_rfc2307bis_group_memberships(struct sdap_initgr_rfc2307bis_state *state) * nesting limit. This array must be NULL terminated. */ for (grp_count = 0; iter->add[grp_count]; grp_count++); - if (grp_count > grp_count_old) { - add = talloc_realloc(tmp_ctx, add, char*, grp_count + 1); - if (add == NULL) { - ret = ENOMEM; - goto done; - } + add = talloc_zero_array(tmp_ctx, char *, grp_count + 1); + if (add == NULL) { + ret = ENOMEM; + goto done; } num_added = 0; @@ -1862,11 +1859,6 @@ save_rfc2307bis_group_memberships(struct sdap_initgr_rfc2307bis_state *state) } } - /* Swap old and new group counter. */ - grp_count ^= grp_count_old; - grp_count_old ^= grp_count; - grp_count ^= grp_count_old; - if (num_added == 0) { add = NULL; } else { |