diff --git a/CHANGELOG.md b/CHANGELOG.md index 3b3c4b78d..2fcddbb58 100755 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -12,6 +12,7 @@ * 【core 】 Number128增加hash和equals方法(pr#968@Gitee) * 【core 】 NamingCase.toCamelCase新增重载,可选是否转换其他字符为小写(issue#3031@ithub) * 【core 】 新增JdkUtil +* 【core 】 DateUtil.getZodiac增加越界检查(issue#3036@Github) ### 🐞Bug修复 * 【core 】 CollUtil.split优化切割列表参数判断,避免OOM(pr#3026@Github) diff --git a/hutool-core/src/main/java/cn/hutool/core/date/Zodiac.java b/hutool-core/src/main/java/cn/hutool/core/date/Zodiac.java index 9e504f496..faffa1769 100644 --- a/hutool-core/src/main/java/cn/hutool/core/date/Zodiac.java +++ b/hutool-core/src/main/java/cn/hutool/core/date/Zodiac.java @@ -1,5 +1,7 @@ package cn.hutool.core.date; +import cn.hutool.core.lang.Assert; + import java.util.Calendar; import java.util.Date; @@ -60,6 +62,9 @@ public class Zodiac { * @return 星座名 */ public static String getZodiac(int month, int day) { + Assert.checkBetween(month, + Month.JANUARY.getValue(), + Month.DECEMBER.getValue(), "Unsupported month value, must be [0,12]"); // 在分隔日前为前一个星座,否则为后一个星座 return day < DAY_ARR[month] ? ZODIACS[month] : ZODIACS[month + 1]; } diff --git a/hutool-core/src/test/java/cn/hutool/core/date/Issue3036Test.java b/hutool-core/src/test/java/cn/hutool/core/date/Issue3036Test.java new file mode 100644 index 000000000..95029a833 --- /dev/null +++ b/hutool-core/src/test/java/cn/hutool/core/date/Issue3036Test.java @@ -0,0 +1,22 @@ +/* + * Copyright (c) 2023 looly(loolly@aliyun.com) + * Hutool is licensed under Mulan PSL v2. + * You can use this software according to the terms and conditions of the Mulan PSL v2. + * You may obtain a copy of Mulan PSL v2 at: + * http://license.coscl.org.cn/MulanPSL2 + * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, + * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, + * MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE. + * See the Mulan PSL v2 for more details. + */ + +package cn.hutool.core.date; + +import org.junit.Test; + +public class Issue3036Test { + @Test(expected = IllegalArgumentException.class) + public void getZodiacTest() { + DateUtil.getZodiac(Month.UNDECIMBER.getValue(), 10); + } +}