diff options
author | Theo de Raadt <deraadt@cvs.openbsd.org> | 2001-08-18 22:56:23 +0000 |
---|---|---|
committer | Theo de Raadt <deraadt@cvs.openbsd.org> | 2001-08-18 22:56:23 +0000 |
commit | c2daa7fd0984e62fe491ed5f9bbe2ae36008d266 (patch) | |
tree | cddaa91be55b85140d21394af625659ae698ab22 | |
parent | 6213d50bba5dce8b587c5197d22fc0b311b0b5df (diff) |
deal with -1 from snprintf, if it ever happens
-rw-r--r-- | lib/libc/gen/getbsize.c | 6 | ||||
-rw-r--r-- | lib/libc/gen/syslog.c | 6 |
2 files changed, 8 insertions, 4 deletions
diff --git a/lib/libc/gen/getbsize.c b/lib/libc/gen/getbsize.c index 9ecff68119c..9aae0bc636e 100644 --- a/lib/libc/gen/getbsize.c +++ b/lib/libc/gen/getbsize.c @@ -32,7 +32,7 @@ */ #if defined(LIBC_SCCS) && !defined(lint) -static char rcsid[] = "$OpenBSD: getbsize.c,v 1.6 1998/06/23 22:40:25 millert Exp $"; +static char rcsid[] = "$OpenBSD: getbsize.c,v 1.7 2001/08/18 22:56:22 deraadt Exp $"; #endif /* not lint */ #include <err.h> @@ -101,7 +101,9 @@ underflow: _warnx("%s: minimum blocksize is 512", p); blocksize = n = 512; *headerlenp = snprintf(header, sizeof(header), "%ld%s-blocks", n, form); - if (*headerlenp >= sizeof(header)) + if (*headerlenp < 0) + *headerlenp = 0; + else if (*headerlenp >= sizeof(header)) *headerlenp = sizeof(header) - 1; *blocksizep = blocksize; return (header); diff --git a/lib/libc/gen/syslog.c b/lib/libc/gen/syslog.c index b33a663e406..fa6b9511921 100644 --- a/lib/libc/gen/syslog.c +++ b/lib/libc/gen/syslog.c @@ -32,7 +32,7 @@ */ #if defined(LIBC_SCCS) && !defined(lint) -static char rcsid[] = "$OpenBSD: syslog.c,v 1.10 2001/06/27 00:58:54 lebel Exp $"; +static char rcsid[] = "$OpenBSD: syslog.c,v 1.11 2001/08/18 22:56:22 deraadt Exp $"; #endif /* LIBC_SCCS and not lint */ #include <sys/types.h> @@ -142,7 +142,9 @@ vsyslog(pri, fmt, ap) #define DEC() \ do { \ - if (prlen >= tbuf_left) \ + if (prlen < 0) \ + prlen = 0; \ + else if (prlen >= tbuf_left) \ prlen = tbuf_left - 1; \ p += prlen; \ tbuf_left -= prlen; \ |