From: Tim-Philipp Müller Date: Mon, 15 Jun 2015 11:55:39 +0000 (+0100) Subject: pcapparse: fix regression when handling packets with eth padding X-Git-Tag: 1.19.3~507^2~8392 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=aec19c10537124b1dbf1eb4cfa65ef68778fcd67;p=platform%2Fupstream%2Fgstreamer.git pcapparse: fix regression when handling packets with eth padding Introduced by c4c9fe60b pcapparse: Take buffer directly from the adapter Flush any trailing bytes after the payload from the adapter as well, otherwise we'll read a bogus packet size from the adapter next and then everything goes downhill from there. https://bugzilla.gnome.org/show_bug.cgi?id=751879 --- diff --git a/gst/pcapparse/gstpcapparse.c b/gst/pcapparse/gstpcapparse.c index 1a5388e..75d4cb9 100644 --- a/gst/pcapparse/gstpcapparse.c +++ b/gst/pcapparse/gstpcapparse.c @@ -480,13 +480,12 @@ gst_pcap_parse_chain (GstPad * pad, GstObject * parent, GstBuffer * buffer) GstBuffer *out_buf; guintptr offset = payload_data - data; - self->cur_packet_size -= offset; - self->cur_packet_size -= payload_size; - gst_adapter_unmap (self->adapter); gst_adapter_flush (self->adapter, offset); out_buf = gst_adapter_take_buffer_fast (self->adapter, payload_size); + gst_adapter_flush (self->adapter, + self->cur_packet_size - offset - payload_size); if (GST_CLOCK_TIME_IS_VALID (self->cur_ts)) { if (!GST_CLOCK_TIME_IS_VALID (self->base_ts))