summaryrefslogblamecommitdiff
path: root/legacy/busybox/top-buffer-overflow.patch
blob: 14b23c64885518403ad8fab99b0db5e8f5d567e4 (plain) (tree)



















                                                                                                         
--- busybox-1.27.0.orig/procps/top.c
+++ busybox-1.27.0/procps/top.c
@@ -694,10 +694,14 @@
 		CALC_STAT(pcpu, (s->pcpu*pcpu_scale + pcpu_half) >> pcpu_shift);
 #endif
 
-		if (s->vsz >= 100000)
-			sprintf(vsz_str_buf, "%6ldm", s->vsz/1024);
+		if ((s->vsz / (1024 * 1024)) >= 100000)
+			snprintf(vsz_str_buf, sizeof(vsz_str_buf), "%6ldt", s->vsz/(1024 * 1024 * 1024));
+		else if ((s->vsz / 1024) >= 100000)
+			snprintf(vsz_str_buf, sizeof(vsz_str_buf), "%6ldg", s->vsz/(1024 * 1024));
+		else if (s->vsz >= 100000)
+			snprintf(vsz_str_buf, sizeof(vsz_str_buf), "%6ldm", s->vsz/1024);
 		else
-			sprintf(vsz_str_buf, "%7lu", s->vsz);
+			snprintf(vsz_str_buf, sizeof(vsz_str_buf), "%7lu", s->vsz);
 		/* PID PPID USER STAT VSZ %VSZ [%CPU] COMMAND */
 		col = snprintf(line_buf, scr_width,
 				"\n" "%5u%6u %-8.8s %s%s" FMT