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)