test_serial: Clean up after test case
Free all allocated memory to avoid false-positives from leak sanitizers.
Resolves:
==15807==ERROR: LeakSanitizer: detected memory leaks
Indirect leak of 4096 byte(s) in 1 object(s) allocated from:
#0 0x7fb35b934f1e in __interceptor_realloc (/usr/lib/x86_64-linux-gnu/libasan.so.5+0x10df1e)
#1 0x7fb35b7f3065 in __mctp_realloc /home/andrew/src/openbmc/libmctp/alloc.c:48
#2 0x7fb35b7ed979 in mctp_msg_ctx_add_pkt /home/andrew/src/openbmc/libmctp/core.c:213
#3 0x7fb35b7f0a09 in mctp_bus_rx /home/andrew/src/openbmc/libmctp/core.c:383
#4 0x7fb35b7f467d in mctp_serial_finish_packet /home/andrew/src/openbmc/libmctp/serial.c:169
#5 0x7fb35b7f6071 in mctp_rx_consume_one /home/andrew/src/openbmc/libmctp/serial.c:254
#6 0x7fb35b7f6409 in mctp_rx_consume /home/andrew/src/openbmc/libmctp/serial.c:271
#7 0x7fb35b7f668a in mctp_serial_read /home/andrew/src/openbmc/libmctp/serial.c:288
#8 0x559680986cc7 in main tests/test_serial.c:113
#9 0x7fb35ac9e1e2 in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x271e2)
Indirect leak of 1384 byte(s) in 1 object(s) allocated from:
#0 0x7fb35b934ae8 in malloc (/usr/lib/x86_64-linux-gnu/libasan.so.5+0x10dae8)
#1 0x7fb35b7f2cf0 in __mctp_alloc /home/andrew/src/openbmc/libmctp/alloc.c:28
#2 0x7fb35b7f6cad in mctp_serial_init /home/andrew/src/openbmc/libmctp/serial.c:343
#3 0x559680986553 in main tests/test_serial.c:99
#4 0x7fb35ac9e1e2 in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x271e2)
Indirect leak of 552 byte(s) in 1 object(s) allocated from:
#0 0x7fb35b934ae8 in malloc (/usr/lib/x86_64-linux-gnu/libasan.so.5+0x10dae8)
#1 0x7fb35b7f2cf0 in __mctp_alloc /home/andrew/src/openbmc/libmctp/alloc.c:28
#2 0x7fb35b7ededc in mctp_init /home/andrew/src/openbmc/libmctp/core.c:234
#3 0x559680986485 in main tests/test_serial.c:96
#4 0x7fb35ac9e1e2 in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x271e2)
Indirect leak of 40 byte(s) in 1 object(s) allocated from:
#0 0x7fb35b934ae8 in malloc (/usr/lib/x86_64-linux-gnu/libasan.so.5+0x10dae8)
#1 0x7fb35b7f2cf0 in __mctp_alloc /home/andrew/src/openbmc/libmctp/alloc.c:28
#2 0x7fb35b7ee55f in mctp_register_bus /home/andrew/src/openbmc/libmctp/core.c:277
#3 0x559680986b64 in main tests/test_serial.c:105
#4 0x7fb35ac9e1e2 in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x271e2)
Signed-off-by: Andrew Jeffery <andrew@aj.id.au>
Change-Id: I9f95104545cc6f633ee134fffc90cb0ea2c46eeb
diff --git a/tests/test_serial.c b/tests/test_serial.c
index a7c3752..eef66d0 100644
--- a/tests/test_serial.c
+++ b/tests/test_serial.c
@@ -65,8 +65,8 @@
{
struct serial_test scenario[2];
- struct mctp_binding_serial_pipe *a = &scenario[0].binding;
- struct mctp_binding_serial_pipe *b = &scenario[1].binding;
+ struct mctp_binding_serial_pipe *a;
+ struct mctp_binding_serial_pipe *b;
int p[2][2];
int rc;
@@ -84,8 +84,9 @@
/* Instantiate the A side of the serial pipe */
scenario[0].mctp = mctp_init();
assert(scenario[0].mctp);
- a->serial = mctp_serial_init();
- assert(a->serial);
+ scenario[0].binding.serial = mctp_serial_init();
+ assert(scenario[0].binding.serial);
+ a = &scenario[0].binding;
a->ingress = p[0][0];
a->egress = p[1][1];
mctp_serial_open_fd(a->serial, a->ingress);
@@ -96,8 +97,9 @@
scenario[1].mctp = mctp_init();
assert(scenario[1].mctp);
mctp_set_rx_all(scenario[1].mctp, rx_message, NULL);
- b->serial = mctp_serial_init();
- assert(b->serial);
+ scenario[1].binding.serial = mctp_serial_init();
+ assert(scenario[1].binding.serial);
+ b = &scenario[1].binding;
b->ingress = p[1][0];
b->egress = p[0][1];
mctp_serial_open_fd(b->serial, b->ingress);
@@ -113,5 +115,10 @@
mctp_serial_read(b->serial);
assert(seen);
+ mctp_serial_destroy(scenario[1].binding.serial);
+ mctp_destroy(scenario[1].mctp);
+ mctp_serial_destroy(scenario[0].binding.serial);
+ mctp_destroy(scenario[0].mctp);
+
return 0;
}