Commit f3bd362a authored by Jes Sorensen's avatar Jes Sorensen Committed by Kevin Wolf
Browse files

strtosz(): use unsigned char and switch to qemu_isspace()



isspace() behavior is undefined for signed char.

Bug pointed out by Eric Blake, thanks!

Signed-off-by: default avatarJes Sorensen <Jes.Sorensen@redhat.com>
Signed-off-by: default avatarKevin Wolf <kwolf@redhat.com>
parent 45d1aa82
......@@ -294,7 +294,8 @@ int fcntl_setfl(int fd, int flag)
int64_t strtosz_suffix(const char *nptr, char **end, const char default_suffix)
{
int64_t retval = -1;
char *endptr, c, d;
char *endptr;
unsigned char c, d;
int mul_required = 0;
double val, mul, integral, fraction;
......@@ -314,7 +315,7 @@ int64_t strtosz_suffix(const char *nptr, char **end, const char default_suffix)
*/
c = *endptr;
d = c;
if (isspace(c) || c == '\0' || c == ',') {
if (qemu_isspace(c) || c == '\0' || c == ',') {
c = 0;
if (default_suffix) {
d = default_suffix;
......@@ -361,7 +362,7 @@ int64_t strtosz_suffix(const char *nptr, char **end, const char default_suffix)
*/
if (c != 0) {
endptr++;
if (!isspace(*endptr) && *endptr != ',' && *endptr != 0) {
if (!qemu_isspace(*endptr) && *endptr != ',' && *endptr != 0) {
goto fail;
}
}
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment