From 2dcf6138ebc9c5688aeae151d2fbde55a2826128 Mon Sep 17 00:00:00 2001 From: Robert Shih Date: Thu, 16 Jul 2015 15:04:12 -0700 Subject: MatroskaExtractor: detect infinite loop when parsing NALs Bug: 21335999 Change-Id: I76bd34610e52048ffcf16e41aa6175afc8a14ee4 --- media/libstagefright/matroska/MatroskaExtractor.cpp | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) (limited to 'media/libstagefright/matroska') diff --git a/media/libstagefright/matroska/MatroskaExtractor.cpp b/media/libstagefright/matroska/MatroskaExtractor.cpp index 70d2c69..e8bd432 100644 --- a/media/libstagefright/matroska/MatroskaExtractor.cpp +++ b/media/libstagefright/matroska/MatroskaExtractor.cpp @@ -21,6 +21,7 @@ #include "MatroskaExtractor.h" #include +#include #include #include #include @@ -620,7 +621,12 @@ status_t MatroskaSource::read( TRESPASS(); } - if (srcOffset + mNALSizeLen + NALsize > srcSize) { + if (srcOffset + mNALSizeLen + NALsize <= srcOffset + mNALSizeLen) { + frame->release(); + frame = NULL; + + return ERROR_MALFORMED; + } else if (srcOffset + mNALSizeLen + NALsize > srcSize) { break; } -- cgit v1.1