summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJakub Hrozek <jhrozek@redhat.com>2014-07-07 21:55:14 +0200
committerJakub Hrozek <jhrozek@redhat.com>2014-07-08 20:28:13 +0200
commit5ab0dedd52d248b2cf2eb028338919bc0046e2a9 (patch)
tree6209e0582ffc648d71fde204e748fed9d27cc543
parent88eac3adf8424b65195e725ff724c79d38500e1d (diff)
downloadsssd-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.c12
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);