<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
<body text="#000000" bgcolor="#FFFFFF">
<p><br>
</p>
<br>
<div class="moz-cite-prefix">On 08/15/2018 09:11 PM, Colin King
wrote:<br>
</div>
<blockquote type="cite"
cite="mid:20180815131129.24146-28-colin.king@canonical.com">
<pre wrap="">From: Colin Ian King <a class="moz-txt-link-rfc2396E" href="mailto:colin.king@canonical.com"><colin.king@canonical.com></a>
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 <a class="moz-txt-link-rfc2396E" href="mailto:colin.king@canonical.com"><colin.king@canonical.com></a>
---
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;
</pre>
</blockquote>
<br>
Acked-by: Ivan Hu <a class="moz-txt-link-rfc2396E"
href="mailto:ivan.hu@canonical.com"><ivan.hu@canonical.com></a>
</body>
</html>