On 6/3/2017 5:16 PM, Michael Niedermayer wrote: > On Sat, Jun 03, 2017 at 12:33:33AM -0300, James Almer wrote: >> Atempt to read and propagate only full ADTS frames and not other data, >> like id3v1 or APETags at the end of the file. >> >> Fixes ticket #6439. >> >> Signed-off-by: James Almer <jamr...@gmail.com> >> --- >> libavformat/aacdec.c | 42 ++++++++++++++++++++++++++++++++++++++++-- >> 1 file changed, 40 insertions(+), 2 deletions(-) >> >> diff --git a/libavformat/aacdec.c b/libavformat/aacdec.c >> index 5ab5197e33..aee1efe03c 100644 >> --- a/libavformat/aacdec.c >> +++ b/libavformat/aacdec.c >> @@ -23,10 +23,11 @@ >> #include "libavutil/intreadwrite.h" >> #include "avformat.h" >> #include "internal.h" >> -#include "rawdec.h" >> #include "id3v1.h" >> #include "apetag.h" >> >> +#define ADTS_HEADER_SIZE 7 >> + >> static int adts_aac_probe(AVProbeData *p) >> { >> int max_frames = 0, first_frames = 0; >> @@ -79,6 +80,7 @@ static int adts_aac_probe(AVProbeData *p) >> static int adts_aac_read_header(AVFormatContext *s) >> { >> AVStream *st; >> + uint16_t state; >> >> st = avformat_new_stream(s, NULL); >> if (!st) >> @@ -96,18 +98,54 @@ static int adts_aac_read_header(AVFormatContext *s) >> avio_seek(s->pb, cur, SEEK_SET); >> } >> >> + // skip data until the first ADTS frame is found >> + state = avio_r8(s->pb); >> + while (!avio_feof(s->pb)) { >> + state = (state << 8) | avio_r8(s->pb); >> + if ((state >> 4) != 0xFFF) >> + continue; >> + avio_seek(s->pb, -2, SEEK_CUR); >> + break; >> + } > > this would loop forever with /dev/zero as input
How can i prevent this? Maybe checking a max of AVFormatContext.probesize or AVFormatContext.format_probesize bytes before bailing out? Which one if so? > > no more comments from me, seems working with what i tested > > is it easy to add a fate test ? if so please add one Sure, i'll add one after i push this. > > thx > > [...] > > > > _______________________________________________ > ffmpeg-devel mailing list > ffmpeg-devel@ffmpeg.org > http://ffmpeg.org/mailman/listinfo/ffmpeg-devel > _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel