On 11/22/2013 04:00 PM, Jakub Hrozek wrote:
On Fri, Nov 22, 2013 at 03:33:50PM +0100, Jakub Hrozek wrote:
I think this is it. Thank you for your patience. ACK
Pushed both to master.
Can you also resend the patches for 1.11 ? These don't apply cleanly..
_______________________________________________
sssd-devel mailing list
sssd-devel@lists.fedorahosted.org
https://lists.fedorahosted.org/mailman/listinfo/sssd-devel
Sure.
From f90d90bbd5cd20cd97a2798f4c88286ccca91d2c Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Pavel=20B=C5=99ezina?= <pbrez...@redhat.com>
Date: Mon, 11 Nov 2013 12:47:53 +0100
Subject: [PATCH 1/2] pac: fix double free
---
src/responder/pac/pacsrv_utils.c | 14 ++++++--------
1 file changed, 6 insertions(+), 8 deletions(-)
diff --git a/src/responder/pac/pacsrv_utils.c b/src/responder/pac/pacsrv_utils.c
index 30055a1345b7d943e6adf822438263c92e53b51a..f4af52c2d8be44d64e6d810c13028b436b74df6b 100644
--- a/src/responder/pac/pacsrv_utils.c
+++ b/src/responder/pac/pacsrv_utils.c
@@ -74,6 +74,7 @@ errno_t get_sids_from_pac(TALLOC_CTX *mem_ctx,
struct sss_domain_info *user_dom;
struct sss_domain_info *group_dom;
char *sid_str = NULL;
+ char *msid_str = NULL;
char *user_dom_sid_str = NULL;
size_t user_dom_sid_str_len;
enum idmap_error_code err;
@@ -231,24 +232,22 @@ errno_t get_sids_from_pac(TALLOC_CTX *mem_ctx,
}
- talloc_zfree(sid_str);
-
for(s = 0; s < info3->sidcount; s++) {
err = sss_idmap_smb_sid_to_sid(pac_ctx->idmap_ctx, info3->sids[s].sid,
- &sid_str);
+ &msid_str);
if (err != IDMAP_SUCCESS) {
DEBUG(SSSDBG_OP_FAILURE, ("sss_idmap_smb_sid_to_sid failed.\n"));
ret = EFAULT;
goto done;
}
- key.str = sid_str;
+ key.str = msid_str;
value.ul = 0;
- ret = responder_get_domain_by_id(pac_ctx->rctx, sid_str, &group_dom);
+ ret = responder_get_domain_by_id(pac_ctx->rctx, msid_str, &group_dom);
if (ret == EOK) {
ret = sysdb_search_object_by_sid(mem_ctx, group_dom->sysdb,
- group_dom, sid_str, NULL, &msg);
+ group_dom, msid_str, NULL, &msg);
if (ret == EOK && msg->count == 1 ) {
value.ul = ldb_msg_find_attr_as_uint64(msg->msgs[0],
SYSDB_GIDNUM, 0);
@@ -257,14 +256,13 @@ errno_t get_sids_from_pac(TALLOC_CTX *mem_ctx,
}
ret = hash_enter(sid_table, &key, &value);
+ sss_idmap_free_sid(pac_ctx->idmap_ctx, msid_str);
if (ret != HASH_SUCCESS) {
DEBUG(SSSDBG_OP_FAILURE, ("hash_enter failed [%d][%s].\n",
ret, hash_error_string(ret)));
ret = EIO;
goto done;
}
-
- sss_idmap_free_sid(pac_ctx->idmap_ctx, sid_str);
}
ret = EOK;
--
1.7.11.7
From 594610532f4abb1e7ea2e1fbfd117a7dcceba857 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Pavel=20B=C5=99ezina?= <pbrez...@redhat.com>
Date: Tue, 12 Nov 2013 13:41:49 +0100
Subject: [PATCH 2/2] pac: fix potential memory leaks
---
src/responder/pac/pacsrv_utils.c | 10 +++++-----
1 file changed, 5 insertions(+), 5 deletions(-)
diff --git a/src/responder/pac/pacsrv_utils.c b/src/responder/pac/pacsrv_utils.c
index f4af52c2d8be44d64e6d810c13028b436b74df6b..573b0f7a1f6c360c09deddefeb29efeb04847881 100644
--- a/src/responder/pac/pacsrv_utils.c
+++ b/src/responder/pac/pacsrv_utils.c
@@ -82,7 +82,7 @@ errno_t get_sids_from_pac(TALLOC_CTX *mem_ctx,
hash_key_t key;
hash_value_t value;
char *rid_start;
- struct ldb_result *msg;
+ struct ldb_result *msg = NULL;
char *user_sid_str = NULL;
char *primary_group_sid_str = NULL;
@@ -154,8 +154,8 @@ errno_t get_sids_from_pac(TALLOC_CTX *mem_ctx,
sid_str, NULL, &msg);
if (ret == EOK && msg->count == 1) {
value.ul = ldb_msg_find_attr_as_uint64(msg->msgs[0], SYSDB_UIDNUM, 0);
- talloc_free(msg);
}
+ talloc_zfree(msg);
ret = hash_enter(sid_table, &key, &value);
if (ret != HASH_SUCCESS) {
@@ -189,8 +189,8 @@ errno_t get_sids_from_pac(TALLOC_CTX *mem_ctx,
sid_str, NULL, &msg);
if (ret == EOK && msg->count == 1) {
value.ul = ldb_msg_find_attr_as_uint64(msg->msgs[0], SYSDB_GIDNUM, 0);
- talloc_free(msg);
}
+ talloc_zfree(msg);
ret = hash_enter(sid_table, &key, &value);
if (ret != HASH_SUCCESS) {
@@ -219,8 +219,8 @@ errno_t get_sids_from_pac(TALLOC_CTX *mem_ctx,
if (ret == EOK && msg->count == 1) {
value.ul = ldb_msg_find_attr_as_uint64(msg->msgs[0],
SYSDB_GIDNUM, 0);
- talloc_free(msg);
}
+ talloc_zfree(msg);
ret = hash_enter(sid_table, &key, &value);
if (ret != HASH_SUCCESS) {
@@ -251,8 +251,8 @@ errno_t get_sids_from_pac(TALLOC_CTX *mem_ctx,
if (ret == EOK && msg->count == 1 ) {
value.ul = ldb_msg_find_attr_as_uint64(msg->msgs[0],
SYSDB_GIDNUM, 0);
- talloc_free(msg);
}
+ talloc_zfree(msg);
}
ret = hash_enter(sid_table, &key, &value);
--
1.7.11.7
_______________________________________________
sssd-devel mailing list
sssd-devel@lists.fedorahosted.org
https://lists.fedorahosted.org/mailman/listinfo/sssd-devel