summaryrefslogtreecommitdiff
path: root/src/basic/calendarspec.c
diff options
context:
space:
mode:
authorDouglas Christman <DouglasChristman@gmail.com>2016-11-24 12:47:55 -0500
committerDouglas Christman <DouglasChristman@gmail.com>2016-11-24 18:22:08 -0500
commit9dfa81a00a9a7d4536f96848119c5ad40d9d72b4 (patch)
tree2d8407112c6a71685dc44c7be05f72140912be09 /src/basic/calendarspec.c
parent6bae2fd4cdddd6c34f3d5e79906d8f6a75125922 (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/calendarspec.c')
-rw-r--r--src/basic/calendarspec.c4
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)