Proper handling of invalid text input in scheduled dispatch
This commit is contained in:
@@ -473,9 +473,10 @@ struct SchdispatchWindow : Window {
|
|||||||
default: NOT_REACHED();
|
default: NOT_REACHED();
|
||||||
|
|
||||||
case WID_SCHDISPATCH_ADD: {
|
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 minutes = (val % 100) % 60;
|
||||||
uint hours = (val / 100) % 24;
|
uint hours = (val / 100) % 24;
|
||||||
val = MINUTES_DATE(MINUTES_DAY(CURRENT_MINUTE), hours, minutes);
|
val = MINUTES_DATE(MINUTES_DAY(CURRENT_MINUTE), hours, minutes);
|
||||||
@@ -487,9 +488,10 @@ struct SchdispatchWindow : Window {
|
|||||||
}
|
}
|
||||||
|
|
||||||
case WID_SCHDISPATCH_SET_START_DATE: {
|
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 minutes = (val % 100) % 60;
|
||||||
uint hours = (val / 100) % 24;
|
uint hours = (val / 100) % 24;
|
||||||
val = MINUTES_DATE(MINUTES_DAY(CURRENT_MINUTE), hours, minutes);
|
val = MINUTES_DATE(MINUTES_DAY(CURRENT_MINUTE), hours, minutes);
|
||||||
@@ -516,9 +518,10 @@ struct SchdispatchWindow : Window {
|
|||||||
}
|
}
|
||||||
|
|
||||||
case WID_SCHDISPATCH_SET_DELAY: {
|
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) {
|
if (_settings_client.gui.time_in_minutes) {
|
||||||
val *= _settings_client.gui.ticks_per_minute;
|
val *= _settings_client.gui.ticks_per_minute;
|
||||||
} else {
|
} else {
|
||||||
|
Reference in New Issue
Block a user