diff options
author | Douglas Christman <DouglasChristman@gmail.com> | 2016-11-24 12:47:55 -0500 |
---|---|---|
committer | Douglas Christman <DouglasChristman@gmail.com> | 2016-11-24 18:22:08 -0500 |
commit | 9dfa81a00a9a7d4536f96848119c5ad40d9d72b4 (patch) | |
tree | 2d8407112c6a71685dc44c7be05f72140912be09 /src/basic | |
parent | 6bae2fd4cdddd6c34f3d5e79906d8f6a75125922 (diff) |
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".
Diffstat (limited to 'src/basic')
-rw-r--r-- | src/basic/calendarspec.c | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/src/basic/calendarspec.c b/src/basic/calendarspec.c index eef4ed5240..1555230e30 100644 --- a/src/basic/calendarspec.c +++ b/src/basic/calendarspec.c @@ -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) |