From 31a2f097920bc6b388582641dcc37a43818ea678 Mon Sep 17 00:00:00 2001 From: Ian Benz Date: Wed, 10 May 2023 19:46:16 +0000 Subject: [PATCH] Enable OEMCrypto_MoveEntry/ReuseUsageEntry fuzzers Merged from https://widevine-internal-review.googlesource.com/174893 Change-Id: Ia46e74450bc20302edaf1c5e2bbde957a1d31c95 --- .../fuzz_tests/oemcrypto_move_usage_entry_fuzz.cc | 15 ++++++++------- .../oemcrypto_reuse_usage_entry_fuzz.cc | 12 +++++------- 2 files changed, 13 insertions(+), 14 deletions(-) diff --git a/libwvdrmengine/oemcrypto/test/fuzz_tests/oemcrypto_move_usage_entry_fuzz.cc b/libwvdrmengine/oemcrypto/test/fuzz_tests/oemcrypto_move_usage_entry_fuzz.cc index b59dc381..2e608cb4 100644 --- a/libwvdrmengine/oemcrypto/test/fuzz_tests/oemcrypto_move_usage_entry_fuzz.cc +++ b/libwvdrmengine/oemcrypto/test/fuzz_tests/oemcrypto_move_usage_entry_fuzz.cc @@ -2,6 +2,7 @@ // source code may only be used and distributed under the Widevine Master // License Agreement. +#include "FuzzedDataProvider.h" #include "OEMCryptoCENC.h" #include "oemcrypto_fuzz_helper.h" @@ -19,12 +20,6 @@ extern "C" int LLVMFuzzerInitialize(int* argc, char*** argv) { } extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) { - uint32_t usage_entry_number; - if (size < sizeof(usage_entry_number)) { - return 0; - } - memcpy(&usage_entry_number, data, sizeof(usage_entry_number)); - entry.CreateUsageTableHeader(); wvoec::Session* s = entry.license_messages().session(); s->open(); @@ -32,7 +27,13 @@ extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) { s->CreateNewUsageEntry(); std::vector encrypted_usage_header; s->UpdateUsageEntry(&encrypted_usage_header); - OEMCrypto_MoveEntry(s->session_id(), usage_entry_number); + s->close(); + + s->open(); + s->ReloadUsageEntry(); + OEMCrypto_MoveEntry( + s->session_id(), + FuzzedDataProvider(data, size).ConsumeIntegral()); s->close(); return 0; diff --git a/libwvdrmengine/oemcrypto/test/fuzz_tests/oemcrypto_reuse_usage_entry_fuzz.cc b/libwvdrmengine/oemcrypto/test/fuzz_tests/oemcrypto_reuse_usage_entry_fuzz.cc index 8d99493a..7aef70f9 100644 --- a/libwvdrmengine/oemcrypto/test/fuzz_tests/oemcrypto_reuse_usage_entry_fuzz.cc +++ b/libwvdrmengine/oemcrypto/test/fuzz_tests/oemcrypto_reuse_usage_entry_fuzz.cc @@ -2,6 +2,7 @@ // source code may only be used and distributed under the Widevine Master // License Agreement. +#include "FuzzedDataProvider.h" #include "OEMCryptoCENC.h" #include "oemcrypto_fuzz_helper.h" @@ -19,20 +20,17 @@ extern "C" int LLVMFuzzerInitialize(int* argc, char*** argv) { } extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) { - uint32_t usage_entry_number; - if (size < sizeof(usage_entry_number)) { - return 0; - } - memcpy(&usage_entry_number, data, sizeof(usage_entry_number)); - entry.CreateUsageTableHeader(); wvoec::Session* s = entry.license_messages().session(); s->open(); entry.InstallTestDrmKey(s); s->CreateNewUsageEntry(); s->close(); + s->open(); - OEMCrypto_ReuseUsageEntry(s->session_id(), usage_entry_number); + OEMCrypto_ReuseUsageEntry( + s->session_id(), + FuzzedDataProvider(data, size).ConsumeIntegral()); s->close(); return 0;