]> git.ipfire.org Git - thirdparty/lxc.git/commitdiff
util: always malloc for setproctitle 1408/head
authorTycho Andersen <tycho.andersen@canonical.com>
Thu, 2 Feb 2017 08:36:31 +0000 (09:36 +0100)
committerTycho Andersen <tycho.andersen@canonical.com>
Thu, 2 Feb 2017 08:42:22 +0000 (08:42 +0000)
Closes #1407

Signed-off-by: Tycho Andersen <tycho.andersen@canonical.com>
src/lxc/utils.c

index 0227c3267554c704dfd598596143781bea487866..24000aafd92367568e4b44f73b0366a26945e6cc 100644 (file)
@@ -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);