diff options
| author | 2015-11-05 11:55:21 +0000 | |
|---|---|---|
| committer | 2015-11-05 11:55:21 +0000 | |
| commit | afc56190342cce42f4f1c29f5d014b43157f71e7 (patch) | |
| tree | 3104f964cdaeff5bf325d690d86b5215a28fe1ea /usr.sbin/tcpdump/print-gre.c | |
| parent | When fetching the GRE version, use GRE_VERS and not a naked "7" as mask. (diff) | |
| download | wireguard-openbsd-afc56190342cce42f4f1c29f5d014b43157f71e7.tar.xz wireguard-openbsd-afc56190342cce42f4f1c29f5d014b43157f71e7.zip | |
Cap the GRE packet len to tcpdump's snap len, fixes a segfault.
From Kevin Reay, ok sthen@
Diffstat (limited to 'usr.sbin/tcpdump/print-gre.c')
| -rw-r--r-- | usr.sbin/tcpdump/print-gre.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/usr.sbin/tcpdump/print-gre.c b/usr.sbin/tcpdump/print-gre.c index 58122443ed4..726d8be1b24 100644 --- a/usr.sbin/tcpdump/print-gre.c +++ b/usr.sbin/tcpdump/print-gre.c @@ -1,4 +1,4 @@ -/* $OpenBSD: print-gre.c,v 1.10 2015/11/05 11:52:24 jca Exp $ */ +/* $OpenBSD: print-gre.c,v 1.11 2015/11/05 11:55:21 jca Exp $ */ /* * Copyright (c) 2002 Jason L. Wright (jason@thought.net) @@ -73,6 +73,9 @@ gre_print(const u_char *bp, u_int length) { u_int len = length, vers; + if (bp + len > snapend) + len = snapend - bp; + if (len < 2) { printf("[|gre]"); return; |
