Messages in this thread | | | From | Rasmus Villemoes <> | Subject | Re: [PATCH 06/14] lib/vsprintf.c: warn about too large precisions and field widths | Date | Thu, 26 Nov 2015 22:10:48 +0100 |
| |
On Mon, Nov 23 2015, Andy Shevchenko <andy.shevchenko@gmail.com> wrote:
> On Mon, Nov 23, 2015 at 11:29 PM, Rasmus Villemoes > <linux@rasmusvillemoes.dk> wrote: >> The field width is overloaded to pass some extra information for >> some %p extensions (e.g. #bits for %pb). But we might silently >> truncate the passed value when we stash it in struct printf_spec (see >> e.g. "lib/vsprintf.c: expand field_width to 24 bits"). Hopefully 23 >> value bits should now be enough for everybody, but if not, let's make >> some noise. >> >> Do the same for the precision. In both cases, clamping seems more >> sensible than truncating. While, according to POSIX, "A negative >> precision is taken as if the precision were omitted.", the kernel's >> printf has always treated that case as if the precision was 0, so we >> use that as lower bound. For the field width, the smallest >> representable value is actually -(1<<23), but a negative field width >> means 'set the LEFT flag and use the absolute value', so we want the >> absolute value to fit. >> > > Do we need to do the same for bstr_printf() ? >
Heh, apparently I didn't learn anything from 762abb51. Thanks, will fix in next spin.
Rasmus
| |