diff --git a/src/schdispatch_gui.cpp b/src/schdispatch_gui.cpp index 9f58e287dd..71c2926cb0 100644 --- a/src/schdispatch_gui.cpp +++ b/src/schdispatch_gui.cpp @@ -473,9 +473,10 @@ struct SchdispatchWindow : Window { default: NOT_REACHED(); case WID_SCHDISPATCH_ADD: { - int32 val = StrEmpty(str) ? -1 : strtoul(str, NULL, 10); + char *end; + int32 val = StrEmpty(str) ? -1 : strtoul(str, &end, 10); - if (val >= 0) { + if (val >= 0 && end && *end == 0) { uint minutes = (val % 100) % 60; uint hours = (val / 100) % 24; val = MINUTES_DATE(MINUTES_DAY(CURRENT_MINUTE), hours, minutes); @@ -487,9 +488,10 @@ struct SchdispatchWindow : Window { } case WID_SCHDISPATCH_SET_START_DATE: { - int32 val = StrEmpty(str) ? -1 : strtoul(str, NULL, 10); + char *end; + int32 val = StrEmpty(str) ? -1 : strtoul(str, &end, 10); - if (val >= 0) { + if (val >= 0 && end && *end == 0) { uint minutes = (val % 100) % 60; uint hours = (val / 100) % 24; val = MINUTES_DATE(MINUTES_DAY(CURRENT_MINUTE), hours, minutes); @@ -516,9 +518,10 @@ struct SchdispatchWindow : Window { } case WID_SCHDISPATCH_SET_DELAY: { - int32 val = StrEmpty(str) ? -1 : strtoul(str, NULL, 10); + char *end; + int32 val = StrEmpty(str) ? -1 : strtoul(str, &end, 10); - if (val >= 0) { + if (val >= 0 && end && *end == 0) { if (_settings_client.gui.time_in_minutes) { val *= _settings_client.gui.ticks_per_minute; } else {