Reject every() intervals that overflow int32 milliseconds

Char is rune (int32). Without an upper bound, secs * 1000 could
silently wrap to a non-positive value and panic time.NewTicker.
This commit is contained in:
Junegunn Choi
2026-05-16 17:58:31 +09:00
parent 38c88e4753
commit 463ef212b6
2 changed files with 7 additions and 4 deletions
+2 -2
View File
@@ -323,8 +323,8 @@ func TestParseEveryEvent(t *testing.T) {
t.Errorf("every(0.001) should floor to 10ms")
}
// Reject zero and negatives
for _, bad := range []string{"every(0)", "every(-1)", "every(abc)", "every()"} {
// Reject zero, negatives, and overflow (>= 2^31 ms = ~24.85 days)
for _, bad := range []string{"every(0)", "every(-1)", "every(abc)", "every()", "every(2147484)"} {
if _, _, err := parseKeyChords(bad, ""); err == nil {
t.Errorf("%s should be rejected", bad)
}