aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--wiretap/pcapng.c11
1 files changed, 11 insertions, 0 deletions
diff --git a/wiretap/pcapng.c b/wiretap/pcapng.c
index 5db09626bc..76577dc08f 100644
--- a/wiretap/pcapng.c
+++ b/wiretap/pcapng.c
@@ -3581,6 +3581,17 @@ pcapng_write_enhanced_packet_block(wtap_dumper *wdh, const wtap_rec *rec,
int_data = g_array_index(wdh->interface_data, wtap_block_t,
epb.interface_id);
int_data_mand = (wtapng_if_descr_mandatory_t*)wtap_block_get_mandatory_data(int_data);
+ if (int_data_mand->wtap_encap != rec->rec_header.packet_header.pkt_encap) {
+ /*
+ * Our caller is doing something bad.
+ */
+ *err = WTAP_ERR_INTERNAL;
+ *err_info = g_strdup_printf("pcapng: interface %u encap %d != packet encap %d",
+ epb.interface_id,
+ int_data_mand->wtap_encap,
+ rec->rec_header.packet_header.pkt_encap);
+ return FALSE;
+ }
ts = ((guint64)rec->ts.secs) * int_data_mand->time_units_per_second +
(((guint64)rec->ts.nsecs) * int_data_mand->time_units_per_second) / 1000000000;
epb.timestamp_high = (guint32)(ts >> 32);