From 04773cb50aca6484921c40bef3cbc0171c1e4786 Mon Sep 17 00:00:00 2001 From: Douglas Christman Date: Thu, 24 Nov 2016 12:21:37 -0500 Subject: [PATCH] calendarspec: reject strings that only contain a timezone This makes " UTC" an illegal date specification. --- src/basic/calendarspec.c | 8 +++++--- src/test/test-calendarspec.c | 1 + 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/src/basic/calendarspec.c b/src/basic/calendarspec.c index db11e55390c..316db5c5567 100644 --- a/src/basic/calendarspec.c +++ b/src/basic/calendarspec.c @@ -779,9 +779,6 @@ int calendar_spec_from_string(const char *p, CalendarSpec **spec) { assert(p); assert(spec); - if (isempty(p)) - return -EINVAL; - c = new0(CalendarSpec, 1); if (!c) return -ENOMEM; @@ -820,6 +817,11 @@ int calendar_spec_from_string(const char *p, CalendarSpec **spec) { } } + if (isempty(p)) { + r = -EINVAL; + goto fail; + } + if (strcaseeq(p, "minutely")) { r = const_chain(0, &c->microsecond); if (r < 0) diff --git a/src/test/test-calendarspec.c b/src/test/test-calendarspec.c index 7357c522e0b..c539d168670 100644 --- a/src/test/test-calendarspec.c +++ b/src/test/test-calendarspec.c @@ -202,6 +202,7 @@ int main(int argc, char* argv[]) { test_next("Mon 2017-05~07/1 UTC", "", 12345, 1496016000000000); assert_se(calendar_spec_from_string("test", &c) < 0); + assert_se(calendar_spec_from_string(" utc", &c) < 0); assert_se(calendar_spec_from_string(" ", &c) < 0); assert_se(calendar_spec_from_string("", &c) < 0); assert_se(calendar_spec_from_string("7", &c) < 0);