aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKrzysztof Kozlowski <krzysztof.kozlowski@canonical.com>2021-07-14 12:26:56 +0200
committerKrzysztof Kozlowski <krzysztof.kozlowski@canonical.com>2021-07-19 12:53:25 +0200
commitf61f81353cabb7d6d01230a9bac3a32cff611859 (patch)
treeac2388da189776dc77a321be3652294b8406e91e
parent487089b9cbe557d6c8686ad5dae56b4997f9bd41 (diff)
downloadneard-f61f81353cabb7d6d01230a9bac3a32cff611859.tar.gz
unit: fix memory leaks in test-ndef-parse
test-ndef-parse.c was not freeing fully the ndef records it got. Replace the open-coded freeing with usage of near_ndef_records_free() to solve libasan errors like: Direct leak of 8 byte(s) in 1 object(s) allocated from: #0 0x7f678a64b518 in calloc (/usr/lib/x86_64-linux-gnu/libasan.so.5+0xe9518) #1 0x557597045e89 in parse_sp_payload src/ndef.c:1468 #2 0x557597045e89 in near_ndef_parse_msg src/ndef.c:2921 and valgring errors like: 2 bytes in 1 blocks are definitely lost in loss record 2 of 52 at 0x483C7F3: malloc (in /usr/lib/x86_64-linux-gnu/valgrind/vgpreload_memcheck-amd64-linux.so) by 0x48CA698: g_malloc (in /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0.6600.1) by 0x48E4B3D: g_strndup (in /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0.6600.1) by 0x11C9F6: parse_record_header (ndef.c:1131) by 0x11C9F6: parse_record_header (ndef.c:1038) by 0x11E3D9: near_ndef_parse_msg (ndef.c:2855) by 0x121E6B: test_ndef_uri (test-ndef-parse.c:213) by 0x48ECDCD: ??? (in /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0.6600.1) by 0x48ECBCA: ??? (in /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0.6600.1) by 0x48ED2B9: g_test_run_suite (in /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0.6600.1) by 0x48ED2D4: g_test_run (in /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0.6600.1) by 0x10F61A: main (test-ndef-parse.c:467) Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlowski@canonical.com>
-rw-r--r--unit/test-ndef-parse.c39
1 files changed, 5 insertions, 34 deletions
diff --git a/unit/test-ndef-parse.c b/unit/test-ndef-parse.c
index 24f7d2f..ace0f90 100644
--- a/unit/test-ndef-parse.c
+++ b/unit/test-ndef-parse.c
@@ -189,15 +189,6 @@ static uint8_t ho_hs_bt[] = {0x91, 0x02, 0x0A, 0x48, 0x73, 0x12, 0xD1, 0x02,
0x09, 0x44, 0x65, 0x79, 0x69, 0x63, 0x65, 0x4e,
0x61, 0x6d, 0x65};
-static void test_ndef_free_record(struct near_ndef_record *record)
-{
- g_free(record->header);
- g_free(record->type);
- g_free(record->data);
- g_free(record);
-
-}
-
static void test_ndef_uri(void)
{
GList *records;
@@ -222,9 +213,7 @@ static void test_ndef_uri(void)
if (g_test_verbose())
g_print("NDEF URI field: %s\n", record->uri->field);
- g_free(record->uri->field);
- g_free(record->uri);
- test_ndef_free_record(record);
+ near_ndef_records_free(records);
}
static void test_ndef_text(void)
@@ -255,11 +244,7 @@ static void test_ndef_text(void)
record->text->language_code);
}
- g_free(record->text->data);
- g_free(record->text->encoding);
- g_free(record->text->language_code);
- g_free(record->text);
- test_ndef_free_record(record);
+ near_ndef_records_free(records);
}
static void test_ndef_text_invalid_utf16(void)
@@ -305,10 +290,7 @@ static void test_ndef_single_sp(void)
g_print("NDEF SP URI field: %.*s\n", (int)uri->field_length,
(char *) uri->field);
- g_free(uri->field);
- g_free(uri);
- g_free(record->sp);
- test_ndef_free_record(record);
+ near_ndef_records_free(records);
}
static void test_ndef_title_sp(void)
@@ -359,16 +341,7 @@ static void test_ndef_title_sp(void)
g_print("NDEF SP Title Language: %s\n", text->language_code);
}
- g_free(uri->field);
- g_free(uri);
-
- g_free(text->data);
- g_free(text->encoding);
- g_free(text->language_code);
- g_free(text);
-
- g_free(record->sp);
- test_ndef_free_record(record);
+ near_ndef_records_free(records);
}
static void test_ndef_aar(void)
@@ -395,9 +368,7 @@ static void test_ndef_aar(void)
if (g_test_verbose())
g_print("NDEF AAR package: %s\n", record->aar->package);
- g_free(record->aar->package);
- g_free(record->aar);
- test_ndef_free_record(record);
+ near_ndef_records_free(records);
}
static void test_ndef_ho_hs_bt(void)