[libsecret] item: Free SecreItem::value in finalize()



commit 2c5567cd652c20d13788040a78efb5820274da98
Author: Christophe Fergeau <cfergeau redhat com>
Date:   Sat Oct 17 22:57:52 2015 +0200

    item: Free SecreItem::value in finalize()
    
    This fixes:
    ==20768== 67 (40 direct, 27 indirect) bytes in 1 blocks are definitely lost in loss record 1,133 of 1,588
    ==20768==    at 0x4C28C50: malloc (in /usr/lib64/valgrind/vgpreload_memcheck-amd64-linux.so)
    ==20768==    by 0x6002FCC: g_malloc (gmem.c:94)
    ==20768==    by 0x601B523: g_slice_alloc (gslice.c:1007)
    ==20768==    by 0x601B563: g_slice_alloc0 (gslice.c:1032)
    ==20768==    by 0x4E5FB64: secret_value_new_full (secret-value.c:140)
    ==20768==    by 0x4E67B63: service_decode_aes_secret (secret-session.c:457)
    ==20768==    by 0x4E67D6B: _secret_session_decode_secret (secret-session.c:513)
    ==20768==    by 0x4E50A61: on_item_load_secret (secret-item.c:1157)
    ==20768==    by 0x5A3346D: g_task_return_now (gtask.c:1104)
    ==20768==    by 0x5A33575: g_task_return (gtask.c:1162)
    ==20768==    by 0x5A33E76: g_task_return_pointer (gtask.c:1537)
    ==20768==    by 0x5AAC7E6: reply_cb (gdbusproxy.c:2579)
    ==20768==    by 0x5A3346D: g_task_return_now (gtask.c:1104)
    ==20768==    by 0x5A33575: g_task_return (gtask.c:1162)
    ==20768==    by 0x5A33E76: g_task_return_pointer (gtask.c:1537)
    ==20768==    by 0x5A9BB7D: g_dbus_connection_call_done (gdbusconnection.c:5704)
    ==20768==    by 0x5A3346D: g_task_return_now (gtask.c:1104)
    ==20768==    by 0x5A334B6: complete_in_idle_cb (gtask.c:1118)
    ==20768==    by 0x5FFD3D0: g_idle_dispatch (gmain.c:5441)
    ==20768==    by 0x5FFAA18: g_main_dispatch (gmain.c:3154)
    ==20768==    by 0x5FFB85C: g_main_context_dispatch (gmain.c:3769)
    ==20768==    by 0x5FFBA40: g_main_context_iterate (gmain.c:3840)
    ==20768==    by 0x5FFBE66: g_main_loop_run (gmain.c:4034)
    ==20768==    by 0x4E510DA: secret_item_load_secret_sync (secret-item.c:1311)
    ==20768==    by 0x405238: test_load_secret_sync (test-item.c:592)
    ==20768==    by 0x60258FA: test_case_run (gtestutils.c:2158)
    ==20768==    by 0x6025CBB: g_test_run_suite_internal (gtestutils.c:2241)
    ==20768==    by 0x6025D64: g_test_run_suite_internal (gtestutils.c:2253)
    ==20768==    by 0x6025F7B: g_test_run_suite (gtestutils.c:2328)
    ==20768==    by 0x6024C1C: g_test_run (gtestutils.c:1596)
    ==20768==    by 0x4E7CA25: egg_tests_run_with_loop (egg-testing.c:167)
    ==20768==    by 0x406B52: main (test-item.c:887)
    
    https://bugzilla.gnome.org/show_bug.cgi?id=756766

 libsecret/secret-item.c |    3 +++
 1 files changed, 3 insertions(+), 0 deletions(-)
---
diff --git a/libsecret/secret-item.c b/libsecret/secret-item.c
index 1b11501..59c715b 100644
--- a/libsecret/secret-item.c
+++ b/libsecret/secret-item.c
@@ -267,6 +267,9 @@ secret_item_finalize (GObject *obj)
                g_object_remove_weak_pointer (G_OBJECT (self->pv->service),
                                              (gpointer *)&self->pv->service);
 
+       if (self->pv->value != NULL)
+               secret_value_unref (self->pv->value);
+
        g_mutex_clear (&self->pv->mutex);
 
        G_OBJECT_CLASS (secret_item_parent_class)->finalize (obj);


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]