[prev in list] [next in list] [prev in thread] [next in thread]
List: busybox
Subject: Re: [PATCH] top: do not overflow the scratch buffer when displaying processes with very large VSZ
From: William Pitcock <nenolod () dereferenced ! org>
Date: 2018-03-07 4:39:25
Message-ID: CA+T2pCEhDePh6QNX=QJrM7HE_OU6Ufh226+=gnfUNx32J1KpmA () mail ! gmail ! com
[Download RAW message or body]
Hi,
On Tue, Mar 6, 2018 at 8:57 PM, Denys Vlasenko <vda.linux@googlemail.com> wrote:
> > --- a/procps/top.c
> > +++ b/procps/top.c
> > @@ -694,10 +694,14 @@ static NOINLINE void display_process_list(int lines_rem, \
> > int scr_width) 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
>
> I propose this instead:
>
>
> - if (s->vsz >= 100000)
> - sprintf(vsz_str_buf, "%6ldm", s->vsz/1024);
> - else
> - sprintf(vsz_str_buf, "%7lu", s->vsz);
> + smart_ulltoa5(s->vsz, vsz_str_buf, " mgtpezy");
> /* PID PPID USER STAT VSZ %VSZ [%CPU] COMMAND */
> col = snprintf(line_buf, scr_width,
> - "\n" "%5u%6u %-8.8s %s%s" FMT
> + "\n" "%5u%6u %-8.8s %s %.5s" FMT
> IF_FEATURE_TOP_SMP_PROCESS(" %3d")
> IF_FEATURE_TOP_CPU_USAGE_PERCENTAGE(FMT)
> " ",
Sounds good to me. I wasn't aware of smart_ulltoa5().
William
_______________________________________________
busybox mailing list
busybox@busybox.net
http://lists.busybox.net/mailman/listinfo/busybox
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic