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

(From OE-Core rev: af56e7559d31cb9cb84b85a7dedd8e12cf1f06cd)

Signed-off-by: Roy Li <rongqing.li@windriver.com>
Signed-off-by: Ross Burton <ross.burton@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
Roy Li
2014-10-15 17:21:34 +08:00
committed by Richard Purdie
parent d7cb96f28d
commit 5269dfa0e6
2 changed files with 39 additions and 0 deletions

View File

@@ -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

View 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"