From de2430fd7855b7941250e1c3744756ec9e699bd1 Mon Sep 17 00:00:00 2001 From: Marco Nelissen Date: Thu, 18 Feb 2016 08:25:47 -0800 Subject: Get service by value instead of reference to prevent a cleared service binder from being used. Bug: 26040840 Change-Id: Ifb5483c55b172d3553deb80dbe27f2204b86ecdb --- include/media/mediametadataretriever.h | 2 +- media/libmedia/mediametadataretriever.cpp | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/include/media/mediametadataretriever.h b/include/media/mediametadataretriever.h index f655f35..8ed07ee 100644 --- a/include/media/mediametadataretriever.h +++ b/include/media/mediametadataretriever.h @@ -82,7 +82,7 @@ public: const char* extractMetadata(int keyCode); private: - static const sp& getService(); + static const sp getService(); class DeathNotifier: public IBinder::DeathRecipient { diff --git a/media/libmedia/mediametadataretriever.cpp b/media/libmedia/mediametadataretriever.cpp index 9a76f58..08a9e6a 100644 --- a/media/libmedia/mediametadataretriever.cpp +++ b/media/libmedia/mediametadataretriever.cpp @@ -35,7 +35,7 @@ Mutex MediaMetadataRetriever::sServiceLock; sp MediaMetadataRetriever::sService; sp MediaMetadataRetriever::sDeathNotifier; -const sp& MediaMetadataRetriever::getService() +const sp MediaMetadataRetriever::getService() { Mutex::Autolock lock(sServiceLock); if (sService == 0) { @@ -62,7 +62,7 @@ const sp& MediaMetadataRetriever::getService() MediaMetadataRetriever::MediaMetadataRetriever() { ALOGV("constructor"); - const sp& service(getService()); + const sp service(getService()); if (service == 0) { ALOGE("failed to obtain MediaMetadataRetrieverService"); return; -- cgit v1.1