flash/nor/nrf5: pass unsigned char to isalnum()
authorAntonio Borneo <borneo.antonio@gmail.com>
Thu, 26 Mar 2020 22:35:08 +0000 (23:35 +0100)
committerAntonio Borneo <borneo.antonio@gmail.com>
Sun, 12 Apr 2020 21:02:01 +0000 (22:02 +0100)
In newlib, the argument of isalnum() and the similar functions in
ctype.h is checked to be either an int or an unsigned char.
Using a normal (signed) char triggers a compile time warning
warning: array subscript has type ‘char’ [-Wchar-subscripts]

Rewrite the function to separate the internal unsigned char
operations from the (signed) char parameter.

Change-Id: I5f19115f0b2de2b5b35dc07ef4b58a96161268ee
Signed-off-by: Antonio Borneo <borneo.antonio@gmail.com>
Reported-by: Åke Rehnman <ake.rehnman@gmail.com>
Fixes: 5da746fa09 ("flash/nor/nrf5: detect newer devices without HWID table")
Reviewed-on: http://openocd.zylin.com/5545
Tested-by: jenkins
Reviewed-by: Ake Rehnman <ake.rehnman@gmail.com>
src/flash/nor/nrf5.c

index 8422589b84dcf18d68a82bb8a3bc17906da1d11d..5bef8487c9704c1d437fe170107ed30c5905b2bf 100644 (file)
@@ -570,10 +570,14 @@ static int nrf5_protect(struct flash_bank *bank, int set, int first, int last)
 
 static bool nrf5_info_variant_to_str(uint32_t variant, char *bf)
 {
-       h_u32_to_be((uint8_t *)bf, variant);
-       bf[4] = '\0';
-       if (isalnum(bf[0]) && isalnum(bf[1]) && isalnum(bf[2]) && isalnum(bf[3]))
+       uint8_t b[4];
+
+       h_u32_to_be(b, variant);
+       if (isalnum(b[0]) && isalnum(b[1]) && isalnum(b[2]) && isalnum(b[3])) {
+               memcpy(bf, b, 4);
+               bf[4] = 0;
                return true;
+       }
 
        strcpy(bf, "xxxx");
        return false;