From a8c071c5efc82d8ba96527ff3513c530f0f00843 Mon Sep 17 00:00:00 2001 From: Joachim Nilsson Date: Mon, 6 Jan 2020 22:03:01 +0100 Subject: [PATCH] Fix memory leak, call strdup() as late as possible, found by Coverity Signed-off-by: Joachim Nilsson --- src/tty.c | 12 +++--------- 1 file changed, 3 insertions(+), 9 deletions(-) diff --git a/src/tty.c b/src/tty.c index daf8512a..6ceba51a 100644 --- a/src/tty.c +++ b/src/tty.c @@ -168,7 +168,7 @@ int tty_register(char *line, struct rlimit rlimit[], char *file) if (!strncmp(args[i], "tty", 3)) dev = args[i]; if (!access(args[i], X_OK)) - cmd = strdup(args[i]); + cmd = args[i]; /* The first arg must be one of the above */ continue; @@ -193,9 +193,6 @@ int tty_register(char *line, struct rlimit rlimit[], char *file) if (!dev) { error: _e("Incomplete or non-existing TTY device given, cannot register."); - if (cmd) - free(cmd); - return errno = EINVAL; } @@ -225,11 +222,8 @@ again: entry = tty_find(dev); if (!entry) { entry = calloc(1, sizeof(*entry)); - if (!entry) { - if (cmd) - free(cmd); + if (!entry) return errno = ENOMEM; - } insert = 1; } else { if (entry->cmd) { @@ -261,7 +255,7 @@ again: tok = cmd; else tok++; - entry->cmd = cmd; + entry->cmd = strdup(cmd); args[1] = strdup(tok); for (i = 1; i < num; i++) {