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: Jes Sorensen <Jes.Sorensen@redhat.com> Signed-off-by: Kevin Wolf <kwolf@redhat.com>
This commit is contained in:
parent
45d1aa828f
commit
f3bd362a18
7
cutils.c
7
cutils.c
@ -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;
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user