diff options
author | 2005-06-14 17:57:21 +0000 | |
---|---|---|
committer | 2005-06-14 17:57:21 +0000 | |
commit | 9cb0e842078a769a228f588c87fe1d484f78af83 (patch) | |
tree | bc070079ef0b13327277c7d89533437c25bffffa | |
parent | - catch up to recent pf changes (diff) | |
download | wireguard-openbsd-9cb0e842078a769a228f588c87fe1d484f78af83.tar.xz wireguard-openbsd-9cb0e842078a769a228f588c87fe1d484f78af83.zip |
add missing error check for decode_prefix4. ok deraadt@
-rw-r--r-- | usr.sbin/tcpdump/print-bgp.c | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/usr.sbin/tcpdump/print-bgp.c b/usr.sbin/tcpdump/print-bgp.c index 5c36d79a3fc..0f9a30a5bf0 100644 --- a/usr.sbin/tcpdump/print-bgp.c +++ b/usr.sbin/tcpdump/print-bgp.c @@ -1,4 +1,4 @@ -/* $OpenBSD: print-bgp.c,v 1.5 2005/04/27 23:03:01 cloder Exp $ */ +/* $OpenBSD: print-bgp.c,v 1.6 2005/06/14 17:57:21 moritz Exp $ */ /* * Copyright (C) 1999 WIDE Project. @@ -609,6 +609,7 @@ bgp_update_print(const u_char *dat, int length) printf(" (Withdrawn routes: %d bytes)", len); #else char buf[MAXHOSTNAMELEN + 100]; + int wpfx; TCHECK2(p[2], len); i = 2; @@ -616,7 +617,12 @@ bgp_update_print(const u_char *dat, int length) printf(" (Withdrawn routes:"); while(i < 2 + len) { - i += decode_prefix4(&p[i], buf, sizeof(buf)); + wpfx = decode_prefix4(&p[i], buf, sizeof(buf)); + if (wpfx < 0) { + printf(" (illegal prefix length)"); + break; + } + i += wpfx; printf(" %s", buf); } printf(")\n"); |