diff options
author | Szymon Janc <szymon.janc@tieto.com> | 2013-01-04 16:10:31 +0100 |
---|---|---|
committer | Samuel Ortiz <sameo@linux.intel.com> | 2013-01-31 01:35:38 +0100 |
commit | 5c394711cc5cef4e47bba35238df89ba30b4c582 (patch) | |
tree | cf72ac8cb2c2fc454cb655150e971239acdd76d0 /src/ndef.c | |
parent | 24e09976f169bed0a79d07886cae35a0ef052944 (diff) | |
download | neard-5c394711cc5cef4e47bba35238df89ba30b4c582.tar.gz neard-5c394711cc5cef4e47bba35238df89ba30b4c582.tar.bz2 neard-5c394711cc5cef4e47bba35238df89ba30b4c582.zip |
ndef: Fix memory leak in build_ho_record
record data needs to be freed before returning ndef.
144 (80 direct, 64 indirect) bytes in 1 blocks are definitely lost in loss record 142 of 190
at 0x4C2B6CD: malloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
by 0x4E7FBFD: g_try_malloc0 (in /lib/x86_64-linux-gnu/libglib-2.0.so.0.3200.3)
by 0x424477: __ndef_build_from_message (ndef.c:2950)
by 0x41CEE3: push_ndef (device.c:276)
by 0x40B850: process_message.isra.4 (object.c:285)
by 0x5143C40: ??? (in /lib/x86_64-linux-gnu/libdbus-1.so.3.5.8)
by 0x5135B0F: dbus_connection_dispatch (in /lib/x86_64-linux-gnu/libdbus-1.so.3.5.8)
by 0x409247: message_dispatch (mainloop.c:76)
by 0x4E7A91A: ??? (in /lib/x86_64-linux-gnu/libglib-2.0.so.0.3200.3)
by 0x4E79D52: g_main_context_dispatch (in /lib/x86_64-linux-gnu/libglib-2.0.so.0.3200.3)
by 0x4E7A09F: ??? (in /lib/x86_64-linux-gnu/libglib-2.0.so.0.3200.3)
by 0x4E7A499: g_main_loop_run (in /lib/x86_64-linux-gnu/libglib-2.0.so.0.3200.3)
Diffstat (limited to 'src/ndef.c')
-rw-r--r-- | src/ndef.c | 5 |
1 files changed, 3 insertions, 2 deletions
@@ -2998,6 +2998,7 @@ static struct near_ndef_message *build_ho_record(DBusMessage *msg) char *carrier_type = NULL; uint8_t carrier; struct near_ndef_record *record = NULL; + struct near_ndef_message *ho = NULL; DBG(""); @@ -3043,13 +3044,13 @@ static struct near_ndef_message *build_ho_record(DBusMessage *msg) goto fail; record->ho->ac_payloads[0] = build_ho_local_ac_record(); - return near_ndef_prepare_handover_record("Hr", record, carrier, NULL); + ho = near_ndef_prepare_handover_record("Hr", record, carrier, NULL); fail: free_ho_payload(record->ho); g_free(record); - return NULL; + return ho; } struct near_ndef_message *__ndef_build_from_message(DBusMessage *msg) |