WARNING - OLD ARCHIVES

This is an archived copy of the Xen.org mailing list, which we have preserved to ensure that existing links to archives are not broken. The live archive, which contains the latest emails, can be found at http://lists.xen.org/
Xen

xen-devel

[Top] [All Lists]

[Xen-devel] Re: [Xen-staging] [xen-unstable] ia64 and ppc: Remove uses o

To: Christoph Egger <Christoph.Egger@xxxxxxx>
Subject: [Xen-devel] Re: [Xen-staging] [xen-unstable] ia64 and ppc: Remove uses of strcpy and strncpy.
From: Aron Griffis <aron@xxxxxx>
Date: 2007年1月29日 18:47:58 -0500
Cc: xen-devel@xxxxxxxxxxxxxxxxxxx
Delivery-date: 2007年1月29日 15:42:44 -0800
Envelope-to: www-data@xxxxxxxxxxxxxxxxxx
In-reply-to: <200701291502.l0TF2Md1000372@xxxxxxxxxxxxxxxxxxxxxxx>
List-help: <mailto:xen-devel-request@lists.xensource.com?subject=help>
List-id: Xen developer discussion <xen-devel.lists.xensource.com>
List-post: <mailto:xen-devel@lists.xensource.com>
List-subscribe: <http://lists.xensource.com/cgi-bin/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=subscribe>
List-unsubscribe: <http://lists.xensource.com/cgi-bin/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=unsubscribe>
Mail-followup-to: Christoph Egger <Christoph.Egger@xxxxxxx>, xen-devel@xxxxxxxxxxxxxxxxxxx
References: <200701291502.l0TF2Md1000372@xxxxxxxxxxxxxxxxxxxxxxx>
Sender: xen-devel-bounces@xxxxxxxxxxxxxxxxxxx
User-agent: Mutt/1.5.13 (2006年08月11日)
Hi Christoph,
Was this patch floated on xen-devel and/or xen-ia64-devel? I'm having
trouble finding it, and I think I'm seeing some problems in it, see
below.
Aron
Xen staging patchbot-unstable wrote: [Mon Jan 29 2007, 10:02:21AM EST]
> # HG changeset patch
> # User kfraser@xxxxxxxxxxxxxxxxxxxxx
> # Date 1170082893 0
> # Node ID d2784d93e760ad96ab25cb7cacee491177708ce0
> # Parent bef7fbe25a9f380d40623795befacd447b026837
> ia64 and ppc: Remove uses of strcpy and strncpy.
> Signed-off-by: Christoph Egger <Christoph.Egger@xxxxxxx>
> ---
> xen/arch/ia64/linux-xen/setup.c | 5 +--
> xen/arch/ia64/xen/dom_fw.c | 49 
> +++++++++++++++++++----------------
> xen/arch/ia64/xen/domain.c | 3 --
> xen/arch/ia64/xen/gdbstub.c | 2 -
> xen/arch/ia64/xen/oprofile/perfmon.c | 2 -
> xen/arch/powerpc/domain_build.c | 2 -
> xen/arch/powerpc/of-devtree.c | 3 --
> xen/arch/powerpc/ofd_fixup.c | 2 -
> 8 files changed, 35 insertions(+), 33 deletions(-)
>
> diff -r bef7fbe25a9f -r d2784d93e760 xen/arch/ia64/linux-xen/setup.c
> --- a/xen/arch/ia64/linux-xen/setup.c Mon Jan 29 14:59:42 2007 +0000
> +++ b/xen/arch/ia64/linux-xen/setup.c Mon Jan 29 15:01:33 2007 +0000
> @@ -424,8 +424,7 @@ setup_arch (char **cmdline_p)
> else
> len = strlen (mvec_name);
> len = min(len, sizeof (str) - 1);
> - strncpy (str, mvec_name, len);
> - str[len] = '0円';
> + strlcpy (str, mvec_name, len);
> mvec_name = str;
> } else
> mvec_name = acpi_get_sysname();
> @@ -564,7 +563,7 @@ show_cpuinfo (struct seq_file *m, void *
> *cp++ = sep;
> sep = ',';
> *cp++ = ' ';
> - strcpy(cp, feature_bits[i].feature_name);
> + strlcpy(cp, feature_bits[i].feature_name, 
> sizeof(features));
> cp += strlen(feature_bits[i].feature_name);
> mask &= ~feature_bits[i].mask;
> }
> diff -r bef7fbe25a9f -r d2784d93e760 xen/arch/ia64/xen/dom_fw.c
> --- a/xen/arch/ia64/xen/dom_fw.c Mon Jan 29 14:59:42 2007 +0000
> +++ b/xen/arch/ia64/xen/dom_fw.c Mon Jan 29 15:01:33 2007 +0000
> @@ -333,13 +333,13 @@ dom_fw_fake_acpi(struct domain *d, struc
> memset(tables, 0, sizeof(struct fake_acpi_tables));
>
> /* setup XSDT (64bit version of RSDT) */
> - strncpy(xsdt->signature, XSDT_SIG, 4);
> + strlcpy(xsdt->signature, XSDT_SIG, sizeof(xsdt->signature));
Since xsdt->signature is 4 bytes, strncpy() worked fine and
appropriately left off the trailing NUL. Switching to strlcpy()
forces the NUL onto the end, truncating the content to 3 bytes.
> /* 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;
> - strcpy(xsdt->oem_id, "XEN");
> - strcpy(xsdt->oem_table_id, "Xen/ia64");
> - strcpy(xsdt->asl_compiler_id, "XEN");
> + strlcpy(xsdt->oem_id, "XEN", sizeof(xsdt->oem_id));
> + strlcpy(xsdt->oem_table_id, "Xen/ia64", sizeof(xsdt->oem_table_id));
> + strlcpy(xsdt->asl_compiler_id, "XEN", sizeof(xsdt->asl_compiler_id));
> xsdt->asl_compiler_revision = (xen_major_version() << 16) |
> xen_minor_version();
>
> @@ -349,16 +349,16 @@ dom_fw_fake_acpi(struct domain *d, struc
> xsdt->checksum = generate_acpi_checksum(xsdt, xsdt->length);
>
> /* setup FADT */
> - strncpy(fadt->signature, FADT_SIG, 4);
> + strlcpy(fadt->signature, FADT_SIG, sizeof(fadt->signature));
again
> fadt->length = sizeof(struct fadt_descriptor_rev2);
> fadt->revision = FADT2_REVISION_ID;
> - strcpy(fadt->oem_id, "XEN");
> - strcpy(fadt->oem_table_id, "Xen/ia64");
> - strcpy(fadt->asl_compiler_id, "XEN");
> + strlcpy(fadt->oem_id, "XEN", sizeof(fadt->oem_id));
> + strlcpy(fadt->oem_table_id, "Xen/ia64", sizeof(fadt->oem_table_id));
> + strlcpy(fadt->asl_compiler_id, "XEN", sizeof(fadt->asl_compiler_id));
> fadt->asl_compiler_revision = (xen_major_version() << 16) |
> xen_minor_version();
>
> - strncpy(facs->signature, FACS_SIG, 4);
> + strlcpy(facs->signature, FACS_SIG, sizeof(facs->signature));
again
> facs->version = 1;
> facs->length = sizeof(struct facs_descriptor_rev2);
>
> @@ -386,8 +386,8 @@ dom_fw_fake_acpi(struct domain *d, struc
> fadt->checksum = generate_acpi_checksum(fadt, fadt->length);
>
> /* setup RSDP */
> - strncpy(rsdp->signature, RSDP_SIG, 8);
> - strcpy(rsdp->oem_id, "XEN");
> + strlcpy(rsdp->signature, RSDP_SIG, sizeof(rsdp->signature));
again
> + strlcpy(rsdp->oem_id, "XEN", sizeof(rsdp->oem_id));
> 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. */ 
> - strncpy(dsdt->signature, DSDT_SIG, 4);
> + strlcpy(dsdt->signature, DSDT_SIG, sizeof(dsdt->signature));
again
> dsdt->revision = 1;
> - strcpy(dsdt->oem_id, "XEN");
> - strcpy(dsdt->oem_table_id, "Xen/ia64");
> - strcpy(dsdt->asl_compiler_id, "XEN");
> + strlcpy(dsdt->oem_id, "XEN", sizeof(dsdt->oem_id));
> + strlcpy(dsdt->oem_table_id, "Xen/ia64", sizeof(dsdt->oem_table_id));
> + strlcpy(dsdt->asl_compiler_id, "XEN", sizeof(dsdt->asl_compiler_id));
> dsdt->asl_compiler_revision = (xen_major_version() << 16) |
> xen_minor_version();
>
> @@ -409,7 +409,7 @@ dom_fw_fake_acpi(struct domain *d, struc
> tables->aml[0] = 0x10; /* Scope */
> tables->aml[1] = 0x40; /* length/offset to next object (patched) */
> tables->aml[2] = 0x00;
> - strncpy((char *)&tables->aml[3], "_SB_", 4);
> + strlcpy((char *)&tables->aml[3], "_SB_", 5);
again
> /* The processor object isn't absolutely necessary, revist for SMP */
> aml_len = 7;
> @@ -437,11 +437,14 @@ dom_fw_fake_acpi(struct domain *d, struc
> dsdt->checksum = generate_acpi_checksum(dsdt, dsdt->length);
>
> /* setup MADT */
> - strncpy(madt->header.signature, APIC_SIG, 4);
> + strlcpy(madt->header.signature, APIC_SIG, 
> sizeof(madt->header.signature));
again
> madt->header.revision = 2;
> - strcpy(madt->header.oem_id, "XEN");
> - strcpy(madt->header.oem_table_id, "Xen/ia64");
> - strcpy(madt->header.asl_compiler_id, "XEN");
> + strlcpy(madt->header.oem_id, "XEN",
> + sizeof(madt->header.oem_id));
> + strlcpy(madt->header.oem_table_id, "Xen/ia64",
> + sizeof(madt->header.oem_table_id));
> + strlcpy(madt->header.asl_compiler_id, "XEN",
> + sizeof(madt->header.asl_compiler_id));
> madt->header.asl_compiler_revision = (xen_major_version() << 16) |
> xen_minor_version();
>
> @@ -760,8 +763,10 @@ dom_fw_init(struct domain *d,
> tables->sal_systab.sal_rev_major = 0;
> tables->sal_systab.entry_count = 2;
>
> - strcpy((char *)tables->sal_systab.oem_id, "Xen/ia64");
> - strcpy((char *)tables->sal_systab.product_id, "Xen/ia64");
> + strlcpy((char *)tables->sal_systab.oem_id, "Xen/ia64",
> + sizeof(tables->sal_systab.oem_id));
> + strlcpy((char *)tables->sal_systab.product_id, "Xen/ia64",
> + sizeof(tables->sal_systab.product_id));
>
> /* PAL entry point: */
> tables->sal_ed.type = SAL_DESC_ENTRY_POINT;
> diff -r bef7fbe25a9f -r d2784d93e760 xen/arch/ia64/xen/domain.c
> --- a/xen/arch/ia64/xen/domain.c Mon Jan 29 14:59:42 2007 +0000
> +++ b/xen/arch/ia64/xen/domain.c Mon Jan 29 15:01:33 2007 +0000
> @@ -1148,8 +1148,7 @@ int construct_dom0(struct domain *d,
> dom_fw_setup(d, bp_mpa, max_pages * PAGE_SIZE);
>
> /* Fill boot param. */
> - strncpy((char *)si->cmd_line, dom0_command_line, sizeof(si->cmd_line));
> - si->cmd_line[sizeof(si->cmd_line)-1] = 0;
> + strlcpy((char *)si->cmd_line, dom0_command_line, sizeof(si->cmd_line));
>
> bp = (struct ia64_boot_param *)((unsigned char *)si +
> sizeof(start_info_t));
> diff -r bef7fbe25a9f -r d2784d93e760 xen/arch/ia64/xen/gdbstub.c
> --- a/xen/arch/ia64/xen/gdbstub.c Mon Jan 29 14:59:42 2007 +0000
> +++ b/xen/arch/ia64/xen/gdbstub.c Mon Jan 29 15:01:33 2007 +0000
> @@ -639,7 +639,7 @@ kgdb_get_reg(int regnum, struct unw_fram
> outbuffer[size*2] = 0;
> }
> else
> - strcpy(outbuffer, "E0");
> + strlcpy(outbuffer, "E0", sizeof("E0"));
>
> return;
> #else
> diff -r bef7fbe25a9f -r d2784d93e760 xen/arch/ia64/xen/oprofile/perfmon.c
> --- a/xen/arch/ia64/xen/oprofile/perfmon.c Mon Jan 29 14:59:42 2007 +0000
> +++ b/xen/arch/ia64/xen/oprofile/perfmon.c Mon Jan 29 15:01:33 2007 +0000
> @@ -119,7 +119,7 @@ xenoprof_arch_init(int *num_events, int 
> xenoprof_arch_init(int *num_events, int *is_primary, char *cpu_type)
> {
> *num_events = 0;
> - strncpy(cpu_type, get_cpu_type(), XENOPROF_CPU_TYPE_SIZE - 1);
> + strlcpy(cpu_type, get_cpu_type(), XENOPROF_CPU_TYPE_SIZE);
> cpu_type[XENOPROF_CPU_TYPE_SIZE - 1] = '0円';
This extra NUL is not needed with strlcpy
> *is_primary = 0;
> diff -r bef7fbe25a9f -r d2784d93e760 xen/arch/powerpc/domain_build.c
> --- a/xen/arch/powerpc/domain_build.c Mon Jan 29 14:59:42 2007 +0000
> +++ b/xen/arch/powerpc/domain_build.c Mon Jan 29 15:01:33 2007 +0000
> @@ -290,7 +290,7 @@ int construct_dom0(struct domain *d,
>
> memset(si->cmd_line, 0, sizeof(si->cmd_line));
> if ( cmdline != NULL )
> - strncpy((char *)si->cmd_line, cmdline, sizeof(si->cmd_line)-1);
> + strlcpy((char *)si->cmd_line, cmdline, sizeof(si->cmd_line));
>
> v->arch.ctxt.msr = msr;
> v->arch.ctxt.pc = pc;
> diff -r bef7fbe25a9f -r d2784d93e760 xen/arch/powerpc/of-devtree.c
> --- a/xen/arch/powerpc/of-devtree.c Mon Jan 29 14:59:42 2007 +0000
> +++ b/xen/arch/powerpc/of-devtree.c Mon Jan 29 15:01:33 2007 +0000
> @@ -358,8 +358,7 @@ static ofdn_t ofd_node_create(
> n->on_io = 0;
> n->on_pathlen = pathlen;
> n->on_last = ofd_pathsplit_left(path, '/', pathlen);
> - strncpy(n->on_path, path, pathlen);
> - n->on_path[n->on_pathlen] = 0;
> + strlcpy(n->on_path, path, pathlen);
>
> return pos;
> }
> diff -r bef7fbe25a9f -r d2784d93e760 xen/arch/powerpc/ofd_fixup.c
> --- a/xen/arch/powerpc/ofd_fixup.c Mon Jan 29 14:59:42 2007 +0000
> +++ b/xen/arch/powerpc/ofd_fixup.c Mon Jan 29 15:01:33 2007 +0000
> @@ -267,7 +267,7 @@ static ofdn_t ofd_chosen_props(void *m, 
> &path[1], sizeof (path) - 1);
> }
>
> - strcpy(bootargs, cmdline);
> + strlcpy(bootargs, cmdline, sizeof(bootargs));
> bsz = strlen(bootargs) + 1;
> rm = sizeof (bootargs) - bsz;
>
>
> _______________________________________________
> Xen-staging mailing list
> Xen-staging@xxxxxxxxxxxxxxxxxxx
> http://lists.xensource.com/xen-staging 
>
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel
<Prev in Thread] Current Thread [Next in Thread>
Previous by Date: RE: [Xen-devel] x86_64 build break in rombios , Puthiyaparambil, Aravindh
Next by Date: [Xen-devel] Re: [Xen-staging] [xen-unstable] ia64 and ppc: Remove uses of strcpy and strncpy. , Aron Griffis
Previous by Thread: [Xen-devel] Compiling Xen with newer version of kernel? , cm ko
Next by Thread: [Xen-devel] Re: [Xen-staging] [xen-unstable] ia64 and ppc: Remove uses of strcpy and strncpy. , Christoph Egger
Indexes: [Date] [Thread] [Top] [All Lists]

Copyright ©, Citrix Systems Inc. All rights reserved. Legal and Privacy
Citrix This site is hosted by Citrix

AltStyle によって変換されたページ (->オリジナル) /