From d556d57d3f30fd2b3b6ba19d9928b6e0d66be4ba Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Florian=20M=C3=A4rkl?= Date: Tue, 28 Dec 2021 10:51:54 +0100 Subject: [PATCH] [RzIL] Fix minor leaks --- librz/il/definitions/mem.c | 4 ++-- test/unit/test_il_definitions.c | 8 +++++++- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/librz/il/definitions/mem.c b/librz/il/definitions/mem.c index 569a2cf847..2865d75380 100644 --- a/librz/il/definitions/mem.c +++ b/librz/il/definitions/mem.c @@ -120,9 +120,9 @@ static RzBitVector *read_n_bits(RzBuffer *buf, ut32 n_bits, RzBitVector *key, bo // we ignore bad reads. RzBuffer fills up with its "overflow byte" on failure. rz_buf_read_at(buf, address, data, n_bytes); if (big_endian) { - value = rz_bv_new_from_bytes_be(data, 0, n_bits); + rz_bv_set_from_bytes_be(value, data, 0, n_bits); } else { - value = rz_bv_new_from_bytes_le(data, 0, n_bits); + rz_bv_set_from_bytes_le(value, data, 0, n_bits); } free(data); return value; diff --git a/test/unit/test_il_definitions.c b/test/unit/test_il_definitions.c index efcf1d8cdc..c092053d75 100644 --- a/test/unit/test_il_definitions.c +++ b/test/unit/test_il_definitions.c @@ -91,6 +91,7 @@ static bool test_rzil_mem_load() { RzBuffer *buf = rz_buf_new_with_pointers(data, sizeof(data), false); rz_buf_set_overflow_byte(buf, 0xaa); RzILMem *mem = rz_il_mem_new(buf, 16); + rz_buf_free(buf); // buf is refcounted mu_assert_notnull(mem, "Create mem"); // valid read @@ -125,6 +126,7 @@ static bool test_rzil_mem_store() { ut8 data[] = { 0x0, 0x0, 0x0, 0x0, 0x0, 0x42, 0x0, 0x0 }; RzBuffer *buf = rz_buf_new_with_pointers(data, sizeof(data), false); RzILMem *mem = rz_il_mem_new(buf, 16); + rz_buf_free(buf); // buf is refcounted mu_assert_notnull(mem, "Create mem"); RzBitVector *addr = rz_bv_new_from_ut64(16, 1); @@ -163,6 +165,7 @@ static bool test_rzil_mem_loadw() { RzBuffer *buf = rz_buf_new_with_pointers(data, sizeof(data), false); rz_buf_set_overflow_byte(buf, 0xaa); RzILMem *mem = rz_il_mem_new(buf, 16); + rz_buf_free(buf); // buf is refcounted mu_assert_notnull(mem, "Create mem"); // valid read (le) @@ -179,12 +182,14 @@ static bool test_rzil_mem_loadw() { mu_assert_eq(rz_bv_len(val), 16, "loadw size"); mu_assert_eq(rz_bv_to_ut64(val), 0x1337, "loadw val"); rz_bv_free(val); + rz_bv_free(addr); // invalid key size - rz_bv_free(addr); addr = rz_bv_new_from_ut64(8, 1); val = rz_il_mem_loadw(mem, addr, 16, false); + rz_bv_free(addr); mu_assert_null(val, "invalid key size"); + rz_bv_free(val); // valid read (overflow) addr = rz_bv_new_from_ut64(16, 100); @@ -203,6 +208,7 @@ static bool test_rzil_mem_storew() { ut8 data[] = { 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0 }; RzBuffer *buf = rz_buf_new_with_pointers(data, sizeof(data), false); RzILMem *mem = rz_il_mem_new(buf, 32); + rz_buf_free(buf); // buf is refcounted mu_assert_notnull(mem, "Create mem"); // valid write (le)