Skip to content

Commit 612e161

Browse files
committed
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
1 parent f12abaf commit 612e161

File tree

1 file changed

+14
-2
lines changed

1 file changed

+14
-2
lines changed

media/libstagefright/StagefrightMetadataRetriever.cpp

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -283,8 +283,15 @@ VideoFrame *StagefrightMetadataRetriever::getFrameAtTime(
283283
return NULL;
284284
}
285285

286+
sp<MetaData> fileMeta = mExtractor->getMetaData();
287+
288+
if (fileMeta == NULL) {
289+
LOGV("extractor doesn't publish metadata, failed to initialize?");
290+
return NULL;
291+
}
292+
286293
int32_t drm = 0;
287-
if (mExtractor->getMetaData()->findInt32(kKeyIsDRM, &drm) && drm != 0) {
294+
if (fileMeta->findInt32(kKeyIsDRM, &drm) && drm != 0) {
288295
LOGE("frame grab not allowed.");
289296
return NULL;
290297
}
@@ -320,7 +327,7 @@ VideoFrame *StagefrightMetadataRetriever::getFrameAtTime(
320327
const void *data;
321328
uint32_t type;
322329
size_t dataSize;
323-
if (mExtractor->getMetaData()->findData(kKeyAlbumArt, &type, &data, &dataSize)
330+
if (fileMeta->findData(kKeyAlbumArt, &type, &data, &dataSize)
324331
&& mAlbumArt == NULL) {
325332
mAlbumArt = new MediaAlbumArt;
326333
mAlbumArt->mSize = dataSize;
@@ -387,6 +394,11 @@ const char *StagefrightMetadataRetriever::extractMetadata(int keyCode) {
387394
void StagefrightMetadataRetriever::parseMetaData() {
388395
sp<MetaData> meta = mExtractor->getMetaData();
389396

397+
if (meta == NULL) {
398+
LOGV("extractor doesn't publish metadata, failed to initialize?");
399+
return;
400+
}
401+
390402
struct Map {
391403
int from;
392404
int to;

0 commit comments

Comments
 (0)