Fix: zero out URL parsing array before use and ensure proper error reporting
authorFrancis Deslauriers <francis.deslauriers@efficios.com>
Fri, 4 May 2018 16:07:34 +0000 (12:07 -0400)
committerJérémie Galarneau <jeremie.galarneau@efficios.com>
Fri, 8 Jun 2018 15:30:17 +0000 (11:30 -0400)
The remain[2] array is being used uninitialized when such URI is used:
`net://localhost:1234`.
The following line (142) will return 1:
  `ret = sscanf(remain[0], ":%d%s", &ctx->port, remain[1]);`
because `sscanf` won't match on the string (%s) delimiter.
This will leave `remain[2]` uninitialized.

This potentially uninitialized array is being used further down the function.

As a fix, we zero out the array at initialization time to prevent the
`strlen(remain[2])` call from using uninitialized memory.

Signed-off-by: Francis Deslauriers <francis.deslauriers@efficios.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
formats/lttng-live/lttng-live-plugin.c

index 4aedd22e93420925ddb3fe48591a59b4bcbe632a..8c4b30765fa0767dfd95a07078456bd0f77f8861 100644 (file)
@@ -103,7 +103,7 @@ int setup_sighandler(void)
 static
 int parse_url(const char *path, struct lttng_live_ctx *ctx)
 {
-       char remain[3][MAXNAMLEN];
+       char remain[3][MAXNAMLEN] = { 0 };
        int ret = -1, proto, proto_offset = 0;
        size_t path_len = strlen(path); /* not accounting \0 */
 
@@ -185,6 +185,7 @@ int parse_url(const char *path, struct lttng_live_ctx *ctx)
        if (ret != 2) {
                fprintf(stderr, "[error] Format : "
                        "net://<hostname>/host/<traced_hostname>/<session_name>\n");
+               ret = -1;
                goto end;
        }
 
This page took 0.024579 seconds and 4 git commands to generate.