Fix: add missing sessiond kernel-consumer missing str*dup oom checks
authorMathieu Desnoyers <mathieu.desnoyers@efficios.com>
Wed, 26 Nov 2014 17:17:26 +0000 (12:17 -0500)
committerJérémie Galarneau <jeremie.galarneau@efficios.com>
Wed, 26 Nov 2014 20:28:18 +0000 (15:28 -0500)
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
src/bin/lttng-sessiond/kernel-consumer.c

index f634cd362a74fd810622d8d49c28397c137b4a27..6cda088d9e5e7600174476d29962adf2bd532189 100644 (file)
@@ -49,6 +49,10 @@ static char *create_channel_path(struct consumer_output *consumer,
                        goto error;
                }
                pathname = strndup(tmp_path, sizeof(tmp_path));
+               if (!pathname) {
+                       PERROR("strndup");
+                       goto error;
+               }
 
                /* Create directory */
                ret = run_as_mkdir_recursive(pathname, S_IRWXU | S_IRWXG, uid, gid);
@@ -66,6 +70,10 @@ static char *create_channel_path(struct consumer_output *consumer,
                        goto error;
                }
                pathname = strndup(tmp_path, sizeof(tmp_path));
+               if (!pathname) {
+                       PERROR("strndup");
+                       goto error;
+               }
                DBG3("Kernel network consumer subdir path: %s", pathname);
        }
 
@@ -100,14 +108,14 @@ int kernel_consumer_add_channel(struct consumer_socket *sock,
 
        if (monitor) {
                pathname = create_channel_path(consumer, session->uid, session->gid);
-               if (!pathname) {
-                       ret = -1;
-                       goto error;
-               }
        } else {
                /* Empty path. */
                pathname = strdup("");
        }
+       if (!pathname) {
+               ret = -1;
+               goto error;
+       }
 
        /* Prep channel message structure */
        consumer_init_channel_comm_msg(&lkm,
@@ -164,14 +172,14 @@ int kernel_consumer_add_metadata(struct consumer_socket *sock,
 
        if (monitor) {
                pathname = create_channel_path(consumer, session->uid, session->gid);
-               if (!pathname) {
-                       ret = -1;
-                       goto error;
-               }
        } else {
                /* Empty path. */
                pathname = strdup("");
        }
+       if (!pathname) {
+               ret = -1;
+               goto error;
+       }
 
        /* Prep channel message structure */
        consumer_init_channel_comm_msg(&lkm,
This page took 0.026969 seconds and 4 git commands to generate.