summaryrefslogtreecommitdiffstats
path: root/media
diff options
context:
space:
mode:
authorAndreas Huber <andih@google.com>2013-04-29 13:17:50 -0700
committerAndreas Huber <andih@google.com>2013-05-02 14:23:55 -0700
commit04a840d9a0eea7d0816b6b665aa150649c46974f (patch)
treecf15775553ea38416cf470ba42d2a59f31e0da28 /media
parente0b121bd312dc4c238cca5d9b48192c1b4cd53c1 (diff)
downloadframeworks_av-04a840d9a0eea7d0816b6b665aa150649c46974f.zip
frameworks_av-04a840d9a0eea7d0816b6b665aa150649c46974f.tar.gz
frameworks_av-04a840d9a0eea7d0816b6b665aa150649c46974f.tar.bz2
A reference to the psi section data could become invalid if more
sections were added to the KeyedVector. Change-Id: I095b5452ccfad89d69fc502fb21ce39495e201c3 related-to-bug: 8754565
Diffstat (limited to 'media')
-rw-r--r--media/libstagefright/mpeg2ts/ATSParser.cpp8
1 files changed, 5 insertions, 3 deletions
diff --git a/media/libstagefright/mpeg2ts/ATSParser.cpp b/media/libstagefright/mpeg2ts/ATSParser.cpp
index c12572f..9850a46 100644
--- a/media/libstagefright/mpeg2ts/ATSParser.cpp
+++ b/media/libstagefright/mpeg2ts/ATSParser.cpp
@@ -1059,7 +1059,7 @@ status_t ATSParser::parsePID(
ssize_t sectionIndex = mPSISections.indexOfKey(PID);
if (sectionIndex >= 0) {
- const sp<PSISection> &section = mPSISections.valueAt(sectionIndex);
+ sp<PSISection> section = mPSISections.valueAt(sectionIndex);
if (payload_unit_start_indicator) {
CHECK(section->isEmpty());
@@ -1068,7 +1068,6 @@ status_t ATSParser::parsePID(
br->skipBits(skip * 8);
}
-
CHECK((br->numBitsLeft() % 8) == 0);
status_t err = section->append(br->data(), br->numBitsLeft() / 8);
@@ -1103,10 +1102,13 @@ status_t ATSParser::parsePID(
if (!handled) {
mPSISections.removeItem(PID);
+ section.clear();
}
}
- section->clear();
+ if (section != NULL) {
+ section->clear();
+ }
return OK;
}