ACK: [PATCH 27/27] lib: fwts_acpi_tables: unconstify data and don't strcpy ACPI table ids
Alex Hung
alex.hung at canonical.com
Wed Aug 15 18:12:30 UTC 2018
On 2018-08-15 06:11 AM, Colin King wrote:
> From: Colin Ian King <colin.king at canonical.com>
>
> Although it seems a good idea to make the ACPI table data const, we
> may need to modify it when patching pointers if we make cached copies
> of the data, so unconstify it.
>
> Also, don't strncpy ACPI table IDs, instead memcpy them as they are
> not really strings with terminating zero bytes.
>
> Signed-off-by: Colin Ian King <colin.king at canonical.com>
> ---
> src/lib/include/fwts_acpi_tables.h | 2 +-
> src/lib/src/fwts_acpi_tables.c | 24 ++++++++++++------------
> 2 files changed, 13 insertions(+), 13 deletions(-)
>
> diff --git a/src/lib/include/fwts_acpi_tables.h b/src/lib/include/fwts_acpi_tables.h
> index d307af89..24a7b78a 100644
> --- a/src/lib/include/fwts_acpi_tables.h
> +++ b/src/lib/include/fwts_acpi_tables.h
> @@ -34,7 +34,7 @@ typedef enum {
>
> typedef struct {
> char name[5];
> - const void *data;
> + void *data;
> size_t length;
> uint32_t which;
> uint32_t index;
> diff --git a/src/lib/src/fwts_acpi_tables.c b/src/lib/src/fwts_acpi_tables.c
> index ccf0a7b1..b6d8fbe4 100644
> --- a/src/lib/src/fwts_acpi_tables.c
> +++ b/src/lib/src/fwts_acpi_tables.c
> @@ -228,7 +228,7 @@ static void *fwts_acpi_load_table(const off_t addr)
> */
> static void fwts_acpi_add_table(
> const char *name, /* Table Name */
> - const void *table, /* Table binary blob */
> + void *table, /* Table binary blob */
> const uint64_t addr, /* Address of table */
> const size_t length, /* Length of table */
> const fwts_acpi_table_provenance provenance)
> @@ -1006,7 +1006,7 @@ static int fwts_acpi_load_tables_fixup(fwts_framework *fw)
> fwts_log_error(fw, "Cannot allocate fake FACS.");
> return FWTS_ERROR;
> }
> - strncpy(facs->signature, "FACS", 4);
> + (void)memcpy(facs->signature, "FACS", 4);
> facs->length = size;
> facs->hardware_signature = 0xf000a200; /* Some signature */
> facs->flags = 0;
> @@ -1074,13 +1074,13 @@ static int fwts_acpi_load_tables_fixup(fwts_framework *fw)
> if (table && fwts_acpi_table_fixable(table))
> rsdt->entries[j++] = (uint32_t)table->addr;
>
> - strncpy(rsdt->header.signature, "RSDT", 4);
> + (void)memcpy(rsdt->header.signature, "RSDT", 4);
> rsdt->header.length = size;
> rsdt->header.revision = 1;
> - strncpy(rsdt->header.oem_id, "FWTSID", 6);
> - strncpy(rsdt->header.oem_tbl_id, oem_tbl_id, 8);
> + (void)memcpy(rsdt->header.oem_id, "FWTSID", 6);
> + (void)memcpy(rsdt->header.oem_tbl_id, oem_tbl_id, 8);
> rsdt->header.oem_revision = 1;
> - strncpy(rsdt->header.creator_id, "FWTS", 4);
> + (void)memcpy(rsdt->header.creator_id, "FWTS", 4);
> rsdt->header.creator_revision = 1;
> rsdt->header.checksum = 256 - fwts_checksum((uint8_t*)rsdt, size);
>
> @@ -1111,13 +1111,13 @@ static int fwts_acpi_load_tables_fixup(fwts_framework *fw)
> if (table && fwts_acpi_table_fixable(table))
> xsdt->entries[j++] = table->addr;
>
> - strncpy(xsdt->header.signature, "XSDT", 4);
> + (void)memcpy(xsdt->header.signature, "XSDT", 4);
> xsdt->header.length = size;
> xsdt->header.revision = 2;
> - strncpy(xsdt->header.oem_id, "FWTSID", 6);
> - strncpy(xsdt->header.oem_tbl_id, oem_tbl_id, 8);
> + (void)memcpy(xsdt->header.oem_id, "FWTSID", 6);
> + (void)memcpy(xsdt->header.oem_tbl_id, oem_tbl_id, 8);
> xsdt->header.oem_revision = 1;
> - strncpy(xsdt->header.creator_id, "FWTS", 4);
> + (void)memcpy(xsdt->header.creator_id, "FWTS", 4);
> xsdt->header.creator_revision = 1;
> xsdt->header.checksum = 256 - fwts_checksum((uint8_t*)xsdt, size);
>
> @@ -1139,8 +1139,8 @@ static int fwts_acpi_load_tables_fixup(fwts_framework *fw)
> return FWTS_ERROR;
> }
>
> - strncpy(rsdp->signature, "RSD PTR ", 8);
> - strncpy(rsdp->oem_id, "FWTSID", 6);
> + (void)memcpy(rsdp->signature, "RSD PTR ", 8);
> + (void)memcpy(rsdp->oem_id, "FWTSID", 6);
> rsdp->revision = 2;
> rsdp->length = sizeof(fwts_acpi_table_rsdp);
> rsdp->reserved[0] = 0;
>
Acked-by: Alex Hung <alex.hung at canonical.com>
More information about the fwts-devel
mailing list