From 9fae959f282ad07f51a61c9fd4d762e261db1a6a Mon Sep 17 00:00:00 2001 From: trialuser02 Date: Thu, 25 Aug 2016 12:05:15 +0000 Subject: aac: fixed ADTS parser git-svn-id: http://svn.code.sf.net/p/qmmp-dev/code/trunk/qmmp@6683 90c681e8-e032-0410-971d-27865f9a5e38 --- src/plugins/Input/aac/aacfile.cpp | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'src/plugins/Input/aac') diff --git a/src/plugins/Input/aac/aacfile.cpp b/src/plugins/Input/aac/aacfile.cpp index 4c69e2e90..b9a537031 100644 --- a/src/plugins/Input/aac/aacfile.cpp +++ b/src/plugins/Input/aac/aacfile.cpp @@ -90,6 +90,9 @@ AACFile::AACFile(QIODevice *input, bool metaData, bool adts) unsigned int frame_length = ((((unsigned int)buf[adts_offset+3] & 0x3)) << 11) | (((unsigned int)buf[adts_offset+4]) << 3) | ((unsigned int)buf[adts_offset+5] >> 5); + if(frame_length == 0) + break; + if(adts_offset + frame_length > buf_at - 6) break; @@ -203,6 +206,9 @@ void AACFile::parseADTS() frame_length = ((((unsigned int)buf[3] & 0x3)) << 11) | (((unsigned int)buf[4]) << 3) | (buf[5] >> 5); + if(frame_length == 0) + break; + t_framelength += frame_length; if (frame_length > buf_at) -- cgit v1.2.3-13-gbd6f