Fix possible media extractor service crash
Change-Id: I7501eee0d375745243a9e9acceacd526b6f322b7
diff --git a/media/libmedia/IMediaExtractorService.cpp b/media/libmedia/IMediaExtractorService.cpp
index 51a3c1a..dcbbde2 100644
--- a/media/libmedia/IMediaExtractorService.cpp
+++ b/media/libmedia/IMediaExtractorService.cpp
@@ -65,7 +65,13 @@
case MAKE_EXTRACTOR: {
CHECK_INTERFACE(IMediaExtractorService, data, reply);
- sp<IDataSource> source = interface_cast<IDataSource>(data.readStrongBinder());
+ sp<IBinder> b;
+ status_t ret = data.readStrongBinder(&b);
+ if (ret != NO_ERROR || b == NULL) {
+ ALOGE("Error reading source from parcel");
+ return ret;
+ }
+ sp<IDataSource> source = interface_cast<IDataSource>(b);
const char *mime = data.readCString();
sp<IMediaExtractor> ex = makeExtractor(source, mime);
reply->writeStrongBinder(IInterface::asBinder(ex));