diff options
author | Jes Sorensen <Jes.Sorensen@redhat.com> | 2011-01-24 16:33:28 +0100 |
---|---|---|
committer | Kevin Wolf <kwolf@redhat.com> | 2011-01-31 10:02:59 +0100 |
commit | f3bd362a1857c617a4154062cadd501fc52c4199 (patch) | |
tree | 3c2ca12f79b727f3dfa4868bc9af811c4d607c2f | |
parent | 45d1aa828f8c94b082a0aa2dbf76535594ee45df (diff) | |
download | hqemu-f3bd362a1857c617a4154062cadd501fc52c4199.zip hqemu-f3bd362a1857c617a4154062cadd501fc52c4199.tar.gz |
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>
-rw-r--r-- | cutils.c | 7 |
1 files changed, 4 insertions, 3 deletions
@@ -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; } } |