Re: [PATCH] beep: fix division by zero when -f 0 is passed
tito via busybox <[email protected]> Tue, 26 May 2026 14:01:25 +0200
| Newsgroups | gmane.linux.busybox |
|---|---|
| Message-ID | <20260526140125.1659fc67@devuan> |
On Tue, 26 May 2026 11:14:48 +0300 Anton Moryakov via busybox <[email protected]> wrote: > Static analysis reported potential division by zero at: > tickrate_div_freq = CLOCK_TICK_RATE / xatou(optarg); > > If user passes \"-f 0\", xatou() returns 0, causing undefined behavior. > > Fix: validate frequency range (20-50000 Hz) to match CONFIG limits. > Reject values outside range with clear error message. > > Also removes the old TODO comment about handling -f 0. > > Signed-off-by: Anton Moryakov <[email protected]> > --- > miscutils/beep.c | 9 +++++++-- > 1 file changed, 7 insertions(+), 2 deletions(-) > > diff --git a/miscutils/beep.c b/miscutils/beep.c > index 724a666c8..1d713a004 100644 > --- a/miscutils/beep.c > +++ b/miscutils/beep.c > @@ -86,8 +86,13 @@ int beep_main(int argc, char **argv) > */ > switch (c) { > case 'f': > -/* TODO: what "-f 0" should do? */ > - tickrate_div_freq = (unsigned)CLOCK_TICK_RATE / xatou(optarg); > +/* Frequency 0 is invalid, rejected above */ > + { > + unsigned freq = xatou(optarg); > + if (freq < 20 || freq > 50000) > + bb_error_msg_and_die("frequency must be 20-50000 Hz"); Hi, use xatou_range here: xatou_range(optarg, 20, 50000); > + tickrate_div_freq = CLOCK_TICK_RATE / freq; > + } > continue; > case 'l': > length = xatou(optarg); Ciao, Tito