Skip to content

Commit

Permalink
[ndef-write] Fixed invalid free()
Browse files Browse the repository at this point in the history
==8237== Invalid free() / delete / delete[] / realloc()
==8237==    at 0x4840DB4: free (vg_replace_malloc.c:530)
==8237==    by 0x1E353: write_ndef_to_type2_tag (ndef-write.c:174)
==8237==    by 0x1E5AB: write_ndef_to_tag (ndef-write.c:214)
==8237==    by 0x1E963: write_ndef_to_adapter (ndef-write.c:289)
==8237==    by 0x1EB53: write_ndef_to_adapter_path (ndef-write.c:324)
==8237==    by 0x1EC9B: write_ndef (ndef-write.c:351)
==8237==    by 0x1F0DF: main (ndef-write.c:426)
==8237==  Address 0x4e0f0f0 is 0 bytes inside a block of size 144 free'd
==8237==    at 0x4840DB4: free (vg_replace_malloc.c:530)
==8237==    by 0x4A2EA03: g_bytes_unref (gbytes.c:336)
==8237==    by 0x4A8EAB9: g_variant_unref (gvariant-core.c:638)
==8237==    by 0x4A8EAF9: g_variant_release_children (gvariant-core.c:257)
==8237==    by 0x4A8EAF9: g_variant_unref (gvariant-core.c:640)
==8237==    by 0x490A18B: g_dbus_message_finalize (gdbusmessage.c:489)
==8237==    by 0x49B89E7: g_object_unref (gobject.c:3340)
==8237==    by 0x49097A7: g_dbus_connection_call_sync_internal (gdbusconnection.c:5992)
==8237==    by 0x49097A7: g_dbus_connection_call_with_unix_fd_list_sync (gdbusconnection.c:6299)
==8237==    by 0x4914B23: g_dbus_proxy_call_sync_internal (gdbusproxy.c:2870)
==8237==    by 0x4914B23: g_dbus_proxy_call_sync (gdbusproxy.c:3062)
==8237==    by 0x1BFB3: org_sailfishos_nfc_tag_type2_call_write_data_sync (org.sailfishos.nfc.TagType2.c:1984)
==8237==    by 0x1E297: write_ndef_to_type2_tag (ndef-write.c:161)
==8237==    by 0x1E5AB: write_ndef_to_tag (ndef-write.c:214)
==8237==    by 0x1E963: write_ndef_to_adapter (ndef-write.c:289)
==8237==    by 0x1EB53: write_ndef_to_adapter_path (ndef-write.c:324)
==8237==    by 0x1EC9B: write_ndef (ndef-write.c:351)
==8237==    by 0x1F0DF: main (ndef-write.c:426)
==8237==  Block was alloc'd at
==8237==    at 0x483F790: malloc (vg_replace_malloc.c:299)
==8237==    by 0x4A59E6D: g_malloc (gmem.c:99)
==8237==    by 0x1E05F: write_ndef_to_type2_tag (ndef-write.c:134)
==8237==    by 0x1E5AB: write_ndef_to_tag (ndef-write.c:214)
==8237==    by 0x1E963: write_ndef_to_adapter (ndef-write.c:289)
==8237==    by 0x1EB53: write_ndef_to_adapter_path (ndef-write.c:324)
==8237==    by 0x1EC9B: write_ndef (ndef-write.c:351)
==8237==    by 0x1F0DF: main (ndef-write.c:426)
  • Loading branch information
monich committed Mar 28, 2019
1 parent 56a98db commit 8265e9c
Showing 1 changed file with 6 additions and 4 deletions.
10 changes: 6 additions & 4 deletions tools/ndef-write/ndef-write.c
Expand Up @@ -155,13 +155,15 @@ write_ndef_to_type2_tag(

if (!bytes_to_write) {
printf("Nothing to write.\n");
g_free(data);
} else {
GVariant* data_variant = g_variant_ref_sink
(g_variant_new_from_data(G_VARIANT_TYPE("ay"),
data, bytes_to_write, TRUE, g_free, data));
GDEBUG("Writing %u bytes:", bytes_to_write);
write_ndef_debug_hexdump(data, size);
if (org_sailfishos_nfc_tag_type2_call_write_data_sync(t2,
0, g_variant_new_from_data(G_VARIANT_TYPE("ay"),
data, bytes_to_write, TRUE, g_free, data), &written,
NULL, &error)) {
0, data_variant, &written, NULL, &error)) {
printf("%u bytes written.\n", written);
ret = RET_OK;
} else {
Expand All @@ -170,8 +172,8 @@ write_ndef_to_type2_tag(
GERRMSG(error));
g_error_free(error);
}
g_variant_unref(data_variant);
}
g_free(data);
} else {
GERR("%s: NDEF is too big (%u > %u)",
g_dbus_proxy_get_object_path(G_DBUS_PROXY(t2)),
Expand Down

0 comments on commit 8265e9c

Please sign in to comment.