mirror of
https://github.com/qemu/qemu.git
synced 2024-11-29 06:43:37 +08:00
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 strtosz_suffix(const char *nptr, char **end, const char default_suffix)
|
||||||
{
|
{
|
||||||
int64_t retval = -1;
|
int64_t retval = -1;
|
||||||
char *endptr, c, d;
|
char *endptr;
|
||||||
|
unsigned char c, d;
|
||||||
int mul_required = 0;
|
int mul_required = 0;
|
||||||
double val, mul, integral, fraction;
|
double val, mul, integral, fraction;
|
||||||
|
|
||||||
@ -314,7 +315,7 @@ int64_t strtosz_suffix(const char *nptr, char **end, const char default_suffix)
|
|||||||
*/
|
*/
|
||||||
c = *endptr;
|
c = *endptr;
|
||||||
d = c;
|
d = c;
|
||||||
if (isspace(c) || c == '\0' || c == ',') {
|
if (qemu_isspace(c) || c == '\0' || c == ',') {
|
||||||
c = 0;
|
c = 0;
|
||||||
if (default_suffix) {
|
if (default_suffix) {
|
||||||
d = 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) {
|
if (c != 0) {
|
||||||
endptr++;
|
endptr++;
|
||||||
if (!isspace(*endptr) && *endptr != ',' && *endptr != 0) {
|
if (!qemu_isspace(*endptr) && *endptr != ',' && *endptr != 0) {
|
||||||
goto fail;
|
goto fail;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user