From bb093eee1e3e5f3ba5fed111074ae5a49b391105 Mon Sep 17 00:00:00 2001 From: Robert Shih Date: Tue, 5 Nov 2019 15:43:26 -0800 Subject: [PATCH] wv hidl: setRequestingSid to true HALs need to getCallingSid to verify clients. [ Merge of http://go/wvgerrit/89123 ] Bug: 134787536 Test: log calling sid Change-Id: I9cfbddfc274457a6802d9c8f37470d656771acc6 --- libwvdrmengine/src_hidl/WVCryptoFactory.cpp | 3 ++- libwvdrmengine/src_hidl/WVDrmFactory.cpp | 3 ++- libwvdrmengine/src_hidl/service.cpp | 3 +++ libwvdrmengine/src_hidl/serviceLazy.cpp | 3 +++ 4 files changed, 10 insertions(+), 2 deletions(-) diff --git a/libwvdrmengine/src_hidl/WVCryptoFactory.cpp b/libwvdrmengine/src_hidl/WVCryptoFactory.cpp index dce5c4ec..c5adc955 100644 --- a/libwvdrmengine/src_hidl/WVCryptoFactory.cpp +++ b/libwvdrmengine/src_hidl/WVCryptoFactory.cpp @@ -31,7 +31,7 @@ Return WVCryptoFactory::createPlugin( const hidl_vec& initData, createPlugin_cb _hidl_cb) { - WVCryptoPlugin *plugin = NULL; + sp plugin; if (!isCryptoSchemeSupported(uuid.data())) { ALOGE("Widevine Drm HAL: failed to create crypto plugin, " \ "invalid crypto scheme"); @@ -40,6 +40,7 @@ Return WVCryptoFactory::createPlugin( } plugin = new WVCryptoPlugin(initData.data(), initData.size(), getCDM()); + android::hardware::setRequestingSid(plugin, true); _hidl_cb(Status::OK, plugin); return Void(); } diff --git a/libwvdrmengine/src_hidl/WVDrmFactory.cpp b/libwvdrmengine/src_hidl/WVDrmFactory.cpp index bec96026..560ba3f5 100644 --- a/libwvdrmengine/src_hidl/WVDrmFactory.cpp +++ b/libwvdrmengine/src_hidl/WVDrmFactory.cpp @@ -63,7 +63,7 @@ Return WVDrmFactory::createPlugin( const hidl_string& appPackageName, createPlugin_cb _hidl_cb) { - WVDrmPlugin *plugin = NULL; + sp plugin; if (!isCryptoSchemeSupported(uuid.data())) { ALOGE("Widevine Drm HAL: failed to create drm plugin, " \ "invalid crypto scheme"); @@ -80,6 +80,7 @@ Return WVDrmFactory::createPlugin( plugin = new WVDrmPlugin(getCDM(), appPackageName.c_str(), &sOemCryptoInterface, areSpoidsEnabled()); + android::hardware::setRequestingSid(plugin, true); _hidl_cb(Status::OK, plugin); return Void(); } diff --git a/libwvdrmengine/src_hidl/service.cpp b/libwvdrmengine/src_hidl/service.cpp index 06b4b738..1528a280 100644 --- a/libwvdrmengine/src_hidl/service.cpp +++ b/libwvdrmengine/src_hidl/service.cpp @@ -31,6 +31,9 @@ int main(int /* argc */, char** /* argv */) { configureRpcThreadpool(8, true /* callerWillJoin */); + android::hardware::setRequestingSid(drmFactory, true); + android::hardware::setRequestingSid(cryptoFactory, true); + // Setup hwbinder service CHECK_EQ(drmFactory->registerAsService("widevine"), android::NO_ERROR) << "Failed to register Widevine Factory HAL"; diff --git a/libwvdrmengine/src_hidl/serviceLazy.cpp b/libwvdrmengine/src_hidl/serviceLazy.cpp index a602bcfc..403f5679 100644 --- a/libwvdrmengine/src_hidl/serviceLazy.cpp +++ b/libwvdrmengine/src_hidl/serviceLazy.cpp @@ -33,6 +33,9 @@ int main(int /* argc */, char** /* argv */) { configureRpcThreadpool(8, true /* callerWillJoin */); + android::hardware::setRequestingSid(drmFactory, true); + android::hardware::setRequestingSid(cryptoFactory, true); + // Setup hwbinder service auto serviceRegistrar = LazyServiceRegistrar::getInstance(); CHECK_EQ(serviceRegistrar.registerService(drmFactory, "widevine"), android::NO_ERROR)