Run-time validation of INT settings.

Check against min/max/step parameters

Many places this value is used as an index into an array; this will
help prevent array overflows and undefined/undesireable behavior.

Some fields accept arbitary values, continue to accept those.

Change-Id: Idbb5a17b7ceae5500660987703e2d6c16e920c92
This commit is contained in:
Solomon Peachy 2020-04-18 10:23:26 -04:00
parent 5c30d57ad1
commit bf546fbfcb

View file

@ -310,9 +310,15 @@ bool settings_load_config(const char* file, bool apply)
else
#endif
if (settings[i].cfg_vals == NULL)
{
if (settings[i].flags&F_ALLOW_ARBITRARY_VALS ||
(temp >= settings[i].int_setting->min &&
temp <= settings[i].int_setting->max &&
temp % settings[i].int_setting->step == 0))
{
*(int*)settings[i].setting = atoi(value);
}
}
else
{
int temp, *v = (int*)settings[i].setting;