ps: fix SEGV on narrow screens. closes 8176
authorDenys Vlasenko <vda.linux@googlemail.com>
Wed, 1 Jul 2015 17:07:24 +0000 (19:07 +0200)
committerDenys Vlasenko <vda.linux@googlemail.com>
Wed, 1 Jul 2015 17:07:24 +0000 (19:07 +0200)
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
procps/ps.c

index c65fa012a2f2c0f5721d221c89f011ad8b39d928..bde5f94853e99554a8d04f7d35b735cbf3fde968 100644 (file)
@@ -654,8 +654,8 @@ int ps_main(int argc UNUSED_PARAM, char **argv UNUSED_PARAM)
                OPT_l = (1 << ENABLE_SELINUX) * (1 << ENABLE_FEATURE_SHOW_THREADS) * ENABLE_FEATURE_PS_LONG,
        };
 #if ENABLE_FEATURE_PS_LONG
-       time_t now = now;
-       unsigned long uptime;
+       time_t now = now; /* for compiler */
+       unsigned long uptime = uptime;
 #endif
        /* If we support any options, parse argv */
 #if ENABLE_SELINUX || ENABLE_FEATURE_SHOW_THREADS || ENABLE_FEATURE_PS_WIDE || ENABLE_FEATURE_PS_LONG
@@ -786,9 +786,11 @@ int ps_main(int argc UNUSED_PARAM, char **argv UNUSED_PARAM)
 
                {
                        int sz = terminal_width - len;
-                       char buf[sz + 1];
-                       read_cmdline(buf, sz, p->pid, p->comm);
-                       puts(buf);
+                       if (sz >= 0) {
+                               char buf[sz + 1];
+                               read_cmdline(buf, sz, p->pid, p->comm);
+                               puts(buf);
+                       }
                }
        }
        if (ENABLE_FEATURE_CLEAN_UP)