/* 3) Optional precision */
if (*p == '.') {
- /* We don't bother supporting anything but numbers
- here. 9999 should be long enough precision. */
- unsigned int i = 0;
p++;
- while (*p >= '0' && *p <= '9') {
- if (++i > 4) {
- i_panic("Too large precision starting at #%u in '%s'",
- start_pos, format);
- }
- p++;
+ if (!verify_length(&p)) {
+ i_panic("Too large precision starting at #%u in '%s'",
+ start_pos, format);
}
}
"Allow %#0- +s flags",
"duplicate flags in different args %0-123s %0-123s",
"Minimum length %9999s",
+ "Minimum length parameter %*s",
"Precision %.9999s",
"Precision %1.9999s",
+ "Precision parameter %1.*s %.*s",
"Length modifiers %hd %hhd %ld %lld %Lg %jd %zd %td",
"Specifiers %s %u %d %c %i %x %X %p %o %e %E %f %F %g %G %a %A",
"%%doesn't cause confusion in %%m and %%n",
"Precision can't be too long %.10000s",
"Precision can't be too long %1.10000s",
"Precision doesn't support %1.-1s",
- "Precision doesn't support %1.*s",
};
if(stage >= N_ELEMENTS(fatals)) {