From 762cf0ffe862fcfd52933657d494d9cb2c0757da Mon Sep 17 00:00:00 2001 From: Arjen Poutsma Date: Tue, 4 Aug 2020 16:05:47 +0200 Subject: [PATCH] Check for asterisk range in CronExpression This commit makes sure that in CronExpression, the asterisk is only used in a range field, and is not surrounded by unexpected characters. Closes gh-19500 --- .../org/springframework/scheduling/support/BitsCronField.java | 2 +- .../springframework/scheduling/support/BitsCronFieldTests.java | 3 +++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/spring-context/src/main/java/org/springframework/scheduling/support/BitsCronField.java b/spring-context/src/main/java/org/springframework/scheduling/support/BitsCronField.java index 5862145c8f..015a7fe729 100644 --- a/spring-context/src/main/java/org/springframework/scheduling/support/BitsCronField.java +++ b/spring-context/src/main/java/org/springframework/scheduling/support/BitsCronField.java @@ -150,7 +150,7 @@ final class BitsCronField extends CronField { } private static ValueRange parseRange(String value, Type type) { - if (value.indexOf('*') != -1) { + if (value.equals("*")) { return type.range(); } else { diff --git a/spring-context/src/test/java/org/springframework/scheduling/support/BitsCronFieldTests.java b/spring-context/src/test/java/org/springframework/scheduling/support/BitsCronFieldTests.java index b608dd5a68..8cd20cfe56 100644 --- a/spring-context/src/test/java/org/springframework/scheduling/support/BitsCronFieldTests.java +++ b/spring-context/src/test/java/org/springframework/scheduling/support/BitsCronFieldTests.java @@ -48,6 +48,9 @@ public class BitsCronFieldTests { assertThatIllegalArgumentException().isThrownBy(() -> BitsCronField.parseMonth("13")); assertThatIllegalArgumentException().isThrownBy(() -> BitsCronField.parseDaysOfWeek("8")); assertThatIllegalArgumentException().isThrownBy(() -> BitsCronField.parseSeconds("20-10")); + assertThatIllegalArgumentException().isThrownBy(() -> BitsCronField.parseDaysOfWeek("*SUN")); + assertThatIllegalArgumentException().isThrownBy(() -> BitsCronField.parseDaysOfWeek("SUN*")); + assertThatIllegalArgumentException().isThrownBy(() -> BitsCronField.parseHours("*ANYTHING_HERE")); } @Test