diff --git a/src/shared/calendarspec.c b/src/shared/calendarspec.c index 51ade0e887..273a38f1fa 100644 --- a/src/shared/calendarspec.c +++ b/src/shared/calendarspec.c @@ -298,7 +298,7 @@ static void format_chain(FILE *f, int space, const CalendarComponent *c, bool us return; } - if (usec && c->start == 0 && c->repeat == USEC_PER_SEC && !c->next) { + if (usec && c->start == 0 && c->stop < 0 && c->repeat == USEC_PER_SEC && !c->next) { fputc('*', f); return; } diff --git a/src/test/test-calendarspec.c b/src/test/test-calendarspec.c index cf6965dd3c..5508f8b833 100644 --- a/src/test/test-calendarspec.c +++ b/src/test/test-calendarspec.c @@ -162,6 +162,8 @@ TEST(calendar_spec_one) { test_one("00:00:1.0..3.8", "*-*-* 00:00:01..03"); test_one("00:00:01..03", "*-*-* 00:00:01..03"); test_one("00:00:01/2,02..03", "*-*-* 00:00:01/2,02..03"); + test_one("*:4,30:0..3", "*-*-* *:04,30:00..03"); + test_one("*:4,30:0/1", "*-*-* *:04,30:*"); test_one("*-*~1 Utc", "*-*~01 00:00:00 UTC"); test_one("*-*~05,3 ", "*-*~03,05 00:00:00"); test_one("*-*~* 00:00:00", "*-*-* 00:00:00"); @@ -252,6 +254,9 @@ TEST(calendar_spec_from_string) { assert_se(calendar_spec_from_string("00:00:2300", &c) == -ERANGE); assert_se(calendar_spec_from_string("00:00:18446744073709551615", &c) == -ERANGE); assert_se(calendar_spec_from_string("@88588582097858858", &c) == -ERANGE); + assert_se(calendar_spec_from_string("*:4,30:*,5", &c) == -EINVAL); + assert_se(calendar_spec_from_string("*:4,30:5,*", &c) == -EINVAL); + assert_se(calendar_spec_from_string("*:4,30:*\n", &c) == -EINVAL); } DEFINE_TEST_MAIN(LOG_INFO); diff --git a/test/fuzz/fuzz-calendarspec/cant-parse-printed b/test/fuzz/fuzz-calendarspec/cant-parse-printed new file mode 100644 index 0000000000..e2c82a620e --- /dev/null +++ b/test/fuzz/fuzz-calendarspec/cant-parse-printed @@ -0,0 +1 @@ +*:4,30:0..5,0 \ No newline at end of file diff --git a/test/fuzz/fuzz-calendarspec/print-loses-spec b/test/fuzz/fuzz-calendarspec/print-loses-spec new file mode 100644 index 0000000000..5e36de2e87 --- /dev/null +++ b/test/fuzz/fuzz-calendarspec/print-loses-spec @@ -0,0 +1 @@ +*:4,30:0..3 \ No newline at end of file