All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH lttng-tools] Fix: Memory leak on error paths of relay_add_stream
@ 2013-02-28 20:48 Christian Babeux
  0 siblings, 0 replies; 8+ messages in thread
From: Christian Babeux @ 2013-02-28 20:48 UTC (permalink / raw)
  To: dgoulet; +Cc: lttng-dev

On error paths the memory allocated for stream is never freed.

Also, fix undefined behavior on asprintf alloc failure. According to
asprintf(3), the content of the pointer passed to it is undefined if
an alloc failure occurs, so we could end up freeing a pointer in an
undefined state. Force its value to NULL.

Signed-off-by: Christian Babeux <christian.babeux@efficios.com>
---
 src/bin/lttng-relayd/main.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/bin/lttng-relayd/main.c b/src/bin/lttng-relayd/main.c
index 4f9d742..00b7ea3 100644
--- a/src/bin/lttng-relayd/main.c
+++ b/src/bin/lttng-relayd/main.c
@@ -941,6 +941,7 @@ int relay_add_stream(struct lttcomm_relayd_hdr *recv_hdr,
 	ret = asprintf(&path, "%s/%s", root_path, stream_info.channel_name);
 	if (ret < 0) {
 		PERROR("asprintf stream path");
+		path = NULL;
 		goto end;
 	}
 
@@ -963,13 +964,17 @@ int relay_add_stream(struct lttcomm_relayd_hdr *recv_hdr,
 end:
 	free(path);
 	free(root_path);
+
+	reply.handle = htobe64(stream->stream_handle);
 	/* send the session id to the client or a negative return code on error */
 	if (ret < 0) {
 		reply.ret_code = htobe32(LTTNG_ERR_UNK);
+		/* stream was not properly added to the ht, so free it */
+		free(stream);
 	} else {
 		reply.ret_code = htobe32(LTTNG_OK);
 	}
-	reply.handle = htobe64(stream->stream_handle);
+
 	send_ret = cmd->sock->ops->sendmsg(cmd->sock, &reply,
 			sizeof(struct lttcomm_relayd_status_stream), 0);
 	if (send_ret < 0) {
-- 
1.8.1.3

^ permalink raw reply related	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2013-03-21 17:32 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
     [not found] <1362084510-10072-1-git-send-email-christian.babeux@efficios.com>
2013-02-28 20:48 ` [PATCH lttng-tools] Fix: Memory leaks on error paths in config_read_session_name Christian Babeux
2013-02-28 20:48 ` [PATCH lttng-tools] Fix: Memory leaks on error paths when exporting consumerd libdir in env Christian Babeux
2013-02-28 20:48 ` [PATCH lttng-tools] Fix: Memory leaks on unknown hashtable type error handling Christian Babeux
2013-02-28 20:48 ` [PATCH lttng-tools] Fix: Memory leaks when calling get_cmdline_by_pid Christian Babeux
2013-02-28 20:48 ` [PATCH lttng-tools] Fix: Memory leak when zmalloc fail on kernel channel allocation Christian Babeux
2013-02-28 20:48 ` [PATCH lttng-tools] Fix: Use after free on spawn_sessiond error path in check_sessiond Christian Babeux
2013-03-21 17:32 ` [PATCH lttng-tools] Fix: Memory leak on error paths of relay_add_stream David Goulet
2013-02-28 20:48 Christian Babeux

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.