[gnome-keyring] xdg: Fix ref leak in remove_assertion_from_trust()
- From: Stefan Walter <stefw src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-keyring] xdg: Fix ref leak in remove_assertion_from_trust()
- Date: Tue, 14 Oct 2014 16:21:17 +0000 (UTC)
commit 0db2253d64b5607bf20e4e17060de81450e91797
Author: Christophe Fergeau <cfergeau redhat com>
Date: Mon Sep 22 13:30:44 2014 +0200
xdg: Fix ref leak in remove_assertion_from_trust()
When a transaction is used, remove_assertion_from_trust() will
steal the assertion and its key from the 'assertions' hash table.
The stolen assertion will then be added to the transaction and be
unreferenced later, but the key must be unref'ed as the hash table
owned a reference on it.
This fixes:
==9337== 104 (40 direct, 64 indirect) bytes in 1 blocks are definitely lost in loss record 614 of 678
==9337== at 0x4A0645D: malloc (in /usr/lib64/valgrind/vgpreload_memcheck-amd64-linux.so)
==9337== by 0x4EEADE6: g_malloc (gmem.c:97)
==9337== by 0x4F03A22: g_slice_alloc (gslice.c:1007)
==9337== by 0x4EB6954: g_bytes_new_with_free_func (gbytes.c:183)
==9337== by 0x4EB68D5: g_bytes_new_take (gbytes.c:126)
==9337== by 0x4116D4: create_assertion_key (gkm-xdg-trust.c:355)
==9337== by 0x411755: lookup_or_create_assertion_key (gkm-xdg-trust.c:371)
==9337== by 0x41312C: gkm_xdg_trust_replace_assertion (gkm-xdg-trust.c:874)
==9337== by 0x413B62: factory_create_assertion (gkm-xdg-assertion.c:181)
==9337== by 0x4338A3: gkm_session_create_object_for_factory (gkm-session.c:778)
==9337== by 0x433A5B: gkm_session_create_object_for_attributes (gkm-session.c:820)
==9337== by 0x434222: gkm_session_C_CreateObject (gkm-session.c:954)
==9337== by 0x40A1D0: test_create_assertion_twice (test-xdg-trust.c:497)
==9337== by 0x4F0E27A: test_case_run (gtestutils.c:2059)
==9337== by 0x4F0E602: g_test_run_suite_internal (gtestutils.c:2120)
==9337== by 0x4F0E6C4: g_test_run_suite_internal (gtestutils.c:2131)
==9337== by 0x4F0E6C4: g_test_run_suite_internal (gtestutils.c:2131)
==9337== by 0x4F0E847: g_test_run_suite (gtestutils.c:2184)
==9337== by 0x4F0D551: g_test_run (gtestutils.c:1488)
==9337== by 0x4516AD: testing_thread (egg-testing.c:142)
==9337== by 0x4F112F4: g_thread_proxy (gthread.c:764)
==9337== by 0x3B7AE07F34: start_thread (pthread_create.c:309)
==9337== by 0x3B7AAF4C3C: clone (clone.S:111)
https://bugzilla.gnome.org/show_bug.cgi?id=738508
pkcs11/xdg-store/gkm-xdg-trust.c | 1 +
1 files changed, 1 insertions(+), 0 deletions(-)
---
diff --git a/pkcs11/xdg-store/gkm-xdg-trust.c b/pkcs11/xdg-store/gkm-xdg-trust.c
index fa5e16b..68d9721 100644
--- a/pkcs11/xdg-store/gkm-xdg-trust.c
+++ b/pkcs11/xdg-store/gkm-xdg-trust.c
@@ -439,6 +439,7 @@ remove_assertion_from_trust (GkmXdgTrust *self, GkmAssertion *assertion,
if (!g_hash_table_steal (self->pv->assertions, key))
g_return_if_reached ();
gkm_transaction_add (transaction, self, complete_remove_assertion, assertion);
+ g_bytes_unref (key);
}
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]