From: Guus Sliepen Date: Fri, 4 Oct 2019 14:08:51 +0000 (+0200) Subject: Fix several memory leaks found by AddressSanitizer. X-Git-Url: https://git.meshlink.io/?a=commitdiff_plain;h=6db507deb75ac73c0bae86e830372b532aec834e;p=meshlink Fix several memory leaks found by AddressSanitizer. --- diff --git a/src/meshlink.c b/src/meshlink.c index f0a1b759..8ed94626 100644 --- a/src/meshlink.c +++ b/src/meshlink.c @@ -2743,6 +2743,8 @@ bool meshlink_import(meshlink_handle_t *mesh, const char *data) { pthread_mutex_unlock(&(mesh->mesh_mutex)); + free(buf); + if(!packmsg_done(&in)) { logger(mesh, MESHLINK_ERROR, "Invalid data\n"); meshlink_errno = MESHLINK_EPEER; diff --git a/test/ephemeral.c b/test/ephemeral.c index 10a6e2be..6921b539 100644 --- a/test/ephemeral.c +++ b/test/ephemeral.c @@ -38,8 +38,17 @@ int main() { // Exchange data - assert(meshlink_import(mesh1, meshlink_export(mesh2))); - assert(meshlink_import(mesh2, meshlink_export(mesh1))); + char *export1 = meshlink_export(mesh1); + char *export2 = meshlink_export(mesh2); + + assert(export1); + assert(export2); + + assert(meshlink_import(mesh1, export2)); + assert(meshlink_import(mesh2, export1)); + + free(export1); + free(export2); // Check that they know each other diff --git a/test/trio.c b/test/trio.c index 79013a6f..1dc33aa4 100644 --- a/test/trio.c +++ b/test/trio.c @@ -85,6 +85,7 @@ int main() { // start the nodes for(int i = 0; i < 3; i++) { + free(data[i]); assert(meshlink_start(mesh[i])); } diff --git a/test/trio2.c b/test/trio2.c index d9b3a0f9..299a5582 100644 --- a/test/trio2.c +++ b/test/trio2.c @@ -87,6 +87,7 @@ int main() { // start the nodes for(int i = 0; i < 3; i++) { + free(data[i]); assert(meshlink_start(mesh[i])); }