[oe-commits] Roy Li : nfs-utils: fix a Gcc undefined behavior

git at git.openembedded.org git at git.openembedded.org
Fri Oct 24 16:36:48 UTC 2014


Module: openembedded-core.git
Branch: master
Commit: af56e7559d31cb9cb84b85a7dedd8e12cf1f06cd
URL:    http://git.openembedded.org/?p=openembedded-core.git&a=commit;h=af56e7559d31cb9cb84b85a7dedd8e12cf1f06cd

Author: Roy Li <rongqing.li at windriver.com>
Date:   Wed Oct 15 17:21:34 2014 +0800

nfs-utils: fix a Gcc undefined behavior

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>
Signed-off-by: Ross Burton <ross.burton at intel.com>

---

 .../files/fix-a-Gcc-undefined-behavior.patch       | 38 ++++++++++++++++++++++
 .../nfs-utils/nfs-utils_1.3.0.bb                   |  1 +
 2 files changed, 39 insertions(+)

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"



More information about the Openembedded-commits mailing list