summaryrefslogtreecommitdiff
path: root/system/busybox/top-buffer-overflow.patch
diff options
context:
space:
mode:
Diffstat (limited to 'system/busybox/top-buffer-overflow.patch')
-rw-r--r--system/busybox/top-buffer-overflow.patch20
1 files changed, 20 insertions, 0 deletions
diff --git a/system/busybox/top-buffer-overflow.patch b/system/busybox/top-buffer-overflow.patch
new file mode 100644
index 000000000..14b23c648
--- /dev/null
+++ b/system/busybox/top-buffer-overflow.patch
@@ -0,0 +1,20 @@
+--- 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