From be69ad435d6ef810dad446f380df16c63bcbdc88 Mon Sep 17 00:00:00 2001 From: Tycho Andersen Date: Thu, 2 Feb 2017 09:36:31 +0100 Subject: [PATCH] util: always malloc for setproctitle Closes #1407 Signed-off-by: Tycho Andersen --- src/lxc/utils.c | 22 ++++++---------------- 1 file changed, 6 insertions(+), 16 deletions(-) diff --git a/src/lxc/utils.c b/src/lxc/utils.c index 0227c3267..24000aafd 100644 --- a/src/lxc/utils.c +++ b/src/lxc/utils.c @@ -1463,34 +1463,24 @@ int setproctitle(char *title) if (!tmp) return -1; - i = sscanf(tmp, "%lu %lu %lu %lu %lu %lu %lu", + i = sscanf(tmp, "%lu %lu %lu %*u %*u %lu %lu", &start_data, &end_data, &start_brk, - &arg_start, - &arg_end, &env_start, &env_end); - if (i != 7) + if (i != 5) return -1; /* Include the null byte here, because in the calculations below we * want to have room for it. */ len = strlen(title) + 1; - /* If we don't have enough room by just overwriting the old proctitle, - * let's allocate a new one. - */ - if (len > arg_end - arg_start) { - void *m; - m = realloc(proctitle, len); - if (!m) - return -1; - proctitle = m; - - arg_start = (unsigned long) proctitle; - } + proctitle = realloc(proctitle, len); + if (!proctitle) + return -1; + arg_start = (unsigned long) proctitle; arg_end = arg_start + len; brk_val = syscall(__NR_brk, 0);