bin/39200: external program "top" overruns allocated memory for multiple cpus

View: New views
1 Messages — Rating Filter:   Alert me  

Parent Message unknown bin/39200: external program "top" overruns allocated memory for multiple cpus

by gcw :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

>Number:         39200
>Category:       bin
>Synopsis:       top fails on multiple cpus
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    bin-bug-people
>State:          open
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Thu Jul 24 03:40:00 +0000 2008
>Originator:     Geoff C. Wing
>Release:        NetBSD 4.99.70
>Organization:
>Environment:
System: NetBSD g.primenet.com.au 4.99.70 NetBSD 4.99.70 (G) #0: Mon Jul 21 13:08:27 EST 2008 gcw@...:/usr/netbsd/src/sys/arch/i386/compile/G i386
Architecture: i386
Machine: i386
>Description:
        top fails to reset an index on multiple cpu machines which
        causes it to access memory past its allocated space.

>How-To-Repeat:
        run with malloc checking
>Fix:
       
--- external/bsd/top/dist/display.c 2008-07-24 13:29:00.000000000 +1000
+++ external/bsd/top/dist/display.c.org 2008-07-16 10:36:15.000000000 +1000
@@ -1181,7 +1181,7 @@
     int *colp;
     int color = 0;
 #ifdef ENABLE_COLOR
-    int *cidx;
+    int *cidx = cpustate_cidx;
 #endif
     int c, i;
 
@@ -1196,9 +1196,6 @@
 
     for (c = 0; c < (multi ? ncpu : 1); c++)
     {
-#ifdef ENABLE_COLOR
-     cidx = cpustate_cidx;
-#endif
 
  /* print tag */
  display_write(0, y_cpustates + c, 0, 0, cpustates_tag(c));
@@ -1247,7 +1244,7 @@
     int *colp;
     int color = 0;
 #ifdef ENABLE_COLOR
-    int *cidx;
+    int *cidx = cpustate_cidx;
 #endif
     int c, i;
 
@@ -1264,9 +1261,6 @@
 
     for (c = 0; c < (multi ? ncpu : 1); c++)
     {
-#ifdef ENABLE_COLOR
-     cidx = cpustate_cidx;
-#endif
  colp = cpustate_columns;
  /* we could be much more optimal about this */
  for (names = cpustate_names; (thisname = *names++) != NULL;)

LightInTheBox - Buy quality products at wholesale price