[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