From e691cbaef411552ed3500f3541e584a26a46c717 Mon Sep 17 00:00:00 2001
From: Jim Warner <james.warner@comcast.net>
Date: Sat, 2 Jun 2018 00:00:00 -0500
Subject: [PATCH] top: other graph_cpus, graph_mems, and summ_mscale fix

This patch replaces an original patch referenced below
(omitted under this branch). We now validate variables
'graph_cpus', 'graph_mems' and 'summ_mscale' just once
at startup. Thereafter, top enforces the proper range.

[ we afford the same treatment to that 'task_mscale' ]
[ variable, which was ignored in the original patch. ]

Reference(s):
. original qualys patch
0099-top-Check-graph_cpus-graph_mems-and-summ_mscale.patch

Signed-off-by: Jim Warner <james.warner@comcast.net>
---
 top/top.c | 11 ++++++++++-
 1 file changed, 10 insertions(+), 1 deletion(-)

diff --git a/top/top.c b/top/top.c
index 004d2428..d51d5aa5 100644
--- a/top/top.c
+++ b/top/top.c
@@ -3260,6 +3260,11 @@ error Hey, fix the above fscanf 'PFLAGSSIZ' dependency !
       if (3 > fscanf(fp, "\twinflags=%d, sortindx=%d, maxtasks=%d, graph_cpus=%d, graph_mems=%d\n"
          , &w->rc.winflags, &w->rc.sortindx, &w->rc.maxtasks, &w->rc.graph_cpus, &w->rc.graph_mems))
             return p;
+      if (w->rc.graph_cpus < 0 || w->rc.graph_cpus > 2)
+         return p;
+      if (w->rc.graph_mems < 0 || w->rc.graph_mems > 2)
+         return p;
+
       if (4 != fscanf(fp, "\tsummclr=%d, msgsclr=%d, headclr=%d, taskclr=%d\n"
          , &w->rc.summclr, &w->rc.msgsclr
          , &w->rc.headclr, &w->rc.taskclr))
@@ -3299,6 +3304,10 @@ error Hey, fix the above fscanf 'PFLAGSSIZ' dependency !
          ;                                  // avoid -Wunused-result
    if (Rc.fixed_widest < -1 || Rc.fixed_widest > SCREENMAX)
       Rc.fixed_widest = 0;
+   if (Rc.summ_mscale < 0   || Rc.summ_mscale > SK_Eb)
+      Rc.summ_mscale = 0;
+   if (Rc.task_mscale < 0   || Rc.task_mscale > SK_Pb)
+      Rc.task_mscale = 0;
 
    // we'll start off Inspect stuff with 1 'potential' blank line
    // ( only realized if we end up with Inspect.total > 0 )
@@ -5127,7 +5136,7 @@ numa_nope:
       }
 
       if (w->rc.graph_mems) {
-         static struct {
+         static const struct {
             const char *used, *misc, *swap, *type;
          } gtab[] = {
             { "%-.*s~7", "%-.*s~8", "%-.*s~8", Graph_bars },