diff --git a/media/libstagefright/id3/ID3.cpp b/media/libstagefright/id3/ID3.cpp index b2632387e7e4e..d688e2ccf16e1 100644 --- a/media/libstagefright/id3/ID3.cpp +++ b/media/libstagefright/id3/ID3.cpp @@ -28,6 +28,8 @@ namespace android { +static const size_t kMaxMetadataSize = 3 * 1024 * 1024; + ID3::ID3(const sp &source) : mIsValid(false), mData(NULL), @@ -111,6 +113,11 @@ bool ID3::parseV2(const sp &source) { size = (size << 7) | header.enc_size[i]; } + if (size > kMaxMetadataSize) { + LOGE("skipping huge ID3 metadata of size %d", size); + return false; + } + mData = (uint8_t *)malloc(size); if (mData == NULL) {