[ovs-dev] [PATCHv3 2/3] test-ovsdb: Fix memory leak

Yifeng Sun pkusunyifeng at gmail.com
Tue Oct 31 17:52:09 UTC 2017

Valgrind testcase 1465 (integer atom enum from string) reports the leak below:
16 bytes in 1 blocks are definitely lost in loss record 2 of 5
    at 0x4C2DB8F: malloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
    by 0x43F5F4: xmalloc (util.c:120)
    by 0x424AC6: alloc_default_atoms (ovsdb-data.c:315)
    by 0x4271E0: ovsdb_atom_from_string__ (ovsdb-data.c:508)
    by 0x4271E0: ovsdb_atom_from_string (ovsdb-data.c:632)
    by 0x40ADCC: do_parse_atom_strings (test-ovsdb.c:566)
    by 0x41BA73: ovs_cmdl_run_command__ (command-line.c:115)
    by 0x4051C9: main (test-ovsdb.c:72)

range_end_atom is allocated in ovsdb_atom_from_string__() and no one is holding a reference to it at the end of do_parse_atom_strings(). It should be freed here, as also pointed out by ovsdb_atom_destroy().

v1->v2: Amend comments.
v2->v3: Fix error in patch.

Signed-off-by: Yifeng Sun <pkusunyifeng at gmail.com>
 tests/test-ovsdb.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/tests/test-ovsdb.c b/tests/test-ovsdb.c
index 451172cdcc34..b5147fc055e3 100644
--- a/tests/test-ovsdb.c
+++ b/tests/test-ovsdb.c
@@ -582,6 +582,7 @@ do_parse_atom_strings(struct ovs_cmdl_context *ctx)
         ovsdb_atom_destroy(&atom, base.type);
         if (range_end_atom) {
             ovsdb_atom_destroy(range_end_atom, base.type);
+	    free(range_end_atom);

More information about the dev mailing list