summaryrefslogtreecommitdiff
path: root/libavformat/mpegts.c
diff options
context:
space:
mode:
authorMichael Niedermayer <michaelni@gmx.at>2013-09-04 00:55:38 +0200
committerMichael Niedermayer <michaelni@gmx.at>2013-09-04 01:02:06 +0200
commita66099192159d02b1a1c1820ddb24c7cea271a44 (patch)
tree7565de105160654bb9c6e9879a53c27bc580c47e /libavformat/mpegts.c
parentb78e75ebc9b03bea8f0c48da266ee6cc0fb8e22d (diff)
avformat/mpegts: Ensure that mpegts_get_dts() only considers packets at or after the given position
This fixes an infinite loop An alternative fix would be to revert d73cbc22c5f2c305838d9867538cf4ad59c4035f but that would worsen error resilience. Found-by: Justin Ruggles Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
Diffstat (limited to 'libavformat/mpegts.c')
-rw-r--r--libavformat/mpegts.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/libavformat/mpegts.c b/libavformat/mpegts.c
index c641794556..2102bbed0b 100644
--- a/libavformat/mpegts.c
+++ b/libavformat/mpegts.c
@@ -2362,7 +2362,7 @@ static int64_t mpegts_get_dts(AVFormatContext *s, int stream_index,
if(pkt.dts != AV_NOPTS_VALUE && pkt.pos >= 0){
ff_reduce_index(s, pkt.stream_index);
av_add_index_entry(s->streams[pkt.stream_index], pkt.pos, pkt.dts, 0, 0, AVINDEX_KEYFRAME /* FIXME keyframe? */);
- if(pkt.stream_index == stream_index){
+ if(pkt.stream_index == stream_index && pkt.pos >= *ppos){
*ppos= pkt.pos;
return pkt.dts;
}