From 0bc76c0d038a2bac17d93caae0bfd00d8ca5bbc0 Mon Sep 17 00:00:00 2001 From: Mark Nauwelaerts Date: Fri, 13 Jan 2012 15:55:15 +0100 Subject: [PATCH] asfpacket: fix 0.11 ported payload extraction ... to cater for not necessarily offset == size - cur_pos, as size may have been adjusted due to padding. Fixes #667567. --- gst/asfdemux/asfpacket.c | 5 ++++- gst/asfdemux/asfpacket.h | 1 + 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/gst/asfdemux/asfpacket.c b/gst/asfdemux/asfpacket.c index 0baaceb..072a40e 100644 --- a/gst/asfdemux/asfpacket.c +++ b/gst/asfdemux/asfpacket.c @@ -77,7 +77,8 @@ asf_packet_create_payload_buffer (AsfPacket * packet, const guint8 ** p_data, g_assert (payload_len <= *p_size); - off = (guint) (gst_buffer_get_size (packet->buf) - *p_size); + off = (guint) (*p_data - packet->bdata); + g_assert (off < gst_buffer_get_size (packet->buf)); *p_data += payload_len; *p_size -= payload_len; @@ -484,6 +485,8 @@ gst_asf_demux_parse_packet (GstASFDemux * demux, GstBuffer * buf) goto short_packet; packet.buf = buf; + /* evidently transient */ + packet.bdata = data; ec_flags = GST_READ_UINT8 (data); diff --git a/gst/asfdemux/asfpacket.h b/gst/asfdemux/asfpacket.h index cc1622d..dd8bd86 100644 --- a/gst/asfdemux/asfpacket.h +++ b/gst/asfdemux/asfpacket.h @@ -46,6 +46,7 @@ typedef struct { typedef struct { GstBuffer *buf; + const guint8 *bdata; guint length; /* packet length (unused) */ guint padding; /* length of padding at end of packet */ guint sequence; /* sequence (unused) */ -- 2.7.4