From ac942791c90c4442ecab246b5eb6b8d4c211badd Mon Sep 17 00:00:00 2001 From: Bharath Chandra Elluru Date: Tue, 12 May 2020 16:18:30 -0700 Subject: [PATCH] Merging Android odk fuzz changes to improve coverage from http://go/wvgerrit/99911 Test: The changs have been made in google3 and fuzzer has been running successfully with improved coverage Critique CL: http://cl/310633618 Bug: b/155435131 Change-Id: Ib02601302db238ce8fbeb3963ce8e05e864ba985 Change-Id: I11eba4d1aa1536b44929b742a5e2c2bf89d818fb --- .../odk/test/fuzzing/odk_fuzz_helper.cpp | 24 ++++++++++++------- 1 file changed, 16 insertions(+), 8 deletions(-) diff --git a/libwvdrmengine/oemcrypto/odk/test/fuzzing/odk_fuzz_helper.cpp b/libwvdrmengine/oemcrypto/odk/test/fuzzing/odk_fuzz_helper.cpp index 889b205e..3e6f2e05 100644 --- a/libwvdrmengine/oemcrypto/odk/test/fuzzing/odk_fuzz_helper.cpp +++ b/libwvdrmengine/oemcrypto/odk/test/fuzzing/odk_fuzz_helper.cpp @@ -88,15 +88,23 @@ OEMCryptoResult odk_deserialize_RenewalResponse( OEMCryptoResult err = ODK_ParseRenewal(buf, SIZE_MAX, len, nonce_values, a->system_time, &a->timer_limits, &a->clock_values, &timer_value); - if (OEMCrypto_SUCCESS == err) { - Message* msg = nullptr; - AllocateMessage(&msg, message_block); - InitMessage(msg, const_cast(buf), len); - SetSize(msg, len); - Unpack_ODK_PreparedRenewalRequest(msg, renewal_msg); - assert(ValidMessage(msg)); + const bool is_parse_renewal_response_successful = + err == ODK_SET_TIMER || err == ODK_DISABLE_TIMER || + err == ODK_TIMER_EXPIRED || err == ODK_STALE_RENEWAL; + if (!is_parse_renewal_response_successful) { + return err; } - return err; + // In order to capture playback_time information which is part of + // renewal_msg and will be later used in kdo_serialize_RenewalResponse in + // odk_kdo method, we call Unpack_ODK_PreparedRenewalRequest private method. + // playback_time cannot be captured from publicly exposed API + // ODK_ParseRenewal. + Message* msg = nullptr; + AllocateMessage(&msg, message_block); + InitMessage(msg, const_cast(buf), len); + SetSize(msg, len); + Unpack_ODK_PreparedRenewalRequest(msg, renewal_msg); + return OEMCrypto_SUCCESS; } OEMCryptoResult odk_deserialize_ProvisioningResponse(