Patchwork [12/26] acpi: acpidump: fix a bunch of int type issues.

login
register
mail settings
Submitter Colin King
Date Oct. 14, 2012, 8:32 p.m.
Message ID <1350246738-31699-13-git-send-email-colin.king@canonical.com>
Download mbox | patch
Permalink /patch/191401/
State Accepted
Headers show

Comments

Colin King - Oct. 14, 2012, 8:32 p.m.
From: Colin Ian King <colin.king@canonical.com>

Fix some integer type issues, for example incorrect signed/unsigned
comparisons and poorly chosen types that could result in overflow

Signed-off-by: Colin Ian King <colin.king@canonical.com>
---
 src/acpi/acpidump/acpidump.c |   31 ++++++++++++++++---------------
 1 file changed, 16 insertions(+), 15 deletions(-)
Alex Hung - Oct. 15, 2012, 3:50 a.m.
On 10/15/2012 04:32 AM, Colin King wrote:
> From: Colin Ian King <colin.king@canonical.com>
>
> Fix some integer type issues, for example incorrect signed/unsigned
> comparisons and poorly chosen types that could result in overflow
>
> Signed-off-by: Colin Ian King <colin.king@canonical.com>
> ---
>   src/acpi/acpidump/acpidump.c |   31 ++++++++++++++++---------------
>   1 file changed, 16 insertions(+), 15 deletions(-)
>
> diff --git a/src/acpi/acpidump/acpidump.c b/src/acpi/acpidump/acpidump.c
> index 0537445..5f91457 100644
> --- a/src/acpi/acpidump/acpidump.c
> +++ b/src/acpi/acpidump/acpidump.c
> @@ -37,7 +37,7 @@ typedef struct fwts_acpidump_field {
>   	uint8_t  bit_field_nbits;
>   	uint8_t  bit_field_shift;
>   	char  **strings;
> -	int   strings_len;
> +	size_t   strings_len;
>   	fwts_acpidump_str_func str_func;
>   } fwts_acpidump_field;
>
> @@ -229,7 +229,7 @@ static void __acpi_dump_table_fields(fwts_framework *fw, uint8_t *data, fwts_acp
>
>   static void acpi_dump_raw_data(fwts_framework *fw, uint8_t *data, size_t length, size_t offset)
>   {
> -        int n;
> +        size_t n;
>
>           for (n = 0; n < length; n+=16) {
>                   int left = length - n;
> @@ -449,7 +449,7 @@ static void acpidump_erst(fwts_framework *fw, fwts_acpi_table_info *table)
>   {
>   	uint8_t *data = (uint8_t *)table->data;
>   	size_t length = table->length;
> -	int i;
> +	uint32_t i;
>
>   	static char *serialization_actions[] = {
>   		"BEGIN_WRITE_OPERATION",
> @@ -519,7 +519,7 @@ static void acpidump_erst(fwts_framework *fw, fwts_acpi_table_info *table)
>   			FIELD_UINT("  Mask", 		fwts_acpi_table_erst, entries[i].mask),
>   			FIELD_END
>   		};
> -		fwts_log_info_verbatum(fw, "Entry #%d", i+1);
> +		fwts_log_info_verbatum(fw, "Entry #%" PRIu32, i+1);
>   		__acpi_dump_table_fields(fw, data, entry_fields, 0);
>   	}
>   }
> @@ -966,8 +966,8 @@ static void acpidump_mcfg(fwts_framework *fw, fwts_acpi_table_info *table)
>   	uint8_t *data = (uint8_t *)table->data;
>   	size_t length = table->length;
>   	fwts_acpi_table_mcfg *mcfg = (fwts_acpi_table_mcfg*)data;
> -	int n;
> -	int i;
> +	size_t n;
> +	size_t i;
>
>   	static fwts_acpidump_field fields[] = {
>   		FIELD_UINT("Base Address", 	fwts_acpi_table_mcfg, 	base_address),
> @@ -990,7 +990,7 @@ static void acpidump_mcfg(fwts_framework *fw, fwts_acpi_table_info *table)
>   			FIELD_UINT("  End Bus Num", 	fwts_acpi_table_mcfg,	configuration[i].end_bus_number),
>   			FIELD_END
>   		};
> -		fwts_log_info_verbatum(fw, "Configuration #%d:", i+1);
> +		fwts_log_info_verbatum(fw, "Configuration #%zd:", i+1);
>   		acpi_dump_table_fields(fw, (uint8_t*)config, fields_config, 0, length);
>   		config++;
>   	}
> @@ -1001,22 +1001,23 @@ static void acpidump_slit(fwts_framework *fw, fwts_acpi_table_info *table)
>   	uint8_t *data = (uint8_t *)table->data;
>   	size_t length = table->length;
>   	fwts_acpi_table_slit *slit = (fwts_acpi_table_slit*)data;
> -	int i;
> -	int j = 0;
> -	int k = 0;
> -	int n = length - sizeof(fwts_acpi_table_slit);
> +	uint64_t j = 0;
> +	uint64_t k = 0;
> +	uint64_t n = length - sizeof(fwts_acpi_table_slit);
>   	uint8_t *entry;
>
>   	fwts_log_info_verbatum(fw, "# Sys Localities: 0x%" PRIx64 "(%" PRIu64 ")",
>   		slit->num_of_system_localities, slit->num_of_system_localities);
>   	if (n < slit->num_of_system_localities * slit->num_of_system_localities) {
> -		fwts_log_info_verbatum(fw,"Expecting %" PRId64 " bytes, got only %d",
> +		fwts_log_info_verbatum(fw,"Expecting %" PRIu64 " bytes, got only %" PRIu64,
>   			(slit->num_of_system_localities * slit->num_of_system_localities), n);
>   	}
>   	else {
> +		uint64_t i;
>   		entry = data + sizeof(fwts_acpi_table_slit);
> -		for (i=0; i<n; i++) {
> -			fwts_log_info_verbatum(fw, "Entry[%2.2d][%2.2d]: %2.2x", j, k, *entry++);
> +
> +		for (i = 0; i < n; i++) {
> +			fwts_log_info_verbatum(fw, "Entry[%2.2" PRIu64 "][%2.2" PRIu64 "]: %2.2x", j, k, *entry++);
>   			k++;
>   			if (k >= slit->num_of_system_localities) {
>   				k = 0;
> @@ -1291,7 +1292,7 @@ static void acpidump_dmar_device_scope(
>
>   	/* Parse through multiple device scope entries */
>   	while (device_scope_length > 0) {
> -		int i;
> +		unsigned int i;
>
>   		fwts_acpi_table_dmar_device_scope *device_scope_entry =
>   			(fwts_acpi_table_dmar_device_scope *)device_scope;
>

Acked-by: Alex Hung <alex.hung@canonical.com>
Keng-Yu Lin - Oct. 17, 2012, 7:45 a.m.
On Mon, Oct 15, 2012 at 4:32 AM, Colin King <colin.king@canonical.com> wrote:
> From: Colin Ian King <colin.king@canonical.com>
>
> Fix some integer type issues, for example incorrect signed/unsigned
> comparisons and poorly chosen types that could result in overflow
>
> Signed-off-by: Colin Ian King <colin.king@canonical.com>
> ---
>  src/acpi/acpidump/acpidump.c |   31 ++++++++++++++++---------------
>  1 file changed, 16 insertions(+), 15 deletions(-)
>
> diff --git a/src/acpi/acpidump/acpidump.c b/src/acpi/acpidump/acpidump.c
> index 0537445..5f91457 100644
> --- a/src/acpi/acpidump/acpidump.c
> +++ b/src/acpi/acpidump/acpidump.c
> @@ -37,7 +37,7 @@ typedef struct fwts_acpidump_field {
>         uint8_t  bit_field_nbits;
>         uint8_t  bit_field_shift;
>         char  **strings;
> -       int   strings_len;
> +       size_t   strings_len;
>         fwts_acpidump_str_func str_func;
>  } fwts_acpidump_field;
>
> @@ -229,7 +229,7 @@ static void __acpi_dump_table_fields(fwts_framework *fw, uint8_t *data, fwts_acp
>
>  static void acpi_dump_raw_data(fwts_framework *fw, uint8_t *data, size_t length, size_t offset)
>  {
> -        int n;
> +        size_t n;
>
>          for (n = 0; n < length; n+=16) {
>                  int left = length - n;
> @@ -449,7 +449,7 @@ static void acpidump_erst(fwts_framework *fw, fwts_acpi_table_info *table)
>  {
>         uint8_t *data = (uint8_t *)table->data;
>         size_t length = table->length;
> -       int i;
> +       uint32_t i;
>
>         static char *serialization_actions[] = {
>                 "BEGIN_WRITE_OPERATION",
> @@ -519,7 +519,7 @@ static void acpidump_erst(fwts_framework *fw, fwts_acpi_table_info *table)
>                         FIELD_UINT("  Mask",            fwts_acpi_table_erst, entries[i].mask),
>                         FIELD_END
>                 };
> -               fwts_log_info_verbatum(fw, "Entry #%d", i+1);
> +               fwts_log_info_verbatum(fw, "Entry #%" PRIu32, i+1);
>                 __acpi_dump_table_fields(fw, data, entry_fields, 0);
>         }
>  }
> @@ -966,8 +966,8 @@ static void acpidump_mcfg(fwts_framework *fw, fwts_acpi_table_info *table)
>         uint8_t *data = (uint8_t *)table->data;
>         size_t length = table->length;
>         fwts_acpi_table_mcfg *mcfg = (fwts_acpi_table_mcfg*)data;
> -       int n;
> -       int i;
> +       size_t n;
> +       size_t i;
>
>         static fwts_acpidump_field fields[] = {
>                 FIELD_UINT("Base Address",      fwts_acpi_table_mcfg,   base_address),
> @@ -990,7 +990,7 @@ static void acpidump_mcfg(fwts_framework *fw, fwts_acpi_table_info *table)
>                         FIELD_UINT("  End Bus Num",     fwts_acpi_table_mcfg,   configuration[i].end_bus_number),
>                         FIELD_END
>                 };
> -               fwts_log_info_verbatum(fw, "Configuration #%d:", i+1);
> +               fwts_log_info_verbatum(fw, "Configuration #%zd:", i+1);
>                 acpi_dump_table_fields(fw, (uint8_t*)config, fields_config, 0, length);
>                 config++;
>         }
> @@ -1001,22 +1001,23 @@ static void acpidump_slit(fwts_framework *fw, fwts_acpi_table_info *table)
>         uint8_t *data = (uint8_t *)table->data;
>         size_t length = table->length;
>         fwts_acpi_table_slit *slit = (fwts_acpi_table_slit*)data;
> -       int i;
> -       int j = 0;
> -       int k = 0;
> -       int n = length - sizeof(fwts_acpi_table_slit);
> +       uint64_t j = 0;
> +       uint64_t k = 0;
> +       uint64_t n = length - sizeof(fwts_acpi_table_slit);
>         uint8_t *entry;
>
>         fwts_log_info_verbatum(fw, "# Sys Localities: 0x%" PRIx64 "(%" PRIu64 ")",
>                 slit->num_of_system_localities, slit->num_of_system_localities);
>         if (n < slit->num_of_system_localities * slit->num_of_system_localities) {
> -               fwts_log_info_verbatum(fw,"Expecting %" PRId64 " bytes, got only %d",
> +               fwts_log_info_verbatum(fw,"Expecting %" PRIu64 " bytes, got only %" PRIu64,
>                         (slit->num_of_system_localities * slit->num_of_system_localities), n);
>         }
>         else {
> +               uint64_t i;
>                 entry = data + sizeof(fwts_acpi_table_slit);
> -               for (i=0; i<n; i++) {
> -                       fwts_log_info_verbatum(fw, "Entry[%2.2d][%2.2d]: %2.2x", j, k, *entry++);
> +
> +               for (i = 0; i < n; i++) {
> +                       fwts_log_info_verbatum(fw, "Entry[%2.2" PRIu64 "][%2.2" PRIu64 "]: %2.2x", j, k, *entry++);
>                         k++;
>                         if (k >= slit->num_of_system_localities) {
>                                 k = 0;
> @@ -1291,7 +1292,7 @@ static void acpidump_dmar_device_scope(
>
>         /* Parse through multiple device scope entries */
>         while (device_scope_length > 0) {
> -               int i;
> +               unsigned int i;
>
>                 fwts_acpi_table_dmar_device_scope *device_scope_entry =
>                         (fwts_acpi_table_dmar_device_scope *)device_scope;
> --
> 1.7.10.4
>
Acked-by: Keng-Yu Lin <kengyu@canonical.com>

Patch

diff --git a/src/acpi/acpidump/acpidump.c b/src/acpi/acpidump/acpidump.c
index 0537445..5f91457 100644
--- a/src/acpi/acpidump/acpidump.c
+++ b/src/acpi/acpidump/acpidump.c
@@ -37,7 +37,7 @@  typedef struct fwts_acpidump_field {
 	uint8_t  bit_field_nbits;
 	uint8_t  bit_field_shift;
 	char  **strings;
-	int   strings_len;
+	size_t   strings_len;
 	fwts_acpidump_str_func str_func;
 } fwts_acpidump_field;
 
@@ -229,7 +229,7 @@  static void __acpi_dump_table_fields(fwts_framework *fw, uint8_t *data, fwts_acp
 
 static void acpi_dump_raw_data(fwts_framework *fw, uint8_t *data, size_t length, size_t offset)
 {
-        int n;
+        size_t n;
 
         for (n = 0; n < length; n+=16) {
                 int left = length - n;
@@ -449,7 +449,7 @@  static void acpidump_erst(fwts_framework *fw, fwts_acpi_table_info *table)
 {
 	uint8_t *data = (uint8_t *)table->data;
 	size_t length = table->length;
-	int i;
+	uint32_t i;
 
 	static char *serialization_actions[] = {
 		"BEGIN_WRITE_OPERATION",
@@ -519,7 +519,7 @@  static void acpidump_erst(fwts_framework *fw, fwts_acpi_table_info *table)
 			FIELD_UINT("  Mask", 		fwts_acpi_table_erst, entries[i].mask),
 			FIELD_END
 		};
-		fwts_log_info_verbatum(fw, "Entry #%d", i+1);
+		fwts_log_info_verbatum(fw, "Entry #%" PRIu32, i+1);
 		__acpi_dump_table_fields(fw, data, entry_fields, 0);
 	}
 }
@@ -966,8 +966,8 @@  static void acpidump_mcfg(fwts_framework *fw, fwts_acpi_table_info *table)
 	uint8_t *data = (uint8_t *)table->data;
 	size_t length = table->length;
 	fwts_acpi_table_mcfg *mcfg = (fwts_acpi_table_mcfg*)data;
-	int n;
-	int i;
+	size_t n;
+	size_t i;
 
 	static fwts_acpidump_field fields[] = {
 		FIELD_UINT("Base Address", 	fwts_acpi_table_mcfg, 	base_address),
@@ -990,7 +990,7 @@  static void acpidump_mcfg(fwts_framework *fw, fwts_acpi_table_info *table)
 			FIELD_UINT("  End Bus Num", 	fwts_acpi_table_mcfg,	configuration[i].end_bus_number),
 			FIELD_END
 		};
-		fwts_log_info_verbatum(fw, "Configuration #%d:", i+1);
+		fwts_log_info_verbatum(fw, "Configuration #%zd:", i+1);
 		acpi_dump_table_fields(fw, (uint8_t*)config, fields_config, 0, length);
 		config++;
 	}
@@ -1001,22 +1001,23 @@  static void acpidump_slit(fwts_framework *fw, fwts_acpi_table_info *table)
 	uint8_t *data = (uint8_t *)table->data;
 	size_t length = table->length;
 	fwts_acpi_table_slit *slit = (fwts_acpi_table_slit*)data;
-	int i;
-	int j = 0;
-	int k = 0;
-	int n = length - sizeof(fwts_acpi_table_slit);
+	uint64_t j = 0;
+	uint64_t k = 0;
+	uint64_t n = length - sizeof(fwts_acpi_table_slit);
 	uint8_t *entry;
 
 	fwts_log_info_verbatum(fw, "# Sys Localities: 0x%" PRIx64 "(%" PRIu64 ")",
 		slit->num_of_system_localities, slit->num_of_system_localities);
 	if (n < slit->num_of_system_localities * slit->num_of_system_localities) {
-		fwts_log_info_verbatum(fw,"Expecting %" PRId64 " bytes, got only %d",
+		fwts_log_info_verbatum(fw,"Expecting %" PRIu64 " bytes, got only %" PRIu64,
 			(slit->num_of_system_localities * slit->num_of_system_localities), n);
 	}
 	else {
+		uint64_t i;
 		entry = data + sizeof(fwts_acpi_table_slit);
-		for (i=0; i<n; i++) {
-			fwts_log_info_verbatum(fw, "Entry[%2.2d][%2.2d]: %2.2x", j, k, *entry++);
+
+		for (i = 0; i < n; i++) {
+			fwts_log_info_verbatum(fw, "Entry[%2.2" PRIu64 "][%2.2" PRIu64 "]: %2.2x", j, k, *entry++);
 			k++;
 			if (k >= slit->num_of_system_localities) {
 				k = 0;
@@ -1291,7 +1292,7 @@  static void acpidump_dmar_device_scope(
 
 	/* Parse through multiple device scope entries */
 	while (device_scope_length > 0) {
-		int i;
+		unsigned int i;
 
 		fwts_acpi_table_dmar_device_scope *device_scope_entry =
 			(fwts_acpi_table_dmar_device_scope *)device_scope;