1
0
Fork 0
forked from len0rd/rockbox

Fix potential buffer overflow in settings.c

Change-Id: Ie8953e3ffc5188685f1ea056863bfbdb817080a7
This commit is contained in:
William Wilgus 2018-11-07 23:29:59 -05:00
parent d24edc605b
commit 3f6fed8eca

View file

@ -402,8 +402,8 @@ bool cfg_int_to_string(int setting_id, int val, char* buf, int buf_len)
strlcpy(buf, start, buf_len); strlcpy(buf, start, buf_len);
else else
{ {
int len = (buf_len > (end-start))? end-start: buf_len; int len = MIN(buf_len, (end-start) + 1);
strlcpy(buf, start, len+1); strlcpy(buf, start, len);
} }
return true; return true;
} }
@ -430,8 +430,8 @@ bool cfg_int_to_string(int setting_id, int val, char* buf, int buf_len)
strlcpy(buf, start, buf_len); strlcpy(buf, start, buf_len);
else else
{ {
int len = (buf_len > (end-start))? end-start: buf_len; int len = MIN(buf_len, (end-start) + 1);
strlcpy(buf, start, len+1); strlcpy(buf, start, len);
} }
return true; return true;
} }
@ -494,8 +494,11 @@ bool cfg_to_string(int i/*setting_id*/, char* buf, int buf_len)
settings[i].filename_setting->suffix); settings[i].filename_setting->suffix);
} }
} }
else strlcpy(buf,(char*)settings[i].setting, else
settings[i].filename_setting->max_len); {
int len = MIN(buf_len, settings[i].filename_setting->max_len);
strlcpy(buf,(char*)settings[i].setting,len);
}
break; break;
} /* switch () */ } /* switch () */
return true; return true;