mirror of
https://github.com/the-tcpdump-group/tcpdump.git
synced 2024-11-27 12:03:44 +08:00
CVE-2017-12899/DECnet: Fix bounds checking.
If we're skipping over padding before the *real* flags, check whether the real flags are in the captured data before fetching it. This fixes a buffer over-read discovered by Kamil Frankowicz. Note one place where we don't need to do bounds checking as it's already been done. Add a test using the capture file supplied by the reporter(s).
This commit is contained in:
parent
19d25dd878
commit
c6e0531b5d
@ -542,6 +542,7 @@ decnet_print(netdissect_options *ndo,
|
||||
length -= padlen;
|
||||
caplen -= padlen;
|
||||
rhp = (const union routehdr *)&(ap[sizeof(short)]);
|
||||
ND_TCHECK(rhp->rh_short.sh_flags);
|
||||
mflags = EXTRACT_LE_8BITS(rhp->rh_short.sh_flags);
|
||||
}
|
||||
|
||||
@ -613,6 +614,7 @@ print_decnet_ctlmsg(netdissect_options *ndo,
|
||||
register const union routehdr *rhp, u_int length,
|
||||
u_int caplen)
|
||||
{
|
||||
/* Our caller has already checked for mflags */
|
||||
int mflags = EXTRACT_LE_8BITS(rhp->rh_short.sh_flags);
|
||||
register const union controlmsg *cmp = (const union controlmsg *)rhp;
|
||||
int src, dst, info, blksize, eco, ueco, hello, other, vers;
|
||||
|
@ -444,6 +444,7 @@ hoobr_safeputs hoobr_safeputs.pcap hoobr_safeputs.out
|
||||
isakmp-rfc3948-oobr isakmp-rfc3948-oobr.pcap isakmp-rfc3948-oobr.out
|
||||
isoclns-oobr isoclns-oobr.pcap isoclns-oobr.out
|
||||
nfs-attr-oobr nfs-attr-oobr.pcap nfs-attr-oobr.out
|
||||
decnet-oobr decnet-oobr.pcap decnet-oobr.out
|
||||
|
||||
# bad packets from Wilfried Kirsch
|
||||
slip-bad-direction slip-bad-direction.pcap slip-bad-direction.out -ve
|
||||
|
4
tests/decnet-oobr.out
Normal file
4
tests/decnet-oobr.out
Normal file
@ -0,0 +1,4 @@
|
||||
30:30:30:30:30:30 > 30:30:30:30:30:30, ethertype Unknown (0x3030), length 808464432:
|
||||
0x0000: 3030 3030 3030 3030 3030 3030 3030 3030 0000000000000000
|
||||
0x0010: 3030 3030 0000
|
||||
MEDSA 16.6:48: [|decnet]
|
BIN
tests/decnet-oobr.pcap
Normal file
BIN
tests/decnet-oobr.pcap
Normal file
Binary file not shown.
Loading…
Reference in New Issue
Block a user