diff mbox

lib: fwts_smbios: fix portability warning from cppcheck on void * cast

Message ID 1471429443-22797-1-git-send-email-colin.king@canonical.com
State Accepted
Headers show

Commit Message

Colin Ian King Aug. 17, 2016, 10:24 a.m. UTC
From: Colin Ian King <colin.king@canonical.com>

Minor fix, ensure we don't do void * pointer arithmetic as the behaviour
is undefined (even though most compilers assume it is a char * sized).
Cast to char * before doing the addition.

Signed-off-by: Colin Ian King <colin.king@canonical.com>
---
 src/lib/src/fwts_smbios.c | 10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)

Comments

Alex Hung Aug. 18, 2016, 2:12 a.m. UTC | #1
On 2016-08-17 06:24 PM, Colin King wrote:
> From: Colin Ian King <colin.king@canonical.com>
>
> Minor fix, ensure we don't do void * pointer arithmetic as the behaviour
> is undefined (even though most compilers assume it is a char * sized).
> Cast to char * before doing the addition.
>
> Signed-off-by: Colin Ian King <colin.king@canonical.com>
> ---
>  src/lib/src/fwts_smbios.c | 10 +++++-----
>  1 file changed, 5 insertions(+), 5 deletions(-)
>
> diff --git a/src/lib/src/fwts_smbios.c b/src/lib/src/fwts_smbios.c
> index 73b3f2b..fb814b2 100644
> --- a/src/lib/src/fwts_smbios.c
> +++ b/src/lib/src/fwts_smbios.c
> @@ -124,8 +124,8 @@ static void *fwts_smbios_find_entry_bios(fwts_framework *fw, fwts_smbios_entry *
>  		    (*(mem+i+2) == 'M') &&
>  		    (*(mem+i+3) == '_') &&
>  		    (fwts_checksum(mem + i, 16) == 0)) {
> -			addr = (void*)FWTS_SMBIOS_REGION_START + i;
> -			memcpy(entry, (void*)(mem + i), sizeof(fwts_smbios_entry));
> +			addr = (void *)((uint8_t *)FWTS_SMBIOS_REGION_START + i);
> +			memcpy(entry, (void *)(mem + i), sizeof(fwts_smbios_entry));
>  			*type  = FWTS_SMBIOS;
>  			break;
>  		}
> @@ -137,8 +137,8 @@ static void *fwts_smbios_find_entry_bios(fwts_framework *fw, fwts_smbios_entry *
>  		    (*(mem+i+4) == '_') &&
>  		    (fwts_checksum(mem + i, 15) == 0)) {
>  			memset(entry, 0, 16);
> -			addr = (void*)FWTS_SMBIOS_REGION_START + i;
> -			memcpy(16+((void*)entry), (void*)(mem + i), 15);
> +			addr = (void *)((uint8_t *)FWTS_SMBIOS_REGION_START + i);
> +			memcpy(16 + ((uint8_t *)entry), (void *)(mem + i), 15);
>  			*type = FWTS_SMBIOS_DMI_LEGACY;
>  			break;
>  		}
> @@ -172,7 +172,7 @@ static void *fwts_smbios30_find_entry_bios(fwts_framework *fw, fwts_smbios30_ent
>  		    (*(mem+i+3) == '3') &&
>  		    (*(mem+i+4) == '_') &&
>  		    (fwts_checksum(mem + i, 24 ) == 0)) {
> -			addr = (void *)FWTS_SMBIOS_REGION_START + i;
> +			addr = (void *)((uint8_t *)FWTS_SMBIOS_REGION_START + i);
>  			memcpy(entry, (void*)(mem + i), sizeof(fwts_smbios30_entry));
>  			break;
>  		}
>


