From 6c15ea673d5c08a3056b700a9d35c43efd7fd889 Mon Sep 17 00:00:00 2001 From: Jeff Tinker Date: Thu, 13 Apr 2017 00:22:38 -0700 Subject: [PATCH] Corrections to widevine plugin for vts tests Add a check for invalid session size in restoreKeys and correct the return code when attempting to create a plugin with an invalid uuid. Also correct the return code when attempting to decrypt after keys have been removed. bug:37172151 Change-Id: I7e832ffe04081471a0cdb3a9329808f47f12cfc3 --- libwvdrmengine/cdm/core/src/cdm_session.cpp | 2 +- libwvdrmengine/mediadrm/src/WVDrmPlugin.cpp | 3 +++ libwvdrmengine/src_hidl/WVDrmFactory.cpp | 2 +- 3 files changed, 5 insertions(+), 2 deletions(-) diff --git a/libwvdrmengine/cdm/core/src/cdm_session.cpp b/libwvdrmengine/cdm/core/src/cdm_session.cpp index 8f63cc5e..485cff04 100644 --- a/libwvdrmengine/cdm/core/src/cdm_session.cpp +++ b/libwvdrmengine/cdm/core/src/cdm_session.cpp @@ -543,7 +543,7 @@ CdmResponseType CdmSession::Decrypt(const CdmDecryptionParameters& params) { if (!crypto_session_->IsOpen()) { LOGW("CdmSession::Decrypt: Crypto session not open"); - return CRYPTO_SESSION_OPEN_ERROR_5; + return DECRYPT_NOT_READY; } // Playback may not begin until either the start time passes or the license diff --git a/libwvdrmengine/mediadrm/src/WVDrmPlugin.cpp b/libwvdrmengine/mediadrm/src/WVDrmPlugin.cpp index 72119b87..5a8603cc 100644 --- a/libwvdrmengine/mediadrm/src/WVDrmPlugin.cpp +++ b/libwvdrmengine/mediadrm/src/WVDrmPlugin.cpp @@ -314,6 +314,9 @@ status_t WVDrmPlugin::removeKeys(const Vector& sessionId) { status_t WVDrmPlugin::restoreKeys(const Vector& sessionId, const Vector& keySetId) { + if (sessionId.size() == 0 || keySetId.size() == 0) { + return android::BAD_VALUE; + } CdmSessionId cdmSessionId(sessionId.begin(), sessionId.end()); CdmKeySetId cdmKeySetId(keySetId.begin(), keySetId.end()); diff --git a/libwvdrmengine/src_hidl/WVDrmFactory.cpp b/libwvdrmengine/src_hidl/WVDrmFactory.cpp index 9cb3f944..da934128 100644 --- a/libwvdrmengine/src_hidl/WVDrmFactory.cpp +++ b/libwvdrmengine/src_hidl/WVDrmFactory.cpp @@ -44,7 +44,7 @@ Return WVDrmFactory::createPlugin( if (!isCryptoSchemeSupported(uuid.data())) { ALOGE("Widevine Drm HAL: failed to create drm plugin, " \ "invalid crypto scheme"); - _hidl_cb(Status::BAD_VALUE, plugin); + _hidl_cb(Status::ERROR_DRM_CANNOT_HANDLE, plugin); return Void(); }