Skip to content

Commit 4302151

Browse files
Wei Jiaandi34
authored andcommitted
libstagefright: fix possible overflow in ID3.
Bug: 23129786 Change-Id: I2e6b7a6927aa4362ab49dd6824bbb1abf7b4e661 (cherry picked from commit 09da869)
1 parent fe33f86 commit 4302151

File tree

1 file changed

+5
-2
lines changed

1 file changed

+5
-2
lines changed

media/libstagefright/id3/ID3.cpp

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -327,7 +327,7 @@ bool ID3::removeUnsynchronizationV2_4(bool iTunesHack) {
327327
size_t oldSize = mSize;
328328

329329
size_t offset = 0;
330-
while (offset + 10 <= mSize) {
330+
while (mSize >= 10 && offset <= mSize - 10) {
331331
if (!memcmp(&mData[offset], "\0\0\0\0", 4)) {
332332
break;
333333
}
@@ -339,7 +339,7 @@ bool ID3::removeUnsynchronizationV2_4(bool iTunesHack) {
339339
return false;
340340
}
341341

342-
if (offset + dataSize + 10 > mSize) {
342+
if (dataSize > mSize - 10 - offset) {
343343
return false;
344344
}
345345

@@ -349,6 +349,9 @@ bool ID3::removeUnsynchronizationV2_4(bool iTunesHack) {
349349
if (flags & 1) {
350350
// Strip data length indicator
351351

352+
if (mSize < 14 || mSize - 14 < offset) {
353+
return false;
354+
}
352355
memmove(&mData[offset + 10], &mData[offset + 14], mSize - offset - 14);
353356
mSize -= 4;
354357
dataSize -= 4;

0 commit comments

Comments
 (0)