live_viewer_connection_create(): fix leak on connection error
authorPhilippe Proulx <eeppeliteloop@gmail.com>
Fri, 16 Aug 2019 00:21:33 +0000 (20:21 -0400)
committerPhilippe Proulx <eeppeliteloop@gmail.com>
Fri, 16 Aug 2019 16:35:04 +0000 (12:35 -0400)
g_free() is not enough here: the `url` member is not freed on error.
Just destroy the whole connection object cleanly.

Signed-off-by: Philippe Proulx <eeppeliteloop@gmail.com>
Change-Id: I98184be066a9155e08d792d55fc4b8489a15bb30
Reviewed-on: https://review.lttng.org/c/babeltrace/+/1946
Tested-by: jenkins <jenkins@lttng.org>
src/plugins/ctf/lttng-live/viewer-connection.c

index bc03be54de33b7ed8daf10289a2adaa12834b492..6b206d3427077a976e5765985ed213d0c4383462 100644 (file)
@@ -1500,7 +1500,10 @@ struct live_viewer_connection *live_viewer_connection_create(
 error_report:
        BT_COMP_LOGW("Failure to establish connection to url \"%s\"", url);
 error:
-       g_free(viewer_connection);
+       if (viewer_connection) {
+               live_viewer_connection_destroy(viewer_connection);
+       }
+
        return NULL;
 }
 
@@ -1510,7 +1513,9 @@ void live_viewer_connection_destroy(
 {
        BT_COMP_LOGI("Closing connection to url \"%s\"", viewer_connection->url->str);
        lttng_live_disconnect_viewer(viewer_connection);
-       g_string_free(viewer_connection->url, true);
+       if (viewer_connection->url) {
+               g_string_free(viewer_connection->url, true);
+       }
        if (viewer_connection->relay_hostname) {
                g_string_free(viewer_connection->relay_hostname, true);
        }
This page took 0.025777 seconds and 4 git commands to generate.