Module Name:    src
Committed By:   martin
Date:           Sat Jun  9 15:40:05 UTC 2018

Modified Files:
        src/external/bsd/top/dist/machine [netbsd-8]: m_netbsd.c

Log Message:
Pull up following revision(s) (requested by kamil in ticket #872):

        external/bsd/top/dist/machine/m_netbsd.c: revision 1.20

Fix read of unitialized array elements in top(1)

The cp_old array is allocated with malloc(3) and its pointer is passed to=
percentages64().

In this function there happens a calculation of total_change, which value=
depends on the value inside the unitialized cp_old[] array.

WARNING: MemorySanitizer: use-of-uninitialized-value
/usr/src/external/bsd/top/bin/../dist/machine/m_netbsd.c:1341:6
/usr/src/external/bsd/top/bin/../dist/machine/m_netbsd.c:478:65
SUMMARY: MemorySanitizer: use-of-uninitialized-value
/usr/src/external/bsd/top/bin/../dist/machine/m_netbsd.c:1341:6 in percentages64
Exiting

Fix this issue by changling malloc(3) with calloc(3).

Detected with Memory Sanitizer during the integration of sanitizers with
the NetBSD basesystem.

Reported by <Yang Zheng>


To generate a diff of this commit:
cvs rdiff -u -r1.19 -r1.19.6.1 src/external/bsd/top/dist/machine/m_netbsd.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/external/bsd/top/dist/machine/m_netbsd.c
diff -u src/external/bsd/top/dist/machine/m_netbsd.c:1.19 src/external/bsd/top/dist/machine/m_netbsd.c:1.19.6.1
--- src/external/bsd/top/dist/machine/m_netbsd.c:1.19	Mon Dec 26 12:46:31 2016
+++ src/external/bsd/top/dist/machine/m_netbsd.c	Sat Jun  9 15:40:05 2018
@@ -1,4 +1,4 @@
-/*	$NetBSD: m_netbsd.c,v 1.19 2016/12/26 12:46:31 leot Exp $	*/
+/*	$NetBSD: m_netbsd.c,v 1.19.6.1 2018/06/09 15:40:05 martin Exp $	*/
 
 /*
  * top - a top users display for Unix
@@ -37,12 +37,12 @@
  *		Andrew Doran <a...@netbsd.org>
  *
  *
- * $Id: m_netbsd.c,v 1.19 2016/12/26 12:46:31 leot Exp $
+ * $Id: m_netbsd.c,v 1.19.6.1 2018/06/09 15:40:05 martin Exp $
  */
 #include <sys/cdefs.h>
 
 #ifndef lint
-__RCSID("$NetBSD: m_netbsd.c,v 1.19 2016/12/26 12:46:31 leot Exp $");
+__RCSID("$NetBSD: m_netbsd.c,v 1.19.6.1 2018/06/09 15:40:05 martin Exp $");
 #endif
 
 #include <sys/param.h>
@@ -335,7 +335,7 @@ machine_init(statics)
 		ncpu = 1;
 
 	cpu_states = malloc(sizeof(cpu_states[0]) * CPUSTATES * ncpu);
-	cp_old = malloc(sizeof(cp_old[0]) * CPUSTATES * ncpu);
+	cp_old = calloc(CPUSTATES * ncpu, sizeof(cp_old[0]));
 	cp_diff = malloc(sizeof(cp_diff[0]) * CPUSTATES * ncpu);
 	if (cpu_states == NULL || cp_time == NULL || cp_old == NULL ||
 	    cp_diff == NULL) {

Reply via email to