[klibc] [PATCH 6/7] strsignal(): Check snprintf() return value

maximilian attems max at stro.at
Tue Jul 5 11:06:31 PDT 2011


return NULL if snprintf() call fails.
strsignal(3) manpage seems wrong on that account.

Signed-off-by: maximilian attems <max at stro.at>
---
 usr/klibc/strsignal.c |    9 +++++++--
 1 files changed, 7 insertions(+), 2 deletions(-)

diff --git a/usr/klibc/strsignal.c b/usr/klibc/strsignal.c
index e345e9c..b89b8d0 100644
--- a/usr/klibc/strsignal.c
+++ b/usr/klibc/strsignal.c
@@ -9,18 +9,23 @@
 char *strsignal(int sig)
 {
 	static char buf[64];
+	int len;
 
 	if ((unsigned)sig < _NSIG && sys_siglist[sig])
 		return (char *)sys_siglist[sig];
 
 #ifdef SIGRTMIN
 	if (sig >= SIGRTMIN && sig <= SIGRTMAX) {
-		snprintf(buf, sizeof buf, "Real-time signal %d",
+		len = snprintf(buf, sizeof buf, "Real-time signal %d",
 			 sig - SIGRTMIN);
+		if (len >= sizeof buf)
+			return NULL;
 		return buf;
 	}
 #endif
 
-	snprintf(buf, sizeof buf, "Signal %d", sig);
+	len = snprintf(buf, sizeof buf, "Signal %d", sig);
+	if (len >= sizeof buf)
+		return NULL;
 	return buf;
 }
-- 
1.7.5.4



More information about the klibc mailing list