mirror of
https://git.musl-libc.org/git/musl
synced 2025-01-06 23:02:10 +03:00
strftime: don't attempt to parse field width without seeing a digit
strtoul will consume leading whitespace or sign characters, which are not valid in this context, thereby accepting invalid field specifiers. so, avoid calling it unless there is a number to parse as the width.
This commit is contained in:
parent
f314e13392
commit
f47a5d400b
@ -3,6 +3,7 @@
|
||||
#include <string.h>
|
||||
#include <langinfo.h>
|
||||
#include <locale.h>
|
||||
#include <ctype.h>
|
||||
#include <time.h>
|
||||
#include <limits.h>
|
||||
#include "locale_impl.h"
|
||||
@ -233,7 +234,7 @@ size_t __strftime_l(char *restrict s, size_t n, const char *restrict f, const st
|
||||
pad = 0;
|
||||
if (*f == '-' || *f == '_' || *f == '0') pad = *f++;
|
||||
if ((plus = (*f == '+'))) f++;
|
||||
width = strtoul(f, &p, 10);
|
||||
width = isdigit(*f) ? strtoul(f, &p, 10) : 0;
|
||||
if (*p == 'C' || *p == 'F' || *p == 'G' || *p == 'Y') {
|
||||
if (!width && p!=f) width = 1;
|
||||
} else {
|
||||
|
Loading…
Reference in New Issue
Block a user