summaryrefslogtreecommitdiffstats
path: root/media/libstagefright
diff options
context:
space:
mode:
authorLajos Molnar <lajos@google.com>2014-03-21 19:20:07 +0000
committerAndroid Git Automerger <android-git-automerger@android.com>2014-03-21 19:20:07 +0000
commit0fcba89e5460ed3edca75322175b8a56a6e6f48d (patch)
treed20dd7448d2f0bfb6bbac56fbdc5a96a01b01599 /media/libstagefright
parent5ce204a6362840fe28aa762693edaab3d0da8718 (diff)
parent333ceb4f66ccf790081026f645474e07d832fbdb (diff)
downloadframeworks_av-0fcba89e5460ed3edca75322175b8a56a6e6f48d.zip
frameworks_av-0fcba89e5460ed3edca75322175b8a56a6e6f48d.tar.gz
frameworks_av-0fcba89e5460ed3edca75322175b8a56a6e6f48d.tar.bz2
am 333ceb4f: Merge "DO NOT MERGE: PlaylistFetcher: fix infinite loop when parsing ADTS." into klp-dev
* commit '333ceb4f66ccf790081026f645474e07d832fbdb': DO NOT MERGE: PlaylistFetcher: fix infinite loop when parsing ADTS.
Diffstat (limited to 'media/libstagefright')
-rw-r--r--media/libstagefright/httplive/PlaylistFetcher.cpp12
1 files changed, 12 insertions, 0 deletions
diff --git a/media/libstagefright/httplive/PlaylistFetcher.cpp b/media/libstagefright/httplive/PlaylistFetcher.cpp
index ada856d..668cbd4 100644
--- a/media/libstagefright/httplive/PlaylistFetcher.cpp
+++ b/media/libstagefright/httplive/PlaylistFetcher.cpp
@@ -1321,6 +1321,18 @@ status_t PlaylistFetcher::extractAndQueueAccessUnits(
| (adtsHeader[4] << 3)
| (adtsHeader[5] >> 5);
+ if (aac_frame_length == 0) {
+ const uint8_t *id3Header = adtsHeader;
+ if (!memcmp(id3Header, "ID3", 3)) {
+ ID3 id3(id3Header, buffer->size() - offset, true);
+ if (id3.isValid()) {
+ offset += id3.rawSize();
+ continue;
+ };
+ }
+ return ERROR_MALFORMED;
+ }
+
CHECK_LE(offset + aac_frame_length, buffer->size());
sp<ABuffer> unit = new ABuffer(aac_frame_length);