From 4c7e6ca78b922d80ecf007a31e5d85ed67d40ce5 Mon Sep 17 00:00:00 2001 From: Fred Gylys-Colwell Date: Wed, 17 Jan 2018 19:24:31 -0800 Subject: [PATCH 1/2] Don't try to open non-existant file Merge from Widevine repo of http://go/wvgerrit/40883 The oemcrypto dynamic adapter will try to load a keybox from the filesystem if oemcrypto reports it doesn't have one. Previously, it would check the size of the file, and then open the file before responding to errors. Opening a non-existant file would result in a segfault. With this CL, we do not try to open the file if the size is not positive. Test: unit tests Bug: 72129404 Change-Id: I243b5d49837455c0ce07802e32e4d7e809286cfd --- .../cdm/core/src/oemcrypto_adapter_dynamic.cpp | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/libwvdrmengine/cdm/core/src/oemcrypto_adapter_dynamic.cpp b/libwvdrmengine/cdm/core/src/oemcrypto_adapter_dynamic.cpp index 4d4c8c57..b0aef465 100644 --- a/libwvdrmengine/cdm/core/src/oemcrypto_adapter_dynamic.cpp +++ b/libwvdrmengine/cdm/core/src/oemcrypto_adapter_dynamic.cpp @@ -714,8 +714,16 @@ class Adapter { return false; } ssize_t size = file_system.FileSize(filename); + if (size <= 0) { + LOGW("Could not find %s. Falling Back to L3.", filename.c_str()); + level1_.Terminate(); + metrics->OemCryptoDynamicAdapterMetrics::SetInitializationMode( + wvcdm::metrics:: + OEMCrypto_INITIALIZED_USING_L3_COULD_NOT_OPEN_FACTORY_KEYBOX); + return false; + } wvcdm::File* file = file_system.Open(filename, file_system.kReadOnly); - if (size <= 0 || !file) { + if (!file) { LOGW("Could not open %s. Falling Back to L3.", filename.c_str()); level1_.Terminate(); metrics->OemCryptoDynamicAdapterMetrics::SetInitializationMode( From 07ce4f5a553fb5974de9d06e5ec3fc5aa666e312 Mon Sep 17 00:00:00 2001 From: Rahul Frias Date: Thu, 18 Jan 2018 14:41:41 -0800 Subject: [PATCH 2/2] Address x86 OEMCrypto compilation failures b/71650075 Test: Verified by wv unit/integration tests on taimen, compilation on aosp_x86, sdk_gphone_x86 Change-Id: I62c132f1a904e613ce5ea2734822f2d9580d22ef --- libwvdrmengine/level3/mips/Android.mk | 3 ++- libwvdrmengine/level3/mips64/Android.mk | 3 ++- libwvdrmengine/level3/x86/Android.mk | 1 + libwvdrmengine/level3/x86_64/Android.mk | 1 + 4 files changed, 6 insertions(+), 2 deletions(-) diff --git a/libwvdrmengine/level3/mips/Android.mk b/libwvdrmengine/level3/mips/Android.mk index bbc69a98..f6e62a7e 100644 --- a/libwvdrmengine/level3/mips/Android.mk +++ b/libwvdrmengine/level3/mips/Android.mk @@ -4,6 +4,7 @@ LOCAL_CFLAGS := \ -DDYNAMIC_ADAPTER \ -Wno-unused LOCAL_C_INCLUDES := \ + system/core/include \ vendor/widevine/libwvdrmengine/cdm/core/include \ vendor/widevine/libwvdrmengine/level3/include \ vendor/widevine/libwvdrmengine/oemcrypto/include @@ -18,4 +19,4 @@ LOCAL_PROPRIETARY_MODULE := true LOCAL_MODULE_TAGS := optional LOCAL_MODULE_OWNER := widevine LOCAL_MODULE_TARGET_ARCH := mips -include $(BUILD_STATIC_LIBRARY) \ No newline at end of file +include $(BUILD_STATIC_LIBRARY) diff --git a/libwvdrmengine/level3/mips64/Android.mk b/libwvdrmengine/level3/mips64/Android.mk index 257c05c4..5e503dd8 100644 --- a/libwvdrmengine/level3/mips64/Android.mk +++ b/libwvdrmengine/level3/mips64/Android.mk @@ -4,6 +4,7 @@ LOCAL_CFLAGS := \ -DDYNAMIC_ADAPTER \ -Wno-unused LOCAL_C_INCLUDES := \ + system/core/include \ vendor/widevine/libwvdrmengine/cdm/core/include \ vendor/widevine/libwvdrmengine/level3/include \ vendor/widevine/libwvdrmengine/oemcrypto/include @@ -18,4 +19,4 @@ LOCAL_PROPRIETARY_MODULE := true LOCAL_MODULE_TAGS := optional LOCAL_MODULE_OWNER := widevine LOCAL_MODULE_TARGET_ARCH := mips64 -include $(BUILD_STATIC_LIBRARY) \ No newline at end of file +include $(BUILD_STATIC_LIBRARY) diff --git a/libwvdrmengine/level3/x86/Android.mk b/libwvdrmengine/level3/x86/Android.mk index de8f5b03..d63a2460 100644 --- a/libwvdrmengine/level3/x86/Android.mk +++ b/libwvdrmengine/level3/x86/Android.mk @@ -4,6 +4,7 @@ LOCAL_CFLAGS := \ -DDYNAMIC_ADAPTER \ -Wno-unused LOCAL_C_INCLUDES := \ + system/core/include \ vendor/widevine/libwvdrmengine/cdm/core/include \ vendor/widevine/libwvdrmengine/level3/include \ vendor/widevine/libwvdrmengine/oemcrypto/include diff --git a/libwvdrmengine/level3/x86_64/Android.mk b/libwvdrmengine/level3/x86_64/Android.mk index b721c00e..9039763d 100644 --- a/libwvdrmengine/level3/x86_64/Android.mk +++ b/libwvdrmengine/level3/x86_64/Android.mk @@ -4,6 +4,7 @@ LOCAL_CFLAGS := \ -DDYNAMIC_ADAPTER \ -Wno-unused LOCAL_C_INCLUDES := \ + system/core/include \ vendor/widevine/libwvdrmengine/cdm/core/include \ vendor/widevine/libwvdrmengine/level3/include \ vendor/widevine/libwvdrmengine/oemcrypto/include