[FFmpeg-devel] [PATCH] libavcodec/mpegaudiodecheader.c : prevent reserved id misinterpretation

Karsten Otto ottoka at posteo.de
Sat Jul 7 23:29:11 EEST 2018


Check the MPEG version ID for the reserved bit pattern 01, and abort header
parsing in that case. This reduces the chance of misinterpreting arbitrary
data as a valid frame start, and prevents the resulting audio artifacts.
---
 libavcodec/mpegaudiodecheader.c | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/libavcodec/mpegaudiodecheader.c b/libavcodec/mpegaudiodecheader.c
index 6cc79f18b5..23029f186a 100644
--- a/libavcodec/mpegaudiodecheader.c
+++ b/libavcodec/mpegaudiodecheader.c
@@ -46,10 +46,11 @@ int avpriv_mpegaudio_decode_header(MPADecodeHeader *s, uint32_t header)
     if (header & (1<<20)) {
         s->lsf = (header & (1<<19)) ? 0 : 1;
         mpeg25 = 0;
-    } else {
+    } else if (!(header & (1<<19))) {
         s->lsf = 1;
         mpeg25 = 1;
-    }
+    } else
+        return -1; // reserved id
 
     s->layer = 4 - ((header >> 17) & 3);
     /* extract frequency */
-- 
2.14.3 (Apple Git-98)



More information about the ffmpeg-devel mailing list