aboutsummaryrefslogtreecommitdiffstats
path: root/wiretap
diff options
context:
space:
mode:
authorgerald <gerald@f5534014-38df-0310-8fa8-9805f1628bb7>2011-06-09 18:31:39 +0000
committergerald <gerald@f5534014-38df-0310-8fa8-9805f1628bb7>2011-06-09 18:31:39 +0000
commitb40a4be94910ad46162f87b9fd6096638721c3db (patch)
treefa19093315f6877936d013c783ba902b4aadfaef /wiretap
parent1f0baf8a1d6f588e6e585934228935cd2bb3a197 (diff)
Make sure we don't write invalid record lengths.
git-svn-id: http://anonsvn.wireshark.org/wireshark/trunk@37634 f5534014-38df-0310-8fa8-9805f1628bb7
Diffstat (limited to 'wiretap')
-rw-r--r--wiretap/libpcap.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/wiretap/libpcap.c b/wiretap/libpcap.c
index 4557839b89..bb232b5fd2 100644
--- a/wiretap/libpcap.c
+++ b/wiretap/libpcap.c
@@ -997,6 +997,12 @@ static gboolean libpcap_dump(wtap_dumper *wdh,
}
rec_hdr.hdr.incl_len = phdr->caplen + phdrsize;
rec_hdr.hdr.orig_len = phdr->len + phdrsize;
+
+ if (rec_hdr.hdr.incl_len > WTAP_MAX_PACKET_SIZE || rec_hdr.hdr.orig_len > WTAP_MAX_PACKET_SIZE) {
+ *err = WTAP_ERR_BAD_RECORD;
+ return FALSE;
+ }
+
switch (wdh->file_type) {
case WTAP_FILE_PCAP: