>From 080d8ea50792c24ca6216b1efbf32347ba3f5fb8 Mon Sep 17 00:00:00 2001 From: Jakub Hrozek Date: Mon, 7 Jul 2014 21:55:14 +0200 Subject: [PATCH 7/7] SDAP: Free bervals on failure in sdap_parse_entry --- src/providers/ldap/sdap.c | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/src/providers/ldap/sdap.c b/src/providers/ldap/sdap.c index 90cc76017580213b602e004365557e3efefe2f3c..9231cc2b0ef0072a8cf168c581d9f69966385e40 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); -- 1.9.3