diff options
| -rw-r--r-- | media/java/android/media/Metadata.java | 5 | ||||
| -rw-r--r-- | media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/unit/MediaPlayerMetadataParserTest.java | 7 |
2 files changed, 4 insertions, 8 deletions
diff --git a/media/java/android/media/Metadata.java b/media/java/android/media/Metadata.java index 9d3f00540a4a..7618435078fb 100644 --- a/media/java/android/media/Metadata.java +++ b/media/java/android/media/Metadata.java @@ -280,8 +280,9 @@ public class Metadata final int pin = parcel.dataPosition(); // to roll back in case of errors. final int size = parcel.readInt(); - if (parcel.dataAvail() < size || size < kMetaHeaderSize) { - Log.e(TAG, "Bad size " + size); + // Magic 4 below is for the int32 'size' just read. + if (parcel.dataAvail() + 4 < size || size < kMetaHeaderSize) { + Log.e(TAG, "Bad size " + size + " avail " + parcel.dataAvail() + " position " + pin); parcel.setDataPosition(pin); return false; } diff --git a/media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/unit/MediaPlayerMetadataParserTest.java b/media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/unit/MediaPlayerMetadataParserTest.java index 576dddd6cf3a..637ebb861420 100644 --- a/media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/unit/MediaPlayerMetadataParserTest.java +++ b/media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/unit/MediaPlayerMetadataParserTest.java @@ -56,15 +56,10 @@ public class MediaPlayerMetadataParserTest extends AndroidTestCase { assertEquals(0, mParcel.dataPosition()); } - // Check parsing of the parcel is successful. Before the - // invocation of the parser a token is inserted. When the parser - // returns, the parcel should be positioned at the token (check it - // does not read too much data). + // Check parsing of the parcel is successful. private void assertParse() throws Exception { - mParcel.writeInt(kToken); mParcel.setDataPosition(0); assertTrue(mMetadata.parse(mParcel)); - assertEquals(kToken, mParcel.readInt()); } // Write the number of bytes from the start of the parcel to the |