[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [qemu-s390x] [PATCH v2 5/6] pc-bios/s390-ccw: Clean up harmless misu
From: |
Christian Borntraeger |
Subject: |
Re: [qemu-s390x] [PATCH v2 5/6] pc-bios/s390-ccw: Clean up harmless misuse of isdigit() |
Date: |
Tue, 14 May 2019 20:04:36 +0200 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Thunderbird/60.6.1 |
On 14.05.19 20:03, Markus Armbruster wrote:
> atoui() and get_index() pass char values to isdigit(). With a
> standard isdigit(), we'd get undefined behavior when the value is
> negative. Can't happen as char is unsigned on s390x. Even if it
> could, we're actually using isdigit() from pc-bios/s390-ccw/libc.h
> here, which works fine for negative values. Clean up anyway, just
> to avoid setting a bad example.
>
> Cc: Christian Borntraeger <address@hidden>
Acked-by: Christian Borntraeger <address@hidden>
> Cc: Thomas Huth <address@hidden>
> Cc: Cornelia Huck <address@hidden>
> Cc: address@hidden
> Signed-off-by: Markus Armbruster <address@hidden>
> ---
> pc-bios/s390-ccw/libc.c | 2 +-
> pc-bios/s390-ccw/menu.c | 2 +-
> 2 files changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/pc-bios/s390-ccw/libc.c b/pc-bios/s390-ccw/libc.c
> index a786566c4c..3187923950 100644
> --- a/pc-bios/s390-ccw/libc.c
> +++ b/pc-bios/s390-ccw/libc.c
> @@ -38,7 +38,7 @@ uint64_t atoui(const char *str)
> }
>
> while (*str) {
> - if (!isdigit(*str)) {
> + if (!isdigit(*(unsigned char *)str)) {
> break;
> }
> val = val * 10 + *str - '0';
> diff --git a/pc-bios/s390-ccw/menu.c b/pc-bios/s390-ccw/menu.c
> index 82a4ae6315..ce3815b201 100644
> --- a/pc-bios/s390-ccw/menu.c
> +++ b/pc-bios/s390-ccw/menu.c
> @@ -134,7 +134,7 @@ static int get_index(void)
>
> /* Check for erroneous input */
> for (i = 0; i < len; i++) {
> - if (!isdigit(buf[i])) {
> + if (!isdigit((unsigned char)buf[i])) {
> return -1;
> }
> }
>