aboutsummaryrefslogtreecommitdiffstats
path: root/wiretap/vms.c
diff options
context:
space:
mode:
authorGuy Harris <guy@alum.mit.edu>2016-04-29 19:10:01 -0700
committerGuy Harris <guy@alum.mit.edu>2016-04-30 02:10:42 +0000
commitbc62c096d058c6db3ea45fcb8f0d041d4cb9580d (patch)
tree0fb1049d319f4b9c6a5f6cb30e6fb8a440006b47 /wiretap/vms.c
parentc34cf306ab90307c23371d638478bce1d348388d (diff)
Check for packets bigger than WTAP_MAX_PACKET_SIZE.
Change-Id: Ia932f3e5aeaca7a566ea9f00ce1dca1a2071a1a4 Reviewed-on: https://code.wireshark.org/review/15187 Reviewed-by: Guy Harris <guy@alum.mit.edu>
Diffstat (limited to 'wiretap/vms.c')
-rw-r--r--wiretap/vms.c11
1 files changed, 11 insertions, 0 deletions
diff --git a/wiretap/vms.c b/wiretap/vms.c
index ebcfefb78c..2133c7802d 100644
--- a/wiretap/vms.c
+++ b/wiretap/vms.c
@@ -390,6 +390,17 @@ parse_vms_packet(FILE_T fh, struct wtap_pkthdr *phdr, Buffer *buf, int *err, gch
break;
}
} while (! isdumpline(line));
+ if (pkt_len > WTAP_MAX_PACKET_SIZE) {
+ /*
+ * Probably a corrupt capture file; return an error,
+ * so that our caller doesn't blow up trying to allocate
+ * space for an immensely-large packet.
+ */
+ *err = WTAP_ERR_BAD_FILE;
+ *err_info = g_strdup_printf("vms: File has %u-byte packet, bigger than maximum of %u",
+ pkt_len, WTAP_MAX_PACKET_SIZE);
+ return FALSE;
+ }
p = strstr(months, mon);
if (p)