From 4376e752c822444f1a26b5e1e974ddd7104ae15c Mon Sep 17 00:00:00 2001
From: Jiri Pirko <jiri@resnulli.us>
Date: Wed, 18 Dec 2013 13:26:49 +0100
Subject: [patch] libndp: fix [cppcheck] Undefined behavior: Variable 'buf' is
used as parameter and destination in s[n]printf()
cppcheck --enable=all --inconclusive --std=posix .
ndp_msg_opt_dnssl_domain():
if (dom_len > len)
return NULL;
if (strlen(buf))
----> sprintf(buf, "%s.", buf);
buf[strlen(buf) + dom_len] = '\0';
memcpy(buf + strlen(buf), ptr, dom_len);
So just use strcat instead.
Reported-by: Dan Williams <dcbw@redhat.com>
Signed-off-by: Jiri Pirko <jiri@resnulli.us>
---
libndp/libndp.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/libndp/libndp.c b/libndp/libndp.c
index 0bc3fe3..e510e2e 100644
--- a/libndp/libndp.c
+++ b/libndp/libndp.c
@@ -1540,7 +1540,7 @@ char *ndp_msg_opt_dnssl_domain(struct ndp_msg *msg, int offset,
return NULL;
if (strlen(buf))
- sprintf(buf, "%s.", buf);
+ strcat(buf, ".");
buf[strlen(buf) + dom_len] = '\0';
memcpy(buf + strlen(buf), ptr, dom_len);
ptr += dom_len;
--
1.8.4.2