forked from len0rd/rockbox
Fix potential buffer overflow in settings.c
Change-Id: Ie8953e3ffc5188685f1ea056863bfbdb817080a7
This commit is contained in:
parent
d24edc605b
commit
3f6fed8eca
1 changed files with 9 additions and 6 deletions
|
@ -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;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue