summaryrefslogtreecommitdiff
path: root/src/lib
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib')
-rw-r--r--src/lib/libc/string/__strsignal.c20
1 files changed, 12 insertions, 8 deletions
diff --git a/src/lib/libc/string/__strsignal.c b/src/lib/libc/string/__strsignal.c
index ebbf08d24a..09054a9517 100644
--- a/src/lib/libc/string/__strsignal.c
+++ b/src/lib/libc/string/__strsignal.c
@@ -28,7 +28,7 @@
28 */ 28 */
29 29
30#if defined(LIBC_SCCS) && !defined(lint) 30#if defined(LIBC_SCCS) && !defined(lint)
31static char *rcsid = "$OpenBSD: __strsignal.c,v 1.9 2005/03/30 20:13:52 otto Exp $"; 31static char *rcsid = "$OpenBSD: __strsignal.c,v 1.10 2005/05/01 19:39:02 tom Exp $";
32#endif /* LIBC_SCCS and not lint */ 32#endif /* LIBC_SCCS and not lint */
33 33
34#ifdef NLS 34#ifdef NLS
@@ -45,17 +45,18 @@ static char *rcsid = "$OpenBSD: __strsignal.c,v 1.9 2005/03/30 20:13:52 otto Exp
45#include <signal.h> 45#include <signal.h>
46#include <string.h> 46#include <string.h>
47 47
48static char *itoa(int num) 48static char *
49itoa(char *buffer, size_t buffer_size, unsigned int num)
49{ 50{
50 static char buffer[11]; 51 char *p = buffer + buffer_size;
51 char *p;
52 52
53 p = buffer + 4; 53 *--p = '\0';
54 while (num >= 10) { 54 while (num >= 10 && p > buffer + 1) {
55 *--p = (num % 10) + '0'; 55 *--p = (num % 10) + '0';
56 num /= 10; 56 num /= 10;
57 } 57 }
58 *p = (num % 10) + '0'; 58 /* num < 10 || p == buffer + 1 */
59 *--p = (num % 10) + '0';
59 return p; 60 return p;
60} 61}
61 62
@@ -79,12 +80,15 @@ __strsignal(int num, char *buf)
79 return((char *)sys_siglist[signum]); 80 return((char *)sys_siglist[signum]);
80#endif 81#endif
81 } else { 82 } else {
83#define MAXINTDIGS 11
84 char str[MAXINTDIGS];
85
82#ifdef NLS 86#ifdef NLS
83 strlcpy(buf, catgets(catd, 1, 0xffff, UPREFIX), NL_TEXTMAX); 87 strlcpy(buf, catgets(catd, 1, 0xffff, UPREFIX), NL_TEXTMAX);
84#else 88#else
85 strlcpy(buf, UPREFIX, NL_TEXTMAX); 89 strlcpy(buf, UPREFIX, NL_TEXTMAX);
86#endif 90#endif
87 strlcat(buf, itoa(signum), NL_TEXTMAX); 91 strlcat(buf, itoa(str, sizeof(str), signum), NL_TEXTMAX);
88 } 92 }
89 93
90#ifdef NLS 94#ifdef NLS