diff options
| -rw-r--r-- | media/libstagefright/MPEG4Extractor.cpp | 10 | 
1 files changed, 9 insertions, 1 deletions
diff --git a/media/libstagefright/MPEG4Extractor.cpp b/media/libstagefright/MPEG4Extractor.cpp index 4c9b458..433941c 100644 --- a/media/libstagefright/MPEG4Extractor.cpp +++ b/media/libstagefright/MPEG4Extractor.cpp @@ -4294,7 +4294,15 @@ status_t MPEG4Source::fragmentedRead(                      continue;                  } -                CHECK(dstOffset + 4 <= mBuffer->size()); +                if (dstOffset > SIZE_MAX - 4 || +                        dstOffset + 4 > SIZE_MAX - nalLength || +                        dstOffset + 4 + nalLength > mBuffer->size()) { +                    ALOGE("b/26365349 : %zu %zu", dstOffset, mBuffer->size()); +                    android_errorWriteLog(0x534e4554, "26365349"); +                    mBuffer->release(); +                    mBuffer = NULL; +                    return ERROR_MALFORMED; +                }                  dstData[dstOffset++] = 0;                  dstData[dstOffset++] = 0;  | 
