summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/basic/calendarspec.c4
-rw-r--r--src/test/test-calendarspec.c3
2 files changed, 7 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)
diff --git a/src/test/test-calendarspec.c b/src/test/test-calendarspec.c
index 93414c8508..873a4910d2 100644
--- a/src/test/test-calendarspec.c
+++ b/src/test/test-calendarspec.c
@@ -216,6 +216,9 @@ int main(int argc, char* argv[]) {
assert_se(calendar_spec_from_string("*-*~5/5", &c) < 0);
assert_se(calendar_spec_from_string("Monday.. 12:00", &c) < 0);
assert_se(calendar_spec_from_string("Monday..", &c) < 0);
+ assert_se(calendar_spec_from_string("-00:+00/-5", &c) < 0);
+ assert_se(calendar_spec_from_string("00:+00/-5", &c) < 0);
+ assert_se(calendar_spec_from_string("2016- 11- 24 12: 30: 00", &c) < 0);
test_timestamp();
test_hourly_bug_4031();