diff options
| author | 2002-06-11 18:12:11 +0000 | |
|---|---|---|
| committer | 2002-06-11 18:12:11 +0000 | |
| commit | 3db910db280f40b7508b4acbf3bd10a895d38d9b (patch) | |
| tree | 911075fcadcf352b1a92dc0ab3c1ab8762041415 /usr.sbin/tcpdump/print-ike.c | |
| parent | turn on pf21 (diff) | |
| download | wireguard-openbsd-3db910db280f40b7508b4acbf3bd10a895d38d9b.tar.xz wireguard-openbsd-3db910db280f40b7508b4acbf3bd10a895d38d9b.zip | |
Don't assume 32bit SPI/CPI numbers.
Diffstat (limited to 'usr.sbin/tcpdump/print-ike.c')
| -rw-r--r-- | usr.sbin/tcpdump/print-ike.c | 18 |
1 files changed, 10 insertions, 8 deletions
diff --git a/usr.sbin/tcpdump/print-ike.c b/usr.sbin/tcpdump/print-ike.c index 9a862688dd8..1842fe3261b 100644 --- a/usr.sbin/tcpdump/print-ike.c +++ b/usr.sbin/tcpdump/print-ike.c @@ -1,4 +1,4 @@ -/* $OpenBSD: print-ike.c,v 1.11 2002/06/11 17:05:13 ho Exp $ */ +/* $OpenBSD: print-ike.c,v 1.12 2002/06/11 18:12:11 ho Exp $ */ /* * Copyright (c) 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999 @@ -29,7 +29,7 @@ #ifndef lint static const char rcsid[] = - "@(#) $Header: /home/cvs/src/usr.sbin/tcpdump/print-ike.c,v 1.11 2002/06/11 17:05:13 ho Exp $ (XXX)"; + "@(#) $Header: /home/cvs/src/usr.sbin/tcpdump/print-ike.c,v 1.12 2002/06/11 18:12:11 ho Exp $ (XXX)"; #endif #include <sys/param.h> @@ -343,23 +343,25 @@ ike_pl_transform_print (u_char *buf, int len, u_char doi) void ike_pl_proposal_print (u_char *buf, int len, u_char doi) { + u_int8_t i, spisz = buf[2]; + printf(" proposal: %d proto: %s spisz: %d xforms: %d", buf[0], (buf[1] < (sizeof ike / sizeof ike[0]) ? ike[buf[1]] : - "(unknown)"), buf[2], buf[3]); + "(unknown)"), spisz, buf[3]); /* We need to store this for upcoming ike_attribute_print call. */ xform_proto = buf[1]; - if (buf[2]) { - /* XXX it is possible that spisz may be != 4 ... */ - printf(" SPI: 0x%08x", - buf[4]<<24 | buf[5]<<16 | buf[6]<<8 | buf[7]); + if (spisz) { + printf(" SPI: 0x"); + for (i = 0; i < spisz && (i + 4) < len; i++) + printf ("%02x", buf[i + 4]); doi = IPSEC_DOI; } else doi = ISAKMP_DOI; if ((char)buf[3] > 0) - ike_pl_print(PAYLOAD_TRANSFORM, buf+4+buf[2], doi); + ike_pl_print(PAYLOAD_TRANSFORM, buf + 4 + buf[2], doi); } void |
