calendarspec: reject strings with spurious spaces and signs

strtoul() parses leading whitespace and an optional sign;
check that the first character is a digit to prevent odd
specifications like "00:  00:  00" and "-00:+00/-1".
This commit is contained in:
Douglas Christman
2016-11-24 18:22:08 -05:00
parent 6bae2fd4cd
commit 9dfa81a00a
2 changed files with 7 additions and 0 deletions
+4
View File
@@ -18,6 +18,7 @@
***/
#include <alloca.h>
#include <ctype.h>
#include <errno.h>
#include <stddef.h>
#include <stdio.h>
@@ -458,6 +459,9 @@ static int parse_component_decimal(const char **p, bool usec, unsigned long *res
char *ee = NULL;
int r;
if (!isdigit(**p))
return -EINVAL;
errno = 0;
value = strtoul(*p, &ee, 10);
if (errno > 0)