]> code.ossystems Code Review - openembedded-core.git/commitdiff
nfs-utils: fix a Gcc undefined behavior
authorRoy Li <rongqing.li@windriver.com>
Wed, 15 Oct 2014 09:21:34 +0000 (17:21 +0800)
committerRichard Purdie <richard.purdie@linuxfoundation.org>
Fri, 24 Oct 2014 16:31:56 +0000 (17:31 +0100)
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@windriver.com>
Signed-off-by: Ross Burton <ross.burton@intel.com>
meta/recipes-connectivity/nfs-utils/files/fix-a-Gcc-undefined-behavior.patch [new file with mode: 0644]
meta/recipes-connectivity/nfs-utils/nfs-utils_1.3.0.bb

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 (file)
index 0000000..5843ba0
--- /dev/null
@@ -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@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
+
index c813d7f61e51262e32268bc077a21ae8337ea302..f1ef6d9a0cab6fb14e959435f2810a152a2de74d 100644 (file)
@@ -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"