From fe2c777a8e9eb0cd06b97b2cede2991ffacefa4b Mon Sep 17 00:00:00 2001 From: Rahul Frias Date: Wed, 14 Feb 2018 12:10:42 -0800 Subject: [PATCH 1/6] Disambiguate INSUFFICIENT_CRYPTO_RESOURCES errors [ Merge of http://go/wvgerrit/43281 ] Bug: 73164325 Test: WV unit/integration test, playback tests using Netflix and Play Movies. Change-Id: Ifc3dd8863da1616eb4a7df35ad010f53b6d5e3d2 --- libwvdrmengine/cdm/core/include/wv_cdm_types.h | 2 ++ libwvdrmengine/cdm/core/src/crypto_session.cpp | 4 ++-- libwvdrmengine/cdm/core/test/test_printers.cpp | 6 ++++++ libwvdrmengine/include/WVErrors.h | 4 +++- libwvdrmengine/include/mapErrors-inl.h | 4 ++++ libwvdrmengine/include_hidl/mapErrors-inl.h | 2 ++ 6 files changed, 19 insertions(+), 3 deletions(-) diff --git a/libwvdrmengine/cdm/core/include/wv_cdm_types.h b/libwvdrmengine/cdm/core/include/wv_cdm_types.h index 361500c4..b41d28dd 100644 --- a/libwvdrmengine/cdm/core/include/wv_cdm_types.h +++ b/libwvdrmengine/cdm/core/include/wv_cdm_types.h @@ -319,6 +319,8 @@ enum CdmResponseType { LICENSE_REQUEST_INVALID_SUBLICENSE = 277, CERT_PROVISIONING_EMPTY_SERVICE_CERTIFICATE = 278, LOAD_SYSTEM_ID_ERROR = 279, + INSUFFICIENT_CRYPTO_RESOURCES_4 = 280, + INSUFFICIENT_CRYPTO_RESOURCES_5 = 281, }; enum CdmKeyStatus { diff --git a/libwvdrmengine/cdm/core/src/crypto_session.cpp b/libwvdrmengine/cdm/core/src/crypto_session.cpp index f167a22a..926cb00f 100644 --- a/libwvdrmengine/cdm/core/src/crypto_session.cpp +++ b/libwvdrmengine/cdm/core/src/crypto_session.cpp @@ -821,7 +821,7 @@ CdmResponseType CryptoSession::LoadKeys( result = KEY_ADDED; } else if (OEMCrypto_ERROR_TOO_MANY_KEYS == sts) { LOGE("CryptoSession::LoadKeys: OEMCrypto_LoadKeys error=%d", sts); - result = INSUFFICIENT_CRYPTO_RESOURCES; + result = INSUFFICIENT_CRYPTO_RESOURCES_4; } else if (OEMCrypto_ERROR_USAGE_TABLE_UNRECOVERABLE == sts) { // Handle vendor specific error LOGE("CryptoSession::LoadKeys: OEMCrypto_LoadKeys error=%d", sts); @@ -1128,7 +1128,7 @@ CdmResponseType CryptoSession::Decrypt(const CdmDecryptionParameters& params) { case OEMCrypto_SUCCESS: return NO_ERROR; case OEMCrypto_ERROR_INSUFFICIENT_RESOURCES: - return INSUFFICIENT_CRYPTO_RESOURCES; + return INSUFFICIENT_CRYPTO_RESOURCES_5; case OEMCrypto_ERROR_KEY_EXPIRED: return NEED_KEY; case OEMCrypto_ERROR_INVALID_SESSION: diff --git a/libwvdrmengine/cdm/core/test/test_printers.cpp b/libwvdrmengine/cdm/core/test/test_printers.cpp index a6442a53..eb6eb372 100644 --- a/libwvdrmengine/cdm/core/test/test_printers.cpp +++ b/libwvdrmengine/cdm/core/test/test_printers.cpp @@ -574,6 +574,12 @@ void PrintTo(const enum CdmResponseType& value, ::std::ostream* os) { case LOAD_SYSTEM_ID_ERROR: *os << "LOAD_SYSTEM_ID_ERROR"; break; + case INSUFFICIENT_CRYPTO_RESOURCES_4: + *os << "INSUFFICIENT_CRYPTO_RESOURCES_4"; + break; + case INSUFFICIENT_CRYPTO_RESOURCES_5: + *os << "INSUFFICIENT_CRYPTO_RESOURCES_5"; + break; default: *os << "Unknown CdmResponseType"; break; diff --git a/libwvdrmengine/include/WVErrors.h b/libwvdrmengine/include/WVErrors.h index a4cd8b41..da6dc757 100644 --- a/libwvdrmengine/include/WVErrors.h +++ b/libwvdrmengine/include/WVErrors.h @@ -260,10 +260,12 @@ enum { kLicenseRequestInvalidSublicense = ERROR_DRM_VENDOR_MIN + 269, kCertProvisioningEmptyServiceCertificate = ERROR_DRM_VENDOR_MIN + 270, kLoadSystemIdError = ERROR_DRM_VENDOR_MIN + 271, + kInsufficientCryptoResources4 = ERROR_DRM_VENDOR_MIN + 272, + kInsufficientCryptoResources5 = ERROR_DRM_VENDOR_MIN + 273, // This should always follow the last error code. // The offset value should be updated each time a new error code is added. - kErrorWVDrmMaxErrorUsed = ERROR_DRM_VENDOR_MIN + 271, + kErrorWVDrmMaxErrorUsed = ERROR_DRM_VENDOR_MIN + 273, // Used by crypto test mode kErrorTestMode = ERROR_DRM_VENDOR_MAX, diff --git a/libwvdrmengine/include/mapErrors-inl.h b/libwvdrmengine/include/mapErrors-inl.h index a9ca0e3d..9bc4277b 100644 --- a/libwvdrmengine/include/mapErrors-inl.h +++ b/libwvdrmengine/include/mapErrors-inl.h @@ -501,6 +501,10 @@ static android::status_t mapCdmResponseType(wvcdm::CdmResponseType res) { return kCertProvisioningEmptyServiceCertificate; case wvcdm::LOAD_SYSTEM_ID_ERROR: return kLoadSystemIdError; + case wvcdm::INSUFFICIENT_CRYPTO_RESOURCES_4: + return kInsufficientCryptoResources4; + case wvcdm::INSUFFICIENT_CRYPTO_RESOURCES_5: + return kInsufficientCryptoResources5; } // Return here instead of as a default case so that the compiler will warn diff --git a/libwvdrmengine/include_hidl/mapErrors-inl.h b/libwvdrmengine/include_hidl/mapErrors-inl.h index 825395a9..7154ac7d 100644 --- a/libwvdrmengine/include_hidl/mapErrors-inl.h +++ b/libwvdrmengine/include_hidl/mapErrors-inl.h @@ -234,6 +234,8 @@ static Status mapCdmResponseType(wvcdm::CdmResponseType res) { case wvcdm::INVALID_PARAMETERS_ENG_17: case wvcdm::INVALID_PARAMETERS_ENG_18: case wvcdm::INSUFFICIENT_CRYPTO_RESOURCES_3: + case wvcdm::INSUFFICIENT_CRYPTO_RESOURCES_4: + case wvcdm::INSUFFICIENT_CRYPTO_RESOURCES_5: case wvcdm::CREATE_USAGE_ENTRY_UNKNOWN_ERROR: case wvcdm::LOAD_USAGE_ENTRY_GENERATION_SKEW: case wvcdm::LOAD_USAGE_ENTRY_SIGNATURE_FAILURE: From 901e673085cd5cc75a0b68593ce648251e259a1f Mon Sep 17 00:00:00 2001 From: Fred Gylys-Colwell Date: Wed, 14 Feb 2018 16:40:38 -0800 Subject: [PATCH 2/6] Mark unused typedef as unused Merge from Widevine repo of http://go/wvgerrit/43401 This turns off a bunch of unused typedef warning messages test: unit tests bug: 70894426 Change-Id: I8c0f02b98a2e89c4623c942a0981f01f3fe47da6 --- libwvdrmengine/cdm/metrics/include/field_tuples.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/libwvdrmengine/cdm/metrics/include/field_tuples.h b/libwvdrmengine/cdm/metrics/include/field_tuples.h index 40d964c0..307d7def 100644 --- a/libwvdrmengine/cdm/metrics/include/field_tuples.h +++ b/libwvdrmengine/cdm/metrics/include/field_tuples.h @@ -94,7 +94,8 @@ inline void AppendFieldNames(std::vector* field_name_vector, template struct CompileAssert {}; #define COMPILE_ASSERT(expr, msg) \ - typedef util::CompileAssert<(bool(expr))> msg[bool(expr) ? 1 : -1] + typedef util::CompileAssert<(bool(expr))> msg[bool(expr) ? 1 : -1] \ + __attribute__((unused)) template struct is_unused { static const bool value = false; }; template <> struct is_unused { static const bool value = true; }; @@ -125,4 +126,3 @@ class FirstUnusedType { } // namespace wvcdm #endif // WVCDM_METRICS_FIELD_TUPLES_H_ - From ef0ec145d31120874ccd76af4c83ecc86c6f398d Mon Sep 17 00:00:00 2001 From: Fred Gylys-Colwell Date: Wed, 14 Feb 2018 17:16:15 -0800 Subject: [PATCH 3/6] Fix compiler warnings Merge from Widevine repo of http://go/wvgerrit/43420 Remove or mark unused variables. Fix unsigned/signed comparisons. bug: 73390805 test: unit tests Change-Id: Ic523400a5decf82fae733042b260e0c39a087cd3 --- .../cdm/core/include/sublicense_key_session.h | 4 ++-- libwvdrmengine/cdm/core/src/cdm_engine.cpp | 2 +- libwvdrmengine/cdm/core/src/crypto_session.cpp | 2 +- .../cdm/core/src/oemcrypto_adapter_dynamic.cpp | 6 +++--- libwvdrmengine/cdm/src/log.cpp | 2 +- .../cdm/test/cdm_extended_duration_test.cpp | 15 +++------------ libwvdrmengine/cdm/test/cdm_feature_test.cpp | 7 +++---- libwvdrmengine/cdm/test/request_license_test.cpp | 2 -- libwvdrmengine/level3/arm/Android.mk | 3 ++- libwvdrmengine/level3/arm64/Android.mk | 3 ++- libwvdrmengine/level3/mips/Android.mk | 3 ++- libwvdrmengine/level3/mips64/Android.mk | 3 ++- libwvdrmengine/level3/x86/Android.mk | 3 ++- libwvdrmengine/level3/x86_64/Android.mk | 3 ++- .../mediacrypto/test/WVCryptoPlugin_test.cpp | 3 --- libwvdrmengine/mediadrm/test/WVDrmPlugin_test.cpp | 5 ----- 16 files changed, 26 insertions(+), 40 deletions(-) diff --git a/libwvdrmengine/cdm/core/include/sublicense_key_session.h b/libwvdrmengine/cdm/core/include/sublicense_key_session.h index 1367882f..f322af72 100644 --- a/libwvdrmengine/cdm/core/include/sublicense_key_session.h +++ b/libwvdrmengine/cdm/core/include/sublicense_key_session.h @@ -43,7 +43,7 @@ class SubLicenseKeySession : public KeySession { CdmCipherMode* cipher_mode, const std::string& srm_requirement); - OEMCryptoResult LoadEntitledContentKeys(const std::vector& keys) { + OEMCryptoResult LoadEntitledContentKeys(const std::vector& /*keys*/) { return OEMCrypto_ERROR_INVALID_CONTEXT; } @@ -92,4 +92,4 @@ class SubLicenseKeySession : public KeySession { } // namespace wvcdm -#endif // WVCDM_CORE_SUBLICENSE_KEY_SESSSION_H_ \ No newline at end of file +#endif // WVCDM_CORE_SUBLICENSE_KEY_SESSSION_H_ diff --git a/libwvdrmengine/cdm/core/src/cdm_engine.cpp b/libwvdrmengine/cdm/core/src/cdm_engine.cpp index ad4640d3..a5d4cfb0 100644 --- a/libwvdrmengine/cdm/core/src/cdm_engine.cpp +++ b/libwvdrmengine/cdm/core/src/cdm_engine.cpp @@ -586,7 +586,7 @@ CdmResponseType CdmEngine::QueryStatus(SecurityLevel security_level, open_sessions_stream << number_of_open_sessions; *query_response = open_sessions_stream.str(); } else if (query_token == QUERY_KEY_MAX_NUMBER_OF_SESSIONS) { - size_t maximum_number_of_sessions; + size_t maximum_number_of_sessions = 0; if (!crypto_session.GetMaxNumberOfSessions(&maximum_number_of_sessions)) { LOGW("CdmEngine::QueryStatus: GetMaxNumberOfOpenSessions failed"); return UNKNOWN_ERROR; diff --git a/libwvdrmengine/cdm/core/src/crypto_session.cpp b/libwvdrmengine/cdm/core/src/crypto_session.cpp index f167a22a..bed24b5e 100644 --- a/libwvdrmengine/cdm/core/src/crypto_session.cpp +++ b/libwvdrmengine/cdm/core/src/crypto_session.cpp @@ -1658,7 +1658,7 @@ bool CryptoSession::GetMaxNumberOfSessions(size_t* max) { return false; } - size_t max_sessions; + size_t max_sessions = 0; OEMCryptoResult status = OEMCrypto_GetMaxNumberOfSessions( requested_security_level_, &max_sessions); if (OEMCrypto_SUCCESS != status) { diff --git a/libwvdrmengine/cdm/core/src/oemcrypto_adapter_dynamic.cpp b/libwvdrmengine/cdm/core/src/oemcrypto_adapter_dynamic.cpp index 5a3b9e98..a40d7683 100644 --- a/libwvdrmengine/cdm/core/src/oemcrypto_adapter_dynamic.cpp +++ b/libwvdrmengine/cdm/core/src/oemcrypto_adapter_dynamic.cpp @@ -759,10 +759,10 @@ class Adapter { OEMCrypto_INITIALIZED_USING_L3_COULD_NOT_OPEN_FACTORY_KEYBOX); return false; } - uint8_t keybox[size]; - ssize_t size_read = file->Read(reinterpret_cast(keybox), size); + std::vector keybox(size); + ssize_t size_read = file->Read(reinterpret_cast(&keybox[0]), size); file->Close(); - if (level1_.InstallKeybox(keybox, size) != OEMCrypto_SUCCESS) { + if (level1_.InstallKeybox(&keybox[0], size_read) != OEMCrypto_SUCCESS) { LOGE("Could NOT install keybox from %s. Falling Back to L3.", filename.c_str()); level1_.Terminate(); diff --git a/libwvdrmengine/cdm/src/log.cpp b/libwvdrmengine/cdm/src/log.cpp index 61daf9d3..5fbfeb59 100644 --- a/libwvdrmengine/cdm/src/log.cpp +++ b/libwvdrmengine/cdm/src/log.cpp @@ -49,7 +49,7 @@ void Log(const char* file, const char* function, int line, LogPriority level, int len = snprintf(buf, LOG_BUF_SIZE, "[%s(%d):%s] ", filename, line, function); if (len < 0) len = 0; - if (len < sizeof(buf)) { + if (static_cast(len) < sizeof(buf)) { va_list ap; va_start(ap, format); vsnprintf(buf+len, LOG_BUF_SIZE-len, format, ap); diff --git a/libwvdrmengine/cdm/test/cdm_extended_duration_test.cpp b/libwvdrmengine/cdm/test/cdm_extended_duration_test.cpp index adf9af0b..01f56d80 100644 --- a/libwvdrmengine/cdm/test/cdm_extended_duration_test.cpp +++ b/libwvdrmengine/cdm/test/cdm_extended_duration_test.cpp @@ -30,12 +30,12 @@ namespace { // HTTP response codes. const int kHttpOk = 200; -const int kHttpBadRequest = 400; -const int kHttpInternalServerError = 500; +// The following two responses are unused, but left here for human debuggers. +// const int kHttpBadRequest = 400; +// const int kHttpInternalServerError = 500; const uint32_t kMinute = 60; const uint32_t kClockTolerance = 10; -const uint32_t kTwoMinutes = 120; const uint32_t kMaxUsageTableSize = 50; @@ -932,7 +932,6 @@ TEST_F(WvCdmExtendedDurationTest, DecryptionCloseSessionConcurrencyTest) { TEST_F(WvCdmExtendedDurationTest, UsageOverflowTest) { Provision(); - SubSampleInfo* data = &kEncryptedStreamingClip5SubSample; TestWvCdmClientPropertySet client_property_set; TestWvCdmClientPropertySet* property_set = NULL; @@ -959,7 +958,6 @@ TEST_F(WvCdmExtendedDurationTest, UsageOverflowTest) { decryptor_.CloseSession(session_id_); } - uint32_t num_usage_info = 0; CdmUsageInfo usage_info; CdmUsageInfoReleaseMessage release_msg; CdmResponseType status = decryptor_.GetUsageInfo( @@ -1003,9 +1001,6 @@ TEST_F(WvCdmExtendedDurationTest, AutomatedOfflineSessionReleaseOnTimerEvent) { uint32_t initial_open_sessions = QueryStatus(kLevelDefault, wvcdm::QUERY_KEY_NUMBER_OF_OPEN_SESSIONS); - uint32_t max_sessions = - QueryStatus(kLevelDefault, wvcdm::QUERY_KEY_MAX_NUMBER_OF_SESSIONS); - decryptor_.OpenSession(g_key_system, NULL, kDefaultCdmIdentifier, NULL, &session_id_); GenerateKeyRequest(kOfflineClip4, kLicenseTypeOffline); @@ -1059,9 +1054,6 @@ TEST_F(WvCdmExtendedDurationTest, AutomatedOfflineSessionReleaseOnOpenSession) { uint32_t initial_open_sessions = QueryStatus(kLevelDefault, wvcdm::QUERY_KEY_NUMBER_OF_OPEN_SESSIONS); - uint32_t max_sessions = - QueryStatus(kLevelDefault, wvcdm::QUERY_KEY_MAX_NUMBER_OF_SESSIONS); - decryptor_.OpenSession(g_key_system, NULL, kDefaultCdmIdentifier, NULL, &session_id_); GenerateKeyRequest(kOfflineClip4, kLicenseTypeOffline); @@ -1398,7 +1390,6 @@ TEST_P(WvCdmStreamingUsageReportTest, UsageTest) { decryptor_.CloseSession(session_id_); // Create usage report and validate - uint32_t num_usage_info = 0; CdmUsageInfo usage_info; CdmUsageInfoReleaseMessage release_msg; CdmResponseType status = decryptor_.GetUsageInfo( diff --git a/libwvdrmengine/cdm/test/cdm_feature_test.cpp b/libwvdrmengine/cdm/test/cdm_feature_test.cpp index 1d331de7..7e5552b5 100644 --- a/libwvdrmengine/cdm/test/cdm_feature_test.cpp +++ b/libwvdrmengine/cdm/test/cdm_feature_test.cpp @@ -47,12 +47,11 @@ namespace { #define N_ELEM(a) (sizeof(a) / sizeof(a[0])) -const char kPathDelimiter = '/'; - // HTTP response codes. const int kHttpOk = 200; -const int kHttpBadRequest = 400; -const int kHttpInternalServerError = 500; +// The following two responses are unused, but left here for human debuggers. +// const int kHttpBadRequest = 400; +// const int kHttpInternalServerError = 500; // Default license server, can be configured using --server command line option // Default key id (pssh), can be configured using --keyid command line option diff --git a/libwvdrmengine/cdm/test/request_license_test.cpp b/libwvdrmengine/cdm/test/request_license_test.cpp index c0476af1..56da4c35 100644 --- a/libwvdrmengine/cdm/test/request_license_test.cpp +++ b/libwvdrmengine/cdm/test/request_license_test.cpp @@ -42,8 +42,6 @@ namespace { #define N_ELEM(a) (sizeof(a)/sizeof(a[0])) -const char kPathDelimiter = '/'; - // HTTP response codes. const int kHttpOk = 200; const int kHttpBadRequest = 400; diff --git a/libwvdrmengine/level3/arm/Android.mk b/libwvdrmengine/level3/arm/Android.mk index 97a33ebb..0e4038a4 100644 --- a/libwvdrmengine/level3/arm/Android.mk +++ b/libwvdrmengine/level3/arm/Android.mk @@ -2,7 +2,8 @@ LOCAL_PATH:= $(call my-dir) include $(CLEAR_VARS) LOCAL_CFLAGS := \ -DDYNAMIC_ADAPTER \ - -Wno-unused + -Wno-unused \ + -Wno-unused-parameter LOCAL_C_INCLUDES := \ system/core/include \ vendor/widevine/libwvdrmengine/cdm/core/include \ diff --git a/libwvdrmengine/level3/arm64/Android.mk b/libwvdrmengine/level3/arm64/Android.mk index 3654ddf6..66daa31c 100644 --- a/libwvdrmengine/level3/arm64/Android.mk +++ b/libwvdrmengine/level3/arm64/Android.mk @@ -2,7 +2,8 @@ LOCAL_PATH:= $(call my-dir) include $(CLEAR_VARS) LOCAL_CFLAGS := \ -DDYNAMIC_ADAPTER \ - -Wno-unused + -Wno-unused \ + -Wno-unused-parameter LOCAL_C_INCLUDES := \ system/core/include \ vendor/widevine/libwvdrmengine/cdm/core/include \ diff --git a/libwvdrmengine/level3/mips/Android.mk b/libwvdrmengine/level3/mips/Android.mk index f6e62a7e..8e5f6849 100644 --- a/libwvdrmengine/level3/mips/Android.mk +++ b/libwvdrmengine/level3/mips/Android.mk @@ -2,7 +2,8 @@ LOCAL_PATH:= $(call my-dir) include $(CLEAR_VARS) LOCAL_CFLAGS := \ -DDYNAMIC_ADAPTER \ - -Wno-unused + -Wno-unused \ + -Wno-unused-parameter LOCAL_C_INCLUDES := \ system/core/include \ vendor/widevine/libwvdrmengine/cdm/core/include \ diff --git a/libwvdrmengine/level3/mips64/Android.mk b/libwvdrmengine/level3/mips64/Android.mk index 5e503dd8..354528fa 100644 --- a/libwvdrmengine/level3/mips64/Android.mk +++ b/libwvdrmengine/level3/mips64/Android.mk @@ -2,7 +2,8 @@ LOCAL_PATH:= $(call my-dir) include $(CLEAR_VARS) LOCAL_CFLAGS := \ -DDYNAMIC_ADAPTER \ - -Wno-unused + -Wno-unused \ + -Wno-unused-parameter LOCAL_C_INCLUDES := \ system/core/include \ vendor/widevine/libwvdrmengine/cdm/core/include \ diff --git a/libwvdrmengine/level3/x86/Android.mk b/libwvdrmengine/level3/x86/Android.mk index d63a2460..92b8bfd4 100644 --- a/libwvdrmengine/level3/x86/Android.mk +++ b/libwvdrmengine/level3/x86/Android.mk @@ -2,7 +2,8 @@ LOCAL_PATH:= $(call my-dir) include $(CLEAR_VARS) LOCAL_CFLAGS := \ -DDYNAMIC_ADAPTER \ - -Wno-unused + -Wno-unused \ + -Wno-unused-parameter LOCAL_C_INCLUDES := \ system/core/include \ vendor/widevine/libwvdrmengine/cdm/core/include \ diff --git a/libwvdrmengine/level3/x86_64/Android.mk b/libwvdrmengine/level3/x86_64/Android.mk index 9039763d..ca3aa664 100644 --- a/libwvdrmengine/level3/x86_64/Android.mk +++ b/libwvdrmengine/level3/x86_64/Android.mk @@ -2,7 +2,8 @@ LOCAL_PATH:= $(call my-dir) include $(CLEAR_VARS) LOCAL_CFLAGS := \ -DDYNAMIC_ADAPTER \ - -Wno-unused + -Wno-unused \ + -Wno-unused-parameter LOCAL_C_INCLUDES := \ system/core/include \ vendor/widevine/libwvdrmengine/cdm/core/include \ diff --git a/libwvdrmengine/mediacrypto/test/WVCryptoPlugin_test.cpp b/libwvdrmengine/mediacrypto/test/WVCryptoPlugin_test.cpp index 46ef48fa..811e98b5 100644 --- a/libwvdrmengine/mediacrypto/test/WVCryptoPlugin_test.cpp +++ b/libwvdrmengine/mediacrypto/test/WVCryptoPlugin_test.cpp @@ -475,7 +475,6 @@ TEST_F(WVCryptoPluginTest, CommunicatesSecureBufferRequest) { WVCryptoPlugin plugin(sessionId, kSessionIdSize, cdm.get()); uint32_t bytesWritten = 0; - Status err = Status::OK; std::string errorDetailMessage; DestinationBuffer hDestination; hDestination.type = BufferType::SHARED_MEMORY; @@ -590,7 +589,6 @@ TEST_F(WVCryptoPluginTest, SetsFlagsForMinimumSubsampleRuns) { WVCryptoPlugin plugin(sessionId, kSessionIdSize, cdm.get()); uint32_t bytesWritten = 0; - Status err = Status::OK; std::string errorDetailMessage; DestinationBuffer hDestination; hDestination.type = BufferType::SHARED_MEMORY; @@ -705,7 +703,6 @@ TEST_F(WVCryptoPluginTest, AllowsSessionIdChanges) { WVCryptoPlugin plugin(blank, 0, cdm.get()); uint32_t bytesWritten = 0; - Status err = Status::OK; std::string errorDetailMessage; DestinationBuffer hDestination; hDestination.type = BufferType::SHARED_MEMORY; diff --git a/libwvdrmengine/mediadrm/test/WVDrmPlugin_test.cpp b/libwvdrmengine/mediadrm/test/WVDrmPlugin_test.cpp index 1d0d8985..14f20c51 100644 --- a/libwvdrmengine/mediadrm/test/WVDrmPlugin_test.cpp +++ b/libwvdrmengine/mediadrm/test/WVDrmPlugin_test.cpp @@ -730,7 +730,6 @@ TEST_F(WVDrmPluginTest, QueriesKeyStatus) { for (std::map::iterator itr = expectedLicenseStatus.begin(); itr != expectedLicenseStatus.end(); ++itr) { - const std::string& key = itr->first; keyValuePair.value = hLicenseStatus[i++].value; EXPECT_EQ(itr->second.c_str(), std::string(keyValuePair.value.c_str())); } @@ -1409,7 +1408,6 @@ TEST_F(WVDrmPluginTest, FailsGenericMethodsWithoutAnAlgorithmSet) { std::vector input; std::vector iv; std::vector output; - bool match; // Provide expected behavior to support session creation EXPECT_CALL(*cdm, OpenSession(StrEq("com.widevine"), _, _, _, _)) @@ -1697,7 +1695,6 @@ TEST_F(WVDrmPluginTest, CallsGenericVerify) { message.assign(messageRaw, messageRaw + kDataSize); std::vector signature; signature.assign(signatureRaw, signatureRaw + kSignatureSize); - bool match; { InSequence calls; @@ -2364,7 +2361,6 @@ TEST_F(WVDrmPluginTest, CanSetSessionSharing) { } WVDrmPlugin plugin(cdm.get(), appPackageName, &crypto, false); - Status res; // Test turning on session sharing Status status = plugin.setPropertyString(hidl_string("sessionSharing"), @@ -2461,4 +2457,3 @@ TEST_F(WVDrmPluginTest, AllowsStoringOfSessionSharingId) { } // namespace drm } // namespace hardware } // namespace wvdrm - From a0040ec5bfa4e3472bad1f8f285762b10ebb1c70 Mon Sep 17 00:00:00 2001 From: Fred Gylys-Colwell Date: Wed, 14 Feb 2018 17:37:11 -0800 Subject: [PATCH 4/6] Halt tests after multiple failures Merge from Widevine repo of http://go/wvgerrit/43440 This CL changes several tests so that they abort after multiple failures. This prevents a network error from putting one of the usage table tests into an infinite loop. bug: 73397596 test: unit tests Change-Id: Iaaec9eb2b39a6a2b2cfc90ee1c28bae0486aa851 --- .../cdm/test/cdm_extended_duration_test.cpp | 14 +++++++++++--- libwvdrmengine/cdm/test/request_license_test.cpp | 15 +++++++++++---- 2 files changed, 22 insertions(+), 7 deletions(-) diff --git a/libwvdrmengine/cdm/test/cdm_extended_duration_test.cpp b/libwvdrmengine/cdm/test/cdm_extended_duration_test.cpp index 01f56d80..eaf9f4a7 100644 --- a/libwvdrmengine/cdm/test/cdm_extended_duration_test.cpp +++ b/libwvdrmengine/cdm/test/cdm_extended_duration_test.cpp @@ -963,13 +963,17 @@ TEST_F(WvCdmExtendedDurationTest, UsageOverflowTest) { CdmResponseType status = decryptor_.GetUsageInfo( "", kDefaultCdmIdentifier, &usage_info); EXPECT_EQ(usage_info.empty() ? NO_ERROR : KEY_MESSAGE, status); + int error_count = 0; while (usage_info.size() > 0) { for (size_t i = 0; i < usage_info.size(); ++i) { release_msg = GetUsageInfoResponse(g_license_server, g_client_auth, usage_info[i]); EXPECT_EQ(NO_ERROR, decryptor_.ReleaseUsageInfo(release_msg, - kDefaultCdmIdentifier)); + kDefaultCdmIdentifier)) + << i << "/" << usage_info.size() << " (err " << (error_count++) << ")" + << release_msg; } + ASSERT_LE(error_count, 100); // Give up after 100 failures. status = decryptor_.GetUsageInfo("", kDefaultCdmIdentifier, &usage_info); switch (status) { case KEY_MESSAGE: EXPECT_FALSE(usage_info.empty()); break; @@ -1395,6 +1399,7 @@ TEST_P(WvCdmStreamingUsageReportTest, UsageTest) { CdmResponseType status = decryptor_.GetUsageInfo( "", kDefaultCdmIdentifier, &usage_info); EXPECT_EQ(usage_info.empty() ? NO_ERROR : KEY_MESSAGE, status); + int error_count = 0; while (usage_info.size() > 0) { for (size_t i = 0; i < usage_info.size(); ++i) { ValidateReleaseRequest(usage_info[i], @@ -1403,9 +1408,12 @@ TEST_P(WvCdmStreamingUsageReportTest, UsageTest) { expected_seconds_since_last_playback); release_msg = GetUsageInfoResponse(g_license_server, g_client_auth, usage_info[i]); - EXPECT_EQ(NO_ERROR, decryptor_.ReleaseUsageInfo(release_msg, - kDefaultCdmIdentifier)); + EXPECT_EQ(NO_ERROR, + decryptor_.ReleaseUsageInfo(release_msg, kDefaultCdmIdentifier)) + << i << "/" << usage_info.size() << " (err " << (error_count++) << ")" + << release_msg; } + ASSERT_LE(error_count, 100); // Give up after 100 failures. status = decryptor_.GetUsageInfo("", kDefaultCdmIdentifier, &usage_info); switch (status) { case KEY_MESSAGE: diff --git a/libwvdrmengine/cdm/test/request_license_test.cpp b/libwvdrmengine/cdm/test/request_license_test.cpp index 56da4c35..f858775c 100644 --- a/libwvdrmengine/cdm/test/request_license_test.cpp +++ b/libwvdrmengine/cdm/test/request_license_test.cpp @@ -2832,13 +2832,17 @@ TEST_F(WvCdmRequestLicenseTest, UsageInfoRetryTest) { // before release. status = decryptor_.GetUsageInfo(app_id, kDefaultCdmIdentifier, &usage_info); EXPECT_EQ(usage_info.empty() ? NO_ERROR : KEY_MESSAGE, status); + int error_count = 0; while (usage_info.size() > 0) { for (size_t i = 0; i < usage_info.size(); ++i) { release_msg = GetUsageInfoResponse(g_license_server, g_client_auth, usage_info[i]); EXPECT_EQ(NO_ERROR, decryptor_.ReleaseUsageInfo(release_msg, - kDefaultCdmIdentifier)); + kDefaultCdmIdentifier)) + << i << "/" << usage_info.size() << " (err " << (error_count++) << ")" + << release_msg; } + ASSERT_LE(error_count, 100); // Give up after 100 failures. status = decryptor_.GetUsageInfo( app_id, kDefaultCdmIdentifier, &usage_info); switch (status) { @@ -2925,14 +2929,17 @@ TEST_P(WvCdmUsageInfoTest, UsageInfo) { decryptor_.GetUsageInfo(usage_info_data->app_id, kDefaultCdmIdentifier, &usage_info); EXPECT_EQ(usage_info.empty() ? NO_ERROR : KEY_MESSAGE, status); + int error_count = 0; while (usage_info.size() > 0) { for (size_t i = 0; i < usage_info.size(); ++i) { release_msg = GetUsageInfoResponse(g_license_server, g_client_auth, usage_info[i]); - EXPECT_EQ( - NO_ERROR, - decryptor_.ReleaseUsageInfo(release_msg, kDefaultCdmIdentifier)); + EXPECT_EQ(NO_ERROR, + decryptor_.ReleaseUsageInfo(release_msg, kDefaultCdmIdentifier)) + << i << "/" << usage_info.size() << " (err " << (error_count++) << ")" + << release_msg; } + ASSERT_LE(error_count, 100); // Give up after 100 failures. status = decryptor_.GetUsageInfo(usage_info_data->app_id, kDefaultCdmIdentifier, &usage_info); EXPECT_EQ(usage_info.empty() ? NO_ERROR : KEY_MESSAGE, status); From 68e22bc2cdb40b4dcc7ee49af520775586968531 Mon Sep 17 00:00:00 2001 From: Srujan Gaddam Date: Fri, 16 Feb 2018 14:20:49 -0800 Subject: [PATCH 5/6] Fix test sample for cbcs decryption Merge of http://go/wvgerrit/43541 Test: Unit/Integration tests b/73500155 This change uses the same clear data as the kCenc30Cbc1Key33Sample to verify decryption, since it shares the same key as opposed to the 32Sample. --- libwvdrmengine/cdm/test/request_license_test.cpp | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/libwvdrmengine/cdm/test/request_license_test.cpp b/libwvdrmengine/cdm/test/request_license_test.cpp index f858775c..fa9f07e6 100644 --- a/libwvdrmengine/cdm/test/request_license_test.cpp +++ b/libwvdrmengine/cdm/test/request_license_test.cpp @@ -1052,14 +1052,14 @@ Cenc30SampleInfo kCenc30CbcsKey33Sample = { true, wvcdm::a2bs_hex("30303030303030303030303030303033"), wvcdm::a2bs_hex("9FBE45DD47DA7EBA09A3E24CBA95C9AF"), wvcdm::a2bs_hex( - "4392E38BAE263267ED15394DE349AD1577F37B7D906C3A61536EE5A288F66F22F2" - "F5098964B7F2860A848C3C4FD30E538B3BCD2E700DC3FBC1657A6E9EAE44DE97C4" - "6F27C82A49198EE185D92931F093C3342FDBF6CF8203E18CCDC4B88E79C95EC052" - "3FD10F9409945349169FAA8F6A37179D2BEDC04A158A09BCBF742DA05245428788" - "E972B9B465FED5849AEDDB74B8919673C0C8829B5B062A38B3146CB8D497F03A4D" - "5C0A1D463504C1F116A811EF32503695B8FF78D9E93CDF7B2F7493E8043D4DE110" - "FE1D342D1C0175BF1466A544FC0D02DD0E314098256DD65B48098323C3AED9B7E0" - "CF260DBC5A0F09A46E39AE5E26A66ABFA52CBA26FBA83975E4"), + "E300F37FEB0CDD9F276E67B971FF423003F3BF21DCF6100BA453A473A4522A19A8" + "2E098AA25511011D386FC7092FE3B407DF2BEB3AD57D5E1178F041E3FCABE25193" + "3F5EE35670CEB96BA3DAF922484F9A37773EF75D4B17FACC80B475004A6229AB4C" + "DFFA426468E578DE6A0285D942CDE476E06FF907D03F382552C2E14399C3FC2D21" + "9A59819FFF837EBC88A9F83A42D37F48ED8564EB40AC3BA8A6D2634A81F04FC2F1" + "379A45869036FD72B39C88222646AB7486A8416D78AB75951EB87ED1E16DF69209" + "A6966AC93C7BB65B85E429357A732CBC75F6EFB1781859FB771D60D11EB381D9CA" + "63F793507B02207810773FCABED0240E5BEEAD30116014E481"), wvcdm::a2bs_hex( "E7C566D86E98C36D2DCA54A966E7B469B6094B9201F200932F8EB5E1A94FB0B977" "FAB8DFDAD57C677E279615F4EAFA872CA8EFF83179E4DE2AB78E6B41A860C42203" From 3480900b1a1c9e17470bba52984a4afaa7705e05 Mon Sep 17 00:00:00 2001 From: Rahul Frias Date: Fri, 16 Feb 2018 13:45:43 -0800 Subject: [PATCH 6/6] Correct format specifier [ Merged from http://go/wvgerrit/43640 ] Bug: 62266605 Test: WV unit/integration test Change-Id: I9944805f0dd7f5b33e3a0b2eb40f2a3a6e26489e --- .../cdm/core/src/crypto_session.cpp | 74 +++++++++---------- 1 file changed, 36 insertions(+), 38 deletions(-) diff --git a/libwvdrmengine/cdm/core/src/crypto_session.cpp b/libwvdrmengine/cdm/core/src/crypto_session.cpp index 2f76eb13..e7a7be58 100644 --- a/libwvdrmengine/cdm/core/src/crypto_session.cpp +++ b/libwvdrmengine/cdm/core/src/crypto_session.cpp @@ -646,7 +646,7 @@ CdmResponseType CryptoSession::Open(SecurityLevel requested_security_level) { OEMCryptoResult sts = OEMCrypto_OpenSession(&sid, requested_security_level); if (OEMCrypto_SUCCESS == sts) { oec_session_id_ = static_cast(sid); - LOGV("OpenSession: id= %ld", (uint32_t)oec_session_id_); + LOGV("OpenSession: id= %lu", oec_session_id_); open_ = true; } else if (OEMCrypto_ERROR_TOO_MANY_SESSIONS == sts) { LOGE("OEMCrypto_Open failed: %d, open sessions: %ld, initialized: %d", sts, @@ -719,7 +719,7 @@ CdmResponseType CryptoSession::Open(SecurityLevel requested_security_level) { } void CryptoSession::Close() { - LOGV("CloseSession: id=%ld open=%s", (uint32_t)oec_session_id_, + LOGV("CloseSession: id=%lu open=%s", oec_session_id_, open_ ? "true" : "false"); OEMCryptoResult close_sts; @@ -809,7 +809,7 @@ CdmResponseType CryptoSession::LoadKeys( key_session_.reset(new EntitlementKeySession(oec_session_id_, metrics_)); } - LOGV("LoadKeys: id=%ld", (uint32_t)oec_session_id_); + LOGV("LoadKeys: id=%lu", oec_session_id_); OEMCryptoResult sts = key_session_->LoadKeys( message, signature, mac_key_iv, mac_key, keys, provider_session_token, &cipher_mode_, srm_requirement); @@ -861,7 +861,7 @@ bool CryptoSession::LoadCertificatePrivateKey(std::string& wrapped_key) { OEMCrypto_GetOEMPublicCertificate(oec_session_id_, buf, &buf_size); metrics_->oemcrypto_get_oem_public_certificate_.Increment(sts); - LOGV("LoadDeviceRSAKey: id=%ld", (uint32_t)oec_session_id_); + LOGV("LoadDeviceRSAKey: id=%lu", oec_session_id_); M_TIME( sts = OEMCrypto_LoadDeviceRSAKey( oec_session_id_, reinterpret_cast(wrapped_key.data()), @@ -905,7 +905,7 @@ bool CryptoSession::RefreshKeys(const std::string& message, ko->key_control = NULL; } } - LOGV("RefreshKeys: id=%ld", static_cast(oec_session_id_)); + LOGV("RefreshKeys: id=%lu", oec_session_id_); OEMCryptoResult refresh_sts; M_TIME(refresh_sts = OEMCrypto_RefreshKeys( oec_session_id_, msg, message.size(), @@ -958,7 +958,7 @@ bool CryptoSession::GenerateDerivedKeys(const std::string& message, bool CryptoSession::GenerateSignature(const std::string& message, std::string* signature) { - LOGV("GenerateSignature: id=%ld", (uint32_t)oec_session_id_); + LOGV("GenerateSignature: id=%lu", oec_session_id_); if (!signature) { LOGE("GenerateSignature: null signature string"); return false; @@ -996,7 +996,7 @@ bool CryptoSession::GenerateSignature(const std::string& message, bool CryptoSession::GenerateRsaSignature(const std::string& message, std::string* signature) { - LOGV("GenerateRsaSignature: id=%ld", (uint32_t)oec_session_id_); + LOGV("GenerateRsaSignature: id=%lu", oec_session_id_); if (!signature) { LOGE("GenerateRsaSignature: null signature string"); return false; @@ -1146,7 +1146,7 @@ CdmResponseType CryptoSession::Decrypt(const CdmDecryptionParameters& params) { } bool CryptoSession::UsageInformationSupport(bool* has_support) { - LOGV("UsageInformationSupport: id=%ld", (uint32_t)oec_session_id_); + LOGV("UsageInformationSupport: id=%lu", oec_session_id_); if (!initialized_) return false; *has_support = OEMCrypto_SupportsUsageTable(requested_security_level_); @@ -1154,8 +1154,8 @@ bool CryptoSession::UsageInformationSupport(bool* has_support) { } CdmResponseType CryptoSession::UpdateUsageInformation() { - LOGV("CryptoSession::UpdateUsageInformation: id=%ld", - (uint32_t)oec_session_id_); + LOGV("CryptoSession::UpdateUsageInformation: id=%lu", + oec_session_id_); AutoLock auto_lock(crypto_lock_); if (!initialized_) return UNKNOWN_ERROR; @@ -1175,7 +1175,7 @@ CdmResponseType CryptoSession::UpdateUsageInformation() { CdmResponseType CryptoSession::DeactivateUsageInformation( const std::string& provider_session_token) { - LOGV("DeactivateUsageInformation: id=%ld", (uint32_t)oec_session_id_); + LOGV("DeactivateUsageInformation: id=%lu", oec_session_id_); AutoLock auto_lock(crypto_lock_); uint8_t* pst = reinterpret_cast( @@ -1183,7 +1183,7 @@ CdmResponseType CryptoSession::DeactivateUsageInformation( // TODO(fredgc or rfrias): make sure oec_session_id_ is valid. OEMCryptoResult status = OEMCrypto_DeactivateUsageEntry( - (uint32_t)oec_session_id_, pst, provider_session_token.length()); + oec_session_id_, pst, provider_session_token.length()); metrics_->oemcrypto_deactivate_usage_entry_.Increment(status); switch (status) { @@ -1202,7 +1202,7 @@ CdmResponseType CryptoSession::GenerateUsageReport( const std::string& provider_session_token, std::string* usage_report, UsageDurationStatus* usage_duration_status, int64_t* seconds_since_started, int64_t* seconds_since_last_played) { - LOGV("GenerateUsageReport: id=%ld", (uint32_t)oec_session_id_); + LOGV("GenerateUsageReport: id=%lu", oec_session_id_); if (NULL == usage_report) { LOGE("CryptoSession::GenerateUsageReport: usage_report parameter is null"); @@ -1293,7 +1293,7 @@ CdmResponseType CryptoSession::GenerateUsageReport( CdmResponseType CryptoSession::ReleaseUsageInformation( const std::string& message, const std::string& signature, const std::string& provider_session_token) { - LOGV("ReleaseUsageInformation: id=%ld", (uint32_t)oec_session_id_); + LOGV("ReleaseUsageInformation: id=%lu", oec_session_id_); { AutoLock auto_lock(crypto_lock_); if (usage_table_header_ != NULL) { @@ -1434,8 +1434,7 @@ bool CryptoSession::RewrapCertificate(const std::string& signed_message, const std::string& iv, const std::string& wrapping_key, std::string* wrapped_private_key) { - LOGV("CryptoSession::RewrapCertificate, session id=%ld", - static_cast(oec_session_id_)); + LOGV("CryptoSession::RewrapCertificate, session id=%lu", oec_session_id_); if (pre_provision_token_type_ == kClientTokenKeybox) { return RewrapDeviceRSAKey(signed_message, signature, nonce, private_key, iv, @@ -1448,8 +1447,8 @@ bool CryptoSession::RewrapCertificate(const std::string& signed_message, } else { LOGE( "CryptoSession::RewrapCertificate, Bad pre-provision type=%d: " - "session id=%ld", - pre_provision_token_type_, static_cast(oec_session_id_)); + "session id=%lu", + pre_provision_token_type_, oec_session_id_); return false; } } @@ -1460,8 +1459,7 @@ bool CryptoSession::RewrapDeviceRSAKey(const std::string& message, const std::string& enc_rsa_key, const std::string& rsa_key_iv, std::string* wrapped_rsa_key) { - LOGV("CryptoSession::RewrapDeviceRSAKey, session id=%ld", - static_cast(oec_session_id_)); + LOGV("CryptoSession::RewrapDeviceRSAKey, session id=%lu", oec_session_id_); const uint8_t* signed_msg = reinterpret_cast(message.data()); const uint8_t* msg_rsa_key = NULL; @@ -1514,8 +1512,8 @@ bool CryptoSession::RewrapDeviceRSAKey30(const std::string& message, const std::string& iv, const std::string& wrapping_key, std::string* wrapped_private_key) { - LOGV("CryptoSession::RewrapDeviceRSAKey30, session id=%ld", - static_cast(oec_session_id_)); + LOGV("CryptoSession::RewrapDeviceRSAKey30, session id=%lu", + oec_session_id_); const uint8_t* signed_msg = reinterpret_cast(message.data()); const uint8_t* msg_private_key = NULL; @@ -1570,7 +1568,7 @@ bool CryptoSession::RewrapDeviceRSAKey30(const std::string& message, bool CryptoSession::GetHdcpCapabilities(HdcpCapability* current, HdcpCapability* max) { - LOGV("GetHdcpCapabilities: id=%ld", (uint32_t)oec_session_id_); + LOGV("GetHdcpCapabilities: id=%lu", oec_session_id_); if (!initialized_) return false; if (current == NULL || max == NULL) { LOGE( @@ -1594,7 +1592,7 @@ bool CryptoSession::GetHdcpCapabilities(HdcpCapability* current, bool CryptoSession::GetSupportedCertificateTypes( SupportedCertificateTypes* support) { - LOGV("GetSupportedCertificateTypes: id=%ld", (uint32_t)oec_session_id_); + LOGV("GetSupportedCertificateTypes: id=%lu", oec_session_id_); if (!initialized_) return false; if (support == NULL) { LOGE( @@ -1720,7 +1718,7 @@ CdmResponseType CryptoSession::GenericEncrypt(const std::string& in_buffer, const std::string& iv, CdmEncryptionAlgorithm algorithm, std::string* out_buffer) { - LOGV("GenericEncrypt: id=%ld", (uint32_t)oec_session_id_); + LOGV("GenericEncrypt: id=%lu", oec_session_id_); if (!out_buffer) { LOGE("CryptoSession::GenericEncrypt: out_buffer not provided"); return PARAMETER_NULL; @@ -1772,7 +1770,7 @@ CdmResponseType CryptoSession::GenericDecrypt(const std::string& in_buffer, const std::string& iv, CdmEncryptionAlgorithm algorithm, std::string* out_buffer) { - LOGV("GenericDecrypt: id=%ld", (uint32_t)oec_session_id_); + LOGV("GenericDecrypt: id=%lu", oec_session_id_); if (!out_buffer) { LOGE("CryptoSession::GenericDecrypt: out_buffer not provided"); return PARAMETER_NULL; @@ -1823,7 +1821,7 @@ CdmResponseType CryptoSession::GenericSign(const std::string& message, const std::string& key_id, CdmSigningAlgorithm algorithm, std::string* signature) { - LOGV("GenericSign: id=%ld", (uint32_t)oec_session_id_); + LOGV("GenericSign: id=%lu", oec_session_id_); if (!signature) { LOGE("CryptoSession::GenericSign: signature not provided"); return PARAMETER_NULL; @@ -1883,7 +1881,7 @@ CdmResponseType CryptoSession::GenericVerify(const std::string& message, const std::string& key_id, CdmSigningAlgorithm algorithm, const std::string& signature) { - LOGV("GenericVerify: id=%ld", (uint32_t)oec_session_id_); + LOGV("GenericVerify: id=%lu", oec_session_id_); OEMCrypto_Algorithm oec_algorithm = GenericSigningAlgorithm(algorithm); if (oec_algorithm == kInvalidAlgorithm) { @@ -1921,7 +1919,7 @@ CdmResponseType CryptoSession::GenericVerify(const std::string& message, CdmResponseType CryptoSession::GetUsageSupportType( CdmUsageSupportType* usage_support_type) { - LOGV("GetUsageSupportType: id=%ld", (uint32_t)oec_session_id_); + LOGV("GetUsageSupportType: id=%lu", oec_session_id_); if (usage_support_type == NULL) { LOGE("GetUsageSupportType: usage_support_type param not provided"); @@ -1953,7 +1951,7 @@ CdmResponseType CryptoSession::GetUsageSupportType( CdmResponseType CryptoSession::CreateUsageTableHeader( CdmUsageTableHeader* usage_table_header) { - LOGV("CreateUsageTableHeader: id=%ld", (uint32_t)oec_session_id_); + LOGV("CreateUsageTableHeader: id=%lu", oec_session_id_); if (usage_table_header == NULL) { LOGE("CreateUsageTableHeader: usage_table_header param not provided"); @@ -1989,7 +1987,7 @@ CdmResponseType CryptoSession::CreateUsageTableHeader( CdmResponseType CryptoSession::LoadUsageTableHeader( const CdmUsageTableHeader& usage_table_header) { - LOGV("LoadUsageTableHeader: id=%ld", (uint32_t)oec_session_id_); + LOGV("LoadUsageTableHeader: id=%lu", oec_session_id_); OEMCryptoResult result = OEMCrypto_LoadUsageTableHeader( requested_security_level_, @@ -2024,7 +2022,7 @@ CdmResponseType CryptoSession::LoadUsageTableHeader( } CdmResponseType CryptoSession::CreateUsageEntry(uint32_t* entry_number) { - LOGV("CreateUsageEntry: id=%ld", (uint32_t)oec_session_id_); + LOGV("CreateUsageEntry: id=%lu", oec_session_id_); if (entry_number == NULL) { LOGE("CreateUsageEntry: entry_number param not provided"); @@ -2050,7 +2048,7 @@ CdmResponseType CryptoSession::CreateUsageEntry(uint32_t* entry_number) { CdmResponseType CryptoSession::LoadUsageEntry( uint32_t entry_number, const CdmUsageEntry& usage_entry) { - LOGV("LoadUsageEntry: id=%ld", (uint32_t)oec_session_id_); + LOGV("LoadUsageEntry: id=%lu", oec_session_id_); OEMCryptoResult result = OEMCrypto_LoadUsageEntry( oec_session_id_, entry_number, @@ -2079,7 +2077,7 @@ CdmResponseType CryptoSession::LoadUsageEntry( CdmResponseType CryptoSession::UpdateUsageEntry( CdmUsageTableHeader* usage_table_header, CdmUsageEntry* usage_entry) { - LOGV("UpdateUsageEntry: id=%ld", (uint32_t)oec_session_id_); + LOGV("UpdateUsageEntry: id=%lu", oec_session_id_); if (usage_table_header == NULL) { LOGE("UpdateUsageEntry: usage_table_header param not provided"); @@ -2121,7 +2119,7 @@ CdmResponseType CryptoSession::UpdateUsageEntry( CdmResponseType CryptoSession::ShrinkUsageTableHeader( uint32_t new_entry_count, CdmUsageTableHeader* usage_table_header) { - LOGV("ShrinkUsageTableHeader: id=%ld", (uint32_t)oec_session_id_); + LOGV("ShrinkUsageTableHeader: id=%lu", oec_session_id_); if (usage_table_header == NULL) { LOGE("ShrinkUsageTableHeader: usage_table_header param not provided"); @@ -2154,7 +2152,7 @@ CdmResponseType CryptoSession::ShrinkUsageTableHeader( } CdmResponseType CryptoSession::MoveUsageEntry(uint32_t new_entry_number) { - LOGV("MoveUsageEntry: id=%ld", (uint32_t)oec_session_id_); + LOGV("MoveUsageEntry: id=%lu", oec_session_id_); OEMCryptoResult result = OEMCrypto_MoveEntry(oec_session_id_, new_entry_number); @@ -2219,7 +2217,7 @@ bool CryptoSession::CreateOldUsageEntry( CdmResponseType CryptoSession::CopyOldUsageEntry( const std::string& provider_session_token) { - LOGV("CopyOldUsageEntry: id=%ld", (uint32_t)oec_session_id_); + LOGV("CopyOldUsageEntry: id=%lu", oec_session_id_); OEMCryptoResult result = OEMCrypto_CopyOldUsageEntry( oec_session_id_, @@ -2237,7 +2235,7 @@ CdmResponseType CryptoSession::CopyOldUsageEntry( bool CryptoSession::GetAnalogOutputCapabilities(bool* can_support_output, bool* can_disable_output, bool* can_support_cgms_a) { - LOGV("GetAnalogOutputCapabilities: id=%ld", (uint32_t)oec_session_id_); + LOGV("GetAnalogOutputCapabilities: id=%lu", oec_session_id_); uint32_t flags = OEMCrypto_GetAnalogOutputFlags(requested_security_level_); if ((flags & OEMCrypto_Unknown_Analog_Output) != 0) return false;