[OE-core] [PATCH] nfs-utils: fix a Gcc undefined behavior

Rongqing Li rongqing.li at windriver.com
Mon Oct 20 03:22:56 UTC 2014


ping

-R

On 10/15/2014 05:21 PM, rongqing.li at windriver.com wrote:
> From: Roy Li <rongqing.li at windriver.com>
>
> Calling strncpy with NULL second argument, even when the size is 0,
> is undefined behavior, which leads to GCC to drop the check old
> variable with NULL in following code.
>
> https://bugzilla.yoctoproject.org/show_bug.cgi?id=6743
>
> Signed-off-by: Roy Li <rongqing.li at windriver.com>
> ---
>   .../files/fix-a-Gcc-undefined-behavior.patch       |   38 ++++++++++++++++++++
>   .../nfs-utils/nfs-utils_1.3.0.bb                   |    1 +
>   2 files changed, 39 insertions(+)
>   create mode 100644 meta/recipes-connectivity/nfs-utils/files/fix-a-Gcc-undefined-behavior.patch
>
> diff --git a/meta/recipes-connectivity/nfs-utils/files/fix-a-Gcc-undefined-behavior.patch b/meta/recipes-connectivity/nfs-utils/files/fix-a-Gcc-undefined-behavior.patch
> new file mode 100644
> index 0000000..5843ba0
> --- /dev/null
> +++ b/meta/recipes-connectivity/nfs-utils/files/fix-a-Gcc-undefined-behavior.patch
> @@ -0,0 +1,38 @@
> +[PATCH] fix a Gcc undefined behavior
> +
> +Upstream-Status: Pending
> +
> +Calling strncpy with NULL second argument, even when the size is 0,
> +is undefined behavior, which leads to GCC to drop the check old
> +variable with NULL in following code.
> +
> +https://bugzilla.yoctoproject.org/show_bug.cgi?id=6743
> +
> +Signed-off-by: Roy Li <rongqing.li at windriver.com>
> +---
> + support/export/client.c |    9 +++++++--
> + 1 file changed, 7 insertions(+), 2 deletions(-)
> +
> +diff --git a/support/export/client.c b/support/export/client.c
> +index dbf47b9..a37ef69 100644
> +--- a/support/export/client.c
> ++++ b/support/export/client.c
> +@@ -482,8 +482,13 @@ add_name(char *old, const char *add)
> + 		else
> + 			cp = cp + strlen(cp);
> + 	}
> +-	strncpy(new, old, cp-old);
> +-	new[cp-old] = 0;
> ++
> ++	if (old) {
> ++		strncpy(new, old, cp-old);
> ++		new[cp-old] = 0;
> ++	} else
> ++		new[0] = 0;
> ++	
> + 	if (cp != old && !*cp)
> + 		strcat(new, ",");
> + 	strcat(new, add);
> +--
> +1.7.10.4
> +
> diff --git a/meta/recipes-connectivity/nfs-utils/nfs-utils_1.3.0.bb b/meta/recipes-connectivity/nfs-utils/nfs-utils_1.3.0.bb
> index c813d7f..f1ef6d9 100644
> --- a/meta/recipes-connectivity/nfs-utils/nfs-utils_1.3.0.bb
> +++ b/meta/recipes-connectivity/nfs-utils/nfs-utils_1.3.0.bb
> @@ -31,6 +31,7 @@ SRC_URI = "${KERNELORG_MIRROR}/linux/utils/nfs-utils/${PV}/nfs-utils-${PV}.tar.x
>              file://nfs-statd.service \
>              file://nfs-utils-Do-not-pass-CFLAGS-to-gcc-while-building.patch \
>              file://0001-statd-fixed-the-with-statdpath-flag.patch \
> +           file://fix-a-Gcc-undefined-behavior.patch \
>   "
>
>   SRC_URI[md5sum] = "6e93a7997ca3a1eac56bf219adab72a8"
>

-- 
Best Reagrds,
Roy | RongQing Li



More information about the Openembedded-core mailing list