[PATCH 1/5] acpi: acpidump: avoid using void * pointer arithmetic
Colin King
colin.king at canonical.com
Thu Sep 11 14:05:25 UTC 2014
From: Colin Ian King <colin.king at canonical.com>
cppcheck reports:
When using void pointers in calculations, the behaviour is undefined
Signed-off-by: Colin Ian King <colin.king at canonical.com>
---
src/acpi/acpidump/acpidump.c | 8 ++++++--
1 file changed, 6 insertions(+), 2 deletions(-)
diff --git a/src/acpi/acpidump/acpidump.c b/src/acpi/acpidump/acpidump.c
index 7f92e92..7b45932 100644
--- a/src/acpi/acpidump/acpidump.c
+++ b/src/acpi/acpidump/acpidump.c
@@ -127,6 +127,7 @@ static uint64_t apci_dump_get_uint64_t(
{
uint64_t ret = 0;
uint64_t mask = (1ULL << (uint64_t)info->bit_field_nbits) - 1;
+ uint8_t *ptr;
int i;
switch (info->size) {
@@ -138,8 +139,9 @@ static uint64_t apci_dump_get_uint64_t(
break;
default:
ret = 0;
+ ptr = (uint8_t *)data;
for (i = 0; (i < info->size) && (i < 8); i++) {
- uint8_t val8 = *(uint8_t *)data++;
+ uint8_t val8 = *ptr++;
ret = (ret << 8) | val8;
}
break;
@@ -156,6 +158,7 @@ static void acpi_dump_uint(
{
int i, hexdigits = info->size << 1;
uint64_t val = apci_dump_get_uint64_t(info, data);
+ uint8_t *ptr;
switch (info->size) {
case 1:
@@ -172,8 +175,9 @@ static void acpi_dump_uint(
hexdigits, hexdigits, val);
break;
default:
+ ptr = (uint8_t *)data;
for (i = 0; i < info->size; i++) {
- uint8_t val8 = *(uint8_t *)data++;
+ uint8_t val8 = *ptr++;
fwts_log_info_verbatum(fw, "%s 0x%2.2x [%d]",
acpi_dump_field_info(info->label, info->size, info->offset + offset), val8, i);
}
--
2.1.0
More information about the fwts-devel
mailing list