summaryrefslogtreecommitdiffstats
path: root/media
diff options
context:
space:
mode:
authorAndreas Huber <andih@google.com>2011-09-06 16:05:02 -0700
committerAndreas Huber <andih@google.com>2011-09-06 16:05:02 -0700
commite7484f36061a60aadadb01143d84964d931aa837 (patch)
tree9b1fc82f1e573b3bc65a62b33a2dee31031034ba /media
parent2e3319a62be898e1f0405025d24962fc6a1a3f07 (diff)
downloadframeworks_av-e7484f36061a60aadadb01143d84964d931aa837.zip
frameworks_av-e7484f36061a60aadadb01143d84964d931aa837.tar.gz
frameworks_av-e7484f36061a60aadadb01143d84964d931aa837.tar.bz2
Stop metadata retriever from dereferencing a NULL pointer if
the media extractor failed to initialize (malformed or unsupported content) Change-Id: Icfad4e9eeb8d6713ad12eee7979ab30b696c06e0 related-to-bug: 5263840
Diffstat (limited to 'media')
-rw-r--r--media/libstagefright/StagefrightMetadataRetriever.cpp16
1 files changed, 14 insertions, 2 deletions
diff --git a/media/libstagefright/StagefrightMetadataRetriever.cpp b/media/libstagefright/StagefrightMetadataRetriever.cpp
index 778c0b5..c74cb5a 100644
--- a/media/libstagefright/StagefrightMetadataRetriever.cpp
+++ b/media/libstagefright/StagefrightMetadataRetriever.cpp
@@ -283,8 +283,15 @@ VideoFrame *StagefrightMetadataRetriever::getFrameAtTime(
return NULL;
}
+ sp<MetaData> fileMeta = mExtractor->getMetaData();
+
+ if (fileMeta == NULL) {
+ LOGV("extractor doesn't publish metadata, failed to initialize?");
+ return NULL;
+ }
+
int32_t drm = 0;
- if (mExtractor->getMetaData()->findInt32(kKeyIsDRM, &drm) && drm != 0) {
+ if (fileMeta->findInt32(kKeyIsDRM, &drm) && drm != 0) {
LOGE("frame grab not allowed.");
return NULL;
}
@@ -320,7 +327,7 @@ VideoFrame *StagefrightMetadataRetriever::getFrameAtTime(
const void *data;
uint32_t type;
size_t dataSize;
- if (mExtractor->getMetaData()->findData(kKeyAlbumArt, &type, &data, &dataSize)
+ if (fileMeta->findData(kKeyAlbumArt, &type, &data, &dataSize)
&& mAlbumArt == NULL) {
mAlbumArt = new MediaAlbumArt;
mAlbumArt->mSize = dataSize;
@@ -387,6 +394,11 @@ const char *StagefrightMetadataRetriever::extractMetadata(int keyCode) {
void StagefrightMetadataRetriever::parseMetaData() {
sp<MetaData> meta = mExtractor->getMetaData();
+ if (meta == NULL) {
+ LOGV("extractor doesn't publish metadata, failed to initialize?");
+ return;
+ }
+
struct Map {
int from;
int to;