From: Alex Williamson <alex.williamson@hp.com>
To: Keir Fraser <Keir.Fraser@cl.cam.ac.uk>
Cc: Aron Griffis <aron@hp.com>,
Christoph Egger <Christoph.Egger@amd.com>,
xen-devel@lists.xensource.com,
xen-ia64-devel@lists.xensource.com
Subject: Re: [PATCH] Clean up and fix errors in strncpy -> strlcpy conversion
Date: Tue, 30 Jan 2007 10:29:48 -0700 [thread overview]
Message-ID: <1170178188.10792.107.camel@bling> (raw)
In-Reply-To: <C1E518E7.8156%Keir.Fraser@cl.cam.ac.uk>
Sorry, but this is still wrong. Some of these fields we're filling
completely, and tagging a NUL at the end just doesn't work. I suggest
replacing all the safe_strcpy()s with memcpy()s. Patch below. Thanks,
Alex
Signed-off-by: Alex Williamson <alex.williamson@hp.com>
---
diff -r b4121f051773 xen/arch/ia64/xen/dom_fw.c
--- a/xen/arch/ia64/xen/dom_fw.c Tue Jan 30 09:11:31 2007 -0700
+++ b/xen/arch/ia64/xen/dom_fw.c Tue Jan 30 10:18:14 2007 -0700
@@ -337,9 +337,9 @@ dom_fw_fake_acpi(struct domain *d, struc
/* XSDT points to both the FADT and the MADT, so add one entry */
xsdt->length = sizeof(struct xsdt_descriptor_rev2) + sizeof(u64);
xsdt->revision = 1;
- safe_strcpy(xsdt->oem_id, "XEN");
- safe_strcpy(xsdt->oem_table_id, "Xen/ia64");
- safe_strcpy(xsdt->asl_compiler_id, "XEN");
+ memcpy(xsdt->oem_id, "XEN", 3);
+ memcpy(xsdt->oem_table_id, "Xen/ia64", 8);
+ memcpy(xsdt->asl_compiler_id, "XEN", 3);
xsdt->asl_compiler_revision = (xen_major_version() << 16) |
xen_minor_version();
@@ -352,9 +352,9 @@ dom_fw_fake_acpi(struct domain *d, struc
memcpy(fadt->signature, FADT_SIG, sizeof(fadt->signature));
fadt->length = sizeof(struct fadt_descriptor_rev2);
fadt->revision = FADT2_REVISION_ID;
- safe_strcpy(fadt->oem_id, "XEN");
- safe_strcpy(fadt->oem_table_id, "Xen/ia64");
- safe_strcpy(fadt->asl_compiler_id, "XEN");
+ memcpy(fadt->oem_id, "XEN", 3);
+ memcpy(fadt->oem_table_id, "Xen/ia64", 8);
+ memcpy(fadt->asl_compiler_id, "XEN", 3);
fadt->asl_compiler_revision = (xen_major_version() << 16) |
xen_minor_version();
@@ -386,8 +386,8 @@ dom_fw_fake_acpi(struct domain *d, struc
fadt->checksum = generate_acpi_checksum(fadt, fadt->length);
/* setup RSDP */
- safe_strcpy(rsdp->signature, RSDP_SIG);
- safe_strcpy(rsdp->oem_id, "XEN");
+ memcpy(rsdp->signature, RSDP_SIG, strlen(RSDP_SIG));
+ memcpy(rsdp->oem_id, "XEN", 3);
rsdp->revision = 2; /* ACPI 2.0 includes XSDT */
rsdp->length = sizeof(struct acpi20_table_rsdp);
rsdp->xsdt_address = ACPI_TABLE_MPA(xsdt);
@@ -397,11 +397,11 @@ dom_fw_fake_acpi(struct domain *d, struc
rsdp->ext_checksum = generate_acpi_checksum(rsdp, rsdp->length);
/* setup DSDT with trivial namespace. */
- safe_strcpy(dsdt->signature, DSDT_SIG);
+ memcpy(dsdt->signature, DSDT_SIG, strlen(DSDT_SIG));
dsdt->revision = 1;
- safe_strcpy(dsdt->oem_id, "XEN");
- safe_strcpy(dsdt->oem_table_id, "Xen/ia64");
- safe_strcpy(dsdt->asl_compiler_id, "XEN");
+ memcpy(dsdt->oem_id, "XEN", 3);
+ memcpy(dsdt->oem_table_id, "Xen/ia64", 8);
+ memcpy(dsdt->asl_compiler_id, "XEN", 3);
dsdt->asl_compiler_revision = (xen_major_version() << 16) |
xen_minor_version();
@@ -439,9 +439,9 @@ dom_fw_fake_acpi(struct domain *d, struc
/* setup MADT */
memcpy(madt->header.signature, APIC_SIG, sizeof(madt->header.signature));
madt->header.revision = 2;
- safe_strcpy(madt->header.oem_id, "XEN");
- safe_strcpy(madt->header.oem_table_id, "Xen/ia64");
- safe_strcpy(madt->header.asl_compiler_id, "XEN");
+ memcpy(madt->header.oem_id, "XEN", 3);
+ memcpy(madt->header.oem_table_id, "Xen/ia64", 8);
+ memcpy(madt->header.asl_compiler_id, "XEN", 3);
madt->header.asl_compiler_revision = (xen_major_version() << 16) |
xen_minor_version();
@@ -760,8 +760,8 @@ dom_fw_init(struct domain *d,
tables->sal_systab.sal_rev_major = 0;
tables->sal_systab.entry_count = 2;
- safe_strcpy((char *)tables->sal_systab.oem_id, "Xen/ia64");
- safe_strcpy((char *)tables->sal_systab.product_id, "Xen/ia64");
+ memcpy((char *)tables->sal_systab.oem_id, "Xen/ia64", 8);
+ memcpy((char *)tables->sal_systab.product_id, "Xen/ia64", 8);
/* PAL entry point: */
tables->sal_ed.type = SAL_DESC_ENTRY_POINT;
next prev parent reply other threads:[~2007-01-30 17:29 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-01-30 1:10 [PATCH] Clean up and fix errors in strncpy -> strlcpy conversion Aron Griffis
2007-01-30 8:23 ` Christoph Egger
2007-01-30 9:32 ` Keir Fraser
2007-01-30 13:47 ` Aron Griffis
2007-01-30 14:01 ` Christoph Egger
2007-01-30 15:26 ` Christoph Egger
2007-01-30 15:46 ` Keir Fraser
2007-01-30 17:29 ` Alex Williamson [this message]
2007-01-30 17:37 ` Keir Fraser
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1170178188.10792.107.camel@bling \
--to=alex.williamson@hp.com \
--cc=Christoph.Egger@amd.com \
--cc=Keir.Fraser@cl.cam.ac.uk \
--cc=aron@hp.com \
--cc=xen-devel@lists.xensource.com \
--cc=xen-ia64-devel@lists.xensource.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.