From 073e4f6748f5d7deb095c42fad9271cb99e22d07 Mon Sep 17 00:00:00 2001 From: Marco Nelissen Date: Fri, 24 Jul 2015 09:18:36 -0700 Subject: Check vector size before accessing Bug: 22388975 Change-Id: I3c157b1029d37f6a22e6302ea7b52077fe27ce53 (cherry picked from commit 529c595b083f8a4c3175e2350fba5547e6008e00) --- media/libstagefright/MPEG4Extractor.cpp | 9 +++++++++ 1 file changed, 9 insertions(+) (limited to 'media/libstagefright/MPEG4Extractor.cpp') diff --git a/media/libstagefright/MPEG4Extractor.cpp b/media/libstagefright/MPEG4Extractor.cpp index 56bd875..618d522 100644 --- a/media/libstagefright/MPEG4Extractor.cpp +++ b/media/libstagefright/MPEG4Extractor.cpp @@ -2747,8 +2747,17 @@ status_t MPEG4Source::parseSampleAuxiliaryInformationOffsets(off64_t offset, off int ivlength; CHECK(mFormat->findInt32(kKeyCryptoDefaultIVSize, &ivlength)); + // only 0, 8 and 16 byte initialization vectors are supported + if (ivlength != 0 && ivlength != 8 && ivlength != 16) { + ALOGW("unsupported IV length: %d", ivlength); + return ERROR_MALFORMED; + } // read CencSampleAuxiliaryDataFormats for (size_t i = 0; i < mCurrentSampleInfoCount; i++) { + if (i >= mCurrentSamples.size()) { + ALOGW("too few samples"); + break; + } Sample *smpl = &mCurrentSamples.editItemAt(i); memset(smpl->iv, 0, 16); -- cgit v1.1