[OE-core] [PATCH] nfs-utils: fix a Gcc undefined behavior
Khem Raj
raj.khem at gmail.com
Mon Oct 20 03:39:34 UTC 2014
On Wed, Oct 15, 2014 at 2:21 AM, <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
FWIW this is correct way to fix it
>
> 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"
> --
> 1.7.10.4
>
> --
> _______________________________________________
> Openembedded-core mailing list
> Openembedded-core at lists.openembedded.org
> http://lists.openembedded.org/mailman/listinfo/openembedded-core
More information about the Openembedded-core
mailing list