1
0
Fork 0
forked from len0rd/rockbox

Fix path_trim_whitespace() sign extension.

It should have been implemented as interpreting chars as unsigned
so that code points >= 0x80 would not get sign-extended and seen as
negative values.

Fixes FS#12995 - path_trim_whitespace() assumes unsigned char

Change-Id: I514e369681e00151588585311a0b6c66b9b5200c
This commit is contained in:
Michael Sevakis 2014-09-15 23:07:34 -04:00
parent 77bfff58ec
commit c1bbaf4050

View file

@ -202,12 +202,15 @@ int path_strip_drive(const char *name, const char **nameptr, bool greedy)
*/
size_t path_trim_whitespace(const char *name, const char **nameptr)
{
/* NOTE: this won't currently treat DEL (0x7f) as non-printable */
const unsigned char *p = name;
int c;
while ((c = *name) <= ' ' && c)
++name;
const char *first = name;
const char *last = name;
while ((c = *p) <= ' ' && c)
++p;
const unsigned char *first = p;
const unsigned char *last = p;
while (1)
{
@ -217,9 +220,9 @@ size_t path_trim_whitespace(const char *name, const char **nameptr)
return last - first;
}
while ((c = *++name) > ' ');
last = name;
while (c == ' ') c = *++name;
while ((c = *++p) > ' ');
last = p;
while (c == ' ') c = *++p;
}
}