RE: [PATCH] lib: string_helpers: fix potential snprintf() output truncation

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



From: Bartosz Golaszewski
> Sent: 22 October 2024 08:30
> 
> On Tue, Oct 22, 2024 at 9:15 AM Jiri Slaby <jirislaby@xxxxxxxxxx> wrote:
> >
> > On 21. 10. 24, 12:04, Bartosz Golaszewski wrote:
> > > From: Bartosz Golaszewski <bartosz.golaszewski@xxxxxxxxxx>
> > >
> > > The output of ".%03u" with the unsigned int in range [0, 4294966295] may
> > > get truncated if the target buffer is not 12 bytes.
> >
> > Perhaps, if you elaborate on how 'remainder' can become > 999?
> >
> 
> Yeah, I guess it can't. Not sure what we do about such false
> positives, do we have some common way to suppress them?

The only way I've found is to 'launder' the buffer size using
OPTIMISER_HIDE_VAR().
Although I can imagine an update to gcc that checks sizeof (buffer)
as well - so that would also need laundering.

You actually want:
#define OPTIMER_HIDE_VAL(x) \
  ({ __auto_type _x = x; OPTIMER_HIDE_VAR(_x); _x;})
so you can do:
	snprintf(OPTIMISER_HIDE_VAL(buffer), OPTOMISER_HIDE_VAL(sizeof buffer), fmt, ...)

Perhaps that could be snprint_truncate() ?

	David

-
Registered Address Lakeside, Bramley Road, Mount Farm, Milton Keynes, MK1 1PT, UK
Registration No: 1397386 (Wales)




[Index of Archives]     [Linux Kernel]     [Kernel Development Newbies]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite Hiking]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux