summaryrefslogtreecommitdiffstats
path: root/src/responder/common/cache_req/plugins
diff options
context:
space:
mode:
authorPavel Březina <pbrezina@redhat.com>2016-11-25 13:08:11 +0100
committerLukas Slebodnik <lslebodn@redhat.com>2016-12-19 23:22:40 +0100
commit39b4feb503082cbbd036b2dcd741fe2ffe4aed76 (patch)
treec2da671d9a5c0803a7b924a5f72e67436e14c02f /src/responder/common/cache_req/plugins
parent7b293a5095ef3e63cd2e3f2ff01b7484bf6dcd38 (diff)
downloadsssd-39b4feb503082cbbd036b2dcd741fe2ffe4aed76.tar.gz
sssd-39b4feb503082cbbd036b2dcd741fe2ffe4aed76.tar.xz
sssd-39b4feb503082cbbd036b2dcd741fe2ffe4aed76.zip
cache_req: fix initgroups by name
If overriden name was provided we stole already freed value. Name is attached to "user" talloc context which we freed before stealing the value. This caused crash in SSSD. Resolves: https://fedorahosted.org/sssd/ticket/3151 Reviewed-by: Lukáš Slebodník <lslebodn@redhat.com>
Diffstat (limited to 'src/responder/common/cache_req/plugins')
-rw-r--r--src/responder/common/cache_req/plugins/cache_req_initgroups_by_name.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/src/responder/common/cache_req/plugins/cache_req_initgroups_by_name.c b/src/responder/common/cache_req/plugins/cache_req_initgroups_by_name.c
index cc3795d56..8755d7e9c 100644
--- a/src/responder/common/cache_req/plugins/cache_req_initgroups_by_name.c
+++ b/src/responder/common/cache_req/plugins/cache_req_initgroups_by_name.c
@@ -152,9 +152,9 @@ cache_req_initgroups_by_name_dpreq_params(TALLOC_CTX *mem_ctx,
}
name = ldb_msg_find_attr_as_string(user->msgs[0], SYSDB_NAME, NULL);
- talloc_free(user);
if (name == NULL) {
DEBUG(SSSDBG_CRIT_FAILURE, "Bug: name cannot be NULL\n");
+ talloc_free(user);
return ERR_INTERNAL;
}
@@ -162,6 +162,8 @@ cache_req_initgroups_by_name_dpreq_params(TALLOC_CTX *mem_ctx,
* views unless some error occurred. */
*_string = talloc_steal(mem_ctx, name);
+ talloc_free(user);
+
return EOK;
}