diff options
author | Jakub Hrozek <jhrozek@redhat.com> | 2014-07-07 21:55:14 +0200 |
---|---|---|
committer | Jakub Hrozek <jhrozek@redhat.com> | 2014-07-08 20:28:13 +0200 |
commit | 5ab0dedd52d248b2cf2eb028338919bc0046e2a9 (patch) | |
tree | 6209e0582ffc648d71fde204e748fed9d27cc543 | |
parent | 88eac3adf8424b65195e725ff724c79d38500e1d (diff) | |
download | sssd-5ab0dedd52d248b2cf2eb028338919bc0046e2a9.tar.gz sssd-5ab0dedd52d248b2cf2eb028338919bc0046e2a9.tar.xz sssd-5ab0dedd52d248b2cf2eb028338919bc0046e2a9.zip |
SDAP: Free bervals on failure in sdap_parse_entry
Reviewed-by: Michal Židek <mzidek@redhat.com>
-rw-r--r-- | src/providers/ldap/sdap.c | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/src/providers/ldap/sdap.c b/src/providers/ldap/sdap.c index 90cc76017..9231cc2b0 100644 --- a/src/providers/ldap/sdap.c +++ b/src/providers/ldap/sdap.c @@ -448,6 +448,7 @@ int sdap_parse_entry(TALLOC_CTX *memctx, if (!vals[0]) { DEBUG(SSSDBG_CRIT_FAILURE, "Missing value after ldap_get_values() ??\n"); + ldap_value_free_len(vals); ret = EINVAL; goto done; } @@ -462,6 +463,7 @@ int sdap_parse_entry(TALLOC_CTX *memctx, v.data = (uint8_t *) sss_base64_encode(attrs, (uint8_t *) vals[i]->bv_val, vals[i]->bv_len); if (!v.data) { + ldap_value_free_len(vals); ret = ENOMEM; goto done; } @@ -486,13 +488,19 @@ int sdap_parse_entry(TALLOC_CTX *memctx, ret = sysdb_attrs_add_val(attrs, map[ai].sys_name, &v); - if (ret) goto done; + if (ret) { + ldap_value_free_len(vals); + goto done; + } } } } else { /* No map, just store the attribute */ ret = sysdb_attrs_add_val(attrs, name, &v); - if (ret) goto done; + if (ret) { + ldap_value_free_len(vals); + goto done; + } } } ldap_value_free_len(vals); |