Acked-by: Alex Hung <alex.hung@canonical.com>
Ivan Hu Aug. 18, 2016, 2:23 a.m. UTC | #2
On 2016年08月17日 18:24, Colin King wrote:
> From: Colin Ian King <colin.king@canonical.com>
>
> Minor fix, ensure we don't do void * pointer arithmetic as the behaviour
> is undefined (even though most compilers assume it is a char * sized).
> Cast to char * before doing the addition.
>
> Signed-off-by: Colin Ian King <colin.king@canonical.com>
> ---
>  src/lib/src/fwts_smbios.c | 10 +++++-----
>  1 file changed, 5 insertions(+), 5 deletions(-)
>
> diff --git a/src/lib/src/fwts_smbios.c b/src/lib/src/fwts_smbios.c
> index 73b3f2b..fb814b2 100644
> --- a/src/lib/src/fwts_smbios.c
> +++ b/src/lib/src/fwts_smbios.c
> @@ -124,8 +124,8 @@ static void *fwts_smbios_find_entry_bios(fwts_framework *fw, fwts_smbios_entry *
>  		    (*(mem+i+2) == 'M') &&
>  		    (*(mem+i+3) == '_') &&
>  		    (fwts_checksum(mem + i, 16) == 0)) {
> -			addr = (void*)FWTS_SMBIOS_REGION_START + i;
> -			memcpy(entry, (void*)(mem + i), sizeof(fwts_smbios_entry));
> +			addr = (void *)((uint8_t *)FWTS_SMBIOS_REGION_START + i);
> +			memcpy(entry, (void *)(mem + i), sizeof(fwts_smbios_entry));
>  			*type  = FWTS_SMBIOS;
>  			break;
>  		}
> @@ -137,8 +137,8 @@ static void *fwts_smbios_find_entry_bios(fwts_framework *fw, fwts_smbios_entry *
>  		    (*(mem+i+4) == '_') &&
>  		    (fwts_checksum(mem + i, 15) == 0)) {
>  			memset(entry, 0, 16);
> -			addr = (void*)FWTS_SMBIOS_REGION_START + i;
> -			memcpy(16+((void*)entry), (void*)(mem + i), 15);
> +			addr = (void *)((uint8_t *)FWTS_SMBIOS_REGION_START + i);
> +			memcpy(16 + ((uint8_t *)entry), (void *)(mem + i), 15);
>  			*type = FWTS_SMBIOS_DMI_LEGACY;
>  			break;
>  		}
> @@ -172,7 +172,7 @@ static void *fwts_smbios30_find_entry_bios(fwts_framework *fw, fwts_smbios30_ent
>  		    (*(mem+i+3) == '3') &&
>  		    (*(mem+i+4) == '_') &&
>  		    (fwts_checksum(mem + i, 24 ) == 0)) {
> -			addr = (void *)FWTS_SMBIOS_REGION_START + i;
> +			addr = (void *)((uint8_t *)FWTS_SMBIOS_REGION_START + i);
>  			memcpy(entry, (void*)(mem + i), sizeof(fwts_smbios30_entry));
>  			break;
>  		}
>

Acked-by: Ivan Hu <ivan.hu@canonical.com>
diff mbox

Patch

diff --git a/src/lib/src/fwts_smbios.c b/src/lib/src/fwts_smbios.c
index 73b3f2b..fb814b2 100644
--- a/src/lib/src/fwts_smbios.c
+++ b/src/lib/src/fwts_smbios.c
@@ -124,8 +124,8 @@  static void *fwts_smbios_find_entry_bios(fwts_framework *fw, fwts_smbios_entry *
 		    (*(mem+i+2) == 'M') &&
 		    (*(mem+i+3) == '_') &&
 		    (fwts_checksum(mem + i, 16) == 0)) {
-			addr = (void*)FWTS_SMBIOS_REGION_START + i;
-			memcpy(entry, (void*)(mem + i), sizeof(fwts_smbios_entry));
+			addr = (void *)((uint8_t *)FWTS_SMBIOS_REGION_START + i);
+			memcpy(entry, (void *)(mem + i), sizeof(fwts_smbios_entry));
 			*type  = FWTS_SMBIOS;
 			break;
 		}
@@ -137,8 +137,8 @@  static void *fwts_smbios_find_entry_bios(fwts_framework *fw, fwts_smbios_entry *
 		    (*(mem+i+4) == '_') &&
 		    (fwts_checksum(mem + i, 15) == 0)) {
 			memset(entry, 0, 16);
-			addr = (void*)FWTS_SMBIOS_REGION_START + i;
-			memcpy(16+((void*)entry), (void*)(mem + i), 15);
+			addr = (void *)((uint8_t *)FWTS_SMBIOS_REGION_START + i);
+			memcpy(16 + ((uint8_t *)entry), (void *)(mem + i), 15);
 			*type = FWTS_SMBIOS_DMI_LEGACY;
 			break;
 		}
@@ -172,7 +172,7 @@  static void *fwts_smbios30_find_entry_bios(fwts_framework *fw, fwts_smbios30_ent
 		    (*(mem+i+3) == '3') &&
 		    (*(mem+i+4) == '_') &&
 		    (fwts_checksum(mem + i, 24 ) == 0)) {
-			addr = (void *)FWTS_SMBIOS_REGION_START + i;
+			addr = (void *)((uint8_t *)FWTS_SMBIOS_REGION_START + i);
 			memcpy(entry, (void*)(mem + i), sizeof(fwts_smbios30_entry));
 			break;
 		}