summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorpvalchev <pvalchev@openbsd.org>2007-06-02 01:29:11 +0000
committerpvalchev <pvalchev@openbsd.org>2007-06-02 01:29:11 +0000
commitd053892845ed7161ae9daedbd317f530a30f925e (patch)
tree15db21b15d93b8a8ed7ea081d81adb7b40592cf0
parentpf_set_rt_ifp accesses state key data, so must be called later (diff)
downloadwireguard-openbsd-d053892845ed7161ae9daedbd317f530a30f925e.tar.xz
wireguard-openbsd-d053892845ed7161ae9daedbd317f530a30f925e.zip
safer snprintf construct with more paranoid length calculation
ok millert
-rw-r--r--lib/libcurses/tinfo/comp_expand.c6
-rw-r--r--sbin/dhclient/dhclient.c8
-rw-r--r--sbin/dhclient/options.c8
-rw-r--r--sbin/isakmpd/log.c4
-rw-r--r--sbin/isakmpd/message.c4
-rw-r--r--sbin/isakmpd/sa.c4
-rw-r--r--usr.bin/infocmp/infocmp.c4
-rw-r--r--usr.sbin/cron/misc.c6
-rw-r--r--usr.sbin/ppp/ppp/log.c4
9 files changed, 26 insertions, 22 deletions
diff --git a/lib/libcurses/tinfo/comp_expand.c b/lib/libcurses/tinfo/comp_expand.c
index 0d47e83da6a..e78d365168c 100644
--- a/lib/libcurses/tinfo/comp_expand.c
+++ b/lib/libcurses/tinfo/comp_expand.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: comp_expand.c,v 1.5 2003/03/17 19:16:59 millert Exp $ */
+/* $OpenBSD: comp_expand.c,v 1.6 2007/06/02 01:29:11 pvalchev Exp $ */
/****************************************************************************
* Copyright (c) 1998,2000 Free Software Foundation, Inc. *
@@ -173,10 +173,10 @@ _nc_tic_expand
else if (REALCTL(str) && ch != '\\'
&& (!islong || isdigit(CharOf(str[1])))) {
(void) snprintf(buffer + bufp, length - bufp, "^%c", UnCtl(ch));
- bufp += 2;
+ bufp += strlen(buffer + bufp);
} else {
(void) snprintf(buffer + bufp, length - bufp, "\\%03o", ch);
- bufp += 4;
+ bufp += strlen(buffer + bufp);
}
str++;
diff --git a/sbin/dhclient/dhclient.c b/sbin/dhclient/dhclient.c
index 5e353bc64ba..c38128fce1a 100644
--- a/sbin/dhclient/dhclient.c
+++ b/sbin/dhclient/dhclient.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: dhclient.c,v 1.111 2007/02/25 18:10:43 krw Exp $ */
+/* $OpenBSD: dhclient.c,v 1.112 2007/06/02 01:29:11 pvalchev Exp $ */
/*
* Copyright 2004 Henning Brauer <henning@openbsd.org>
@@ -2088,9 +2088,11 @@ option_as_string(unsigned int code, unsigned char *data, int len)
for (; dp < data + len; dp++) {
if (!isascii(*dp) || !isprint(*dp)) {
if (dp + 1 != data + len || *dp != 0) {
+ size_t oplen;
snprintf(op, opleft, "\\%03o", *dp);
- op += 4;
- opleft -= 4;
+ oplen = strlen(op);
+ op += oplen;
+ opleft -= oplen;
}
} else if (*dp == '"' || *dp == '\'' || *dp == '$' ||
*dp == '`' || *dp == '\\') {
diff --git a/sbin/dhclient/options.c b/sbin/dhclient/options.c
index 2e3372babf2..890747d3c38 100644
--- a/sbin/dhclient/options.c
+++ b/sbin/dhclient/options.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: options.c,v 1.35 2007/05/31 23:24:15 pvalchev Exp $ */
+/* $OpenBSD: options.c,v 1.36 2007/06/02 01:29:11 pvalchev Exp $ */
/* DHCP options parsing and reassembly. */
@@ -297,10 +297,12 @@ pretty_print_option(unsigned int code, unsigned char *data, int len,
!isprint(*dp)) {
if (dp + 1 != data + len ||
*dp != 0) {
+ size_t oplen;
snprintf(op, opleft,
"\\%03o", *dp);
- op += 4;
- opleft -= 4;
+ oplen = strlen(op);
+ op += oplen;
+ opleft -= oplen;
}
} else if (*dp == '"' ||
*dp == '\'' ||
diff --git a/sbin/isakmpd/log.c b/sbin/isakmpd/log.c
index 77376d47148..c52086f5dcf 100644
--- a/sbin/isakmpd/log.c
+++ b/sbin/isakmpd/log.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: log.c,v 1.59 2006/09/19 10:48:41 otto Exp $ */
+/* $OpenBSD: log.c,v 1.60 2007/06/02 01:29:11 pvalchev Exp $ */
/* $EOM: log.c,v 1.30 2000/09/29 08:19:23 niklas Exp $ */
/*
@@ -259,7 +259,7 @@ log_debug_buf(int cls, int level, const char *header, const u_int8_t *buf,
log_debug(cls, level, "%s:", header);
for (i = j = 0; i < sz;) {
snprintf(s + j, sizeof s - j, "%02x", buf[i++]);
- j += 2;
+ j += strlen(s + j);
if (i % 4 == 0) {
if (i % 32 == 0) {
s[j] = '\0';
diff --git a/sbin/isakmpd/message.c b/sbin/isakmpd/message.c
index 1ce3900cf49..e71015d3bd8 100644
--- a/sbin/isakmpd/message.c
+++ b/sbin/isakmpd/message.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: message.c,v 1.125 2007/04/16 13:01:39 moritz Exp $ */
+/* $OpenBSD: message.c,v 1.126 2007/06/02 01:29:11 pvalchev Exp $ */
/* $EOM: message.c,v 1.156 2000/10/10 12:36:39 provos Exp $ */
/*
@@ -1931,7 +1931,7 @@ message_dump_raw(char *header, struct message *msg, int class)
for (j = 0; j < msg->iov[i].iov_len; j++) {
snprintf(p, sizeof buf - (int) (p - buf), "%02x",
((u_int8_t *) msg->iov[i].iov_base)[j]);
- p += 2;
+ p += strlen(p);
if (++k % 32 == 0) {
*p = '\0';
LOG_DBG((class, 70, "%s: %s", header, buf));
diff --git a/sbin/isakmpd/sa.c b/sbin/isakmpd/sa.c
index f8556a04a42..bf7c7b0f551 100644
--- a/sbin/isakmpd/sa.c
+++ b/sbin/isakmpd/sa.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: sa.c,v 1.111 2007/04/16 13:01:39 moritz Exp $ */
+/* $OpenBSD: sa.c,v 1.112 2007/06/02 01:29:12 pvalchev Exp $ */
/* $EOM: sa.c,v 1.112 2000/12/12 00:22:52 niklas Exp $ */
/*
@@ -463,7 +463,7 @@ report_spi(FILE *fd, const u_int8_t *buf, size_t sz, int spi)
for (i = j = 0; i < sz;) {
snprintf(s + j, sizeof s - j, "%02x", buf[i++]);
- j += 2;
+ j += strlen(s + j);
if (i % 4 == 0) {
if (i % 32 == 0) {
s[j] = '\0';
diff --git a/usr.bin/infocmp/infocmp.c b/usr.bin/infocmp/infocmp.c
index d4750f8bca3..3584b276915 100644
--- a/usr.bin/infocmp/infocmp.c
+++ b/usr.bin/infocmp/infocmp.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: infocmp.c,v 1.18 2006/12/06 04:59:58 ray Exp $ */
+/* $OpenBSD: infocmp.c,v 1.19 2007/06/02 01:29:12 pvalchev Exp $ */
/****************************************************************************
* Copyright (c) 1998,1999,2000 Free Software Foundation, Inc. *
@@ -1043,7 +1043,7 @@ dump_initializers(TERMTYPE * term)
*tp++ = *sp;
else {
(void) snprintf(tp, buf + sizeof buf - tp, "\\%03o", CharOf(*sp));
- tp += 4;
+ tp += strlen(tp);
}
}
*tp++ = '"';
diff --git a/usr.sbin/cron/misc.c b/usr.sbin/cron/misc.c
index 3ca6ade5aa9..0b6e271b74d 100644
--- a/usr.sbin/cron/misc.c
+++ b/usr.sbin/cron/misc.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: misc.c,v 1.37 2005/06/08 18:34:00 millert Exp $ */
+/* $OpenBSD: misc.c,v 1.38 2007/06/02 01:29:11 pvalchev Exp $ */
/* Copyright 1988,1990,1993,1994 by Paul Vixie
* All rights reserved
@@ -22,7 +22,7 @@
*/
#if !defined(lint) && !defined(LINT)
-static char const rcsid[] = "$OpenBSD: misc.c,v 1.37 2005/06/08 18:34:00 millert Exp $";
+static char const rcsid[] = "$OpenBSD: misc.c,v 1.38 2007/06/02 01:29:11 pvalchev Exp $";
#endif
/* vix 26jan87 [RCS has the rest of the log]
@@ -614,7 +614,7 @@ mkprint(dst, src, len)
*dst++ = '?';
} else { /* parity character */
snprintf(dst, 5, "\\%03o", ch);
- dst += 4;
+ dst += strlen(dst);
}
}
*dst = '\0';
diff --git a/usr.sbin/ppp/ppp/log.c b/usr.sbin/ppp/ppp/log.c
index 888ad8c45af..ba67f0a83b5 100644
--- a/usr.sbin/ppp/ppp/log.c
+++ b/usr.sbin/ppp/ppp/log.c
@@ -23,7 +23,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $OpenBSD: log.c,v 1.18 2005/09/21 16:28:47 brad Exp $
+ * $OpenBSD: log.c,v 1.19 2007/06/02 01:29:11 pvalchev Exp $
*/
#include <sys/types.h>
@@ -369,7 +369,7 @@ log_DumpBp(int lev, const char *hdr, const struct mbuf *bp)
snprintf(b, buf + sizeof buf - b, " %02x", (int) *ptr);
*c++ = isprint(*ptr) ? *ptr : '.';
ptr++;
- b += 3;
+ b += strlen(b);
if (b == buf + 48) {
memset(b, ' ', 2);
*c = '\0';