Update OEMCrypto test comments and logs
Merge from Widevine repo of http://go/wvgerrit/121886 This CL merges some changes from branch rvc-dev to sc-dev that prepared it for merge. One change is that the unit tests now say they are part of Android S instead of R. Bug: 180546871 Change-Id: I2ebbd8f7b8586389ebb75f3743a2dc2ad8caa214
This commit is contained in:
@@ -7,6 +7,7 @@
|
||||
#include "log.h"
|
||||
#include "oemcrypto_fuzz_helper.h"
|
||||
#include "oemcrypto_fuzz_structs.h"
|
||||
#include "oemcrypto_overflow.h"
|
||||
|
||||
namespace wvoec {
|
||||
const size_t MAX_FUZZ_SAMPLE_SIZE = 5 * MB;
|
||||
@@ -137,13 +138,16 @@ extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) {
|
||||
|
||||
// Copy sub sample data.
|
||||
sample_descriptions[i].subsamples = &subsamples[input_subsample_index];
|
||||
input_subsample_index += sample_descriptions[i].subsamples_length;
|
||||
if (AddOverflowUX(input_subsample_index,
|
||||
sample_descriptions[i].subsamples_length,
|
||||
&input_subsample_index)) {
|
||||
return 0;
|
||||
}
|
||||
if (input_subsample_index > subsamples.size()) return 0;
|
||||
} // Sample loop.
|
||||
|
||||
// Allocate input/output buffers for each sample description.
|
||||
vector<OEMCrypto_SharedMemory> input_buffer(total_input_data_length);
|
||||
RAND_bytes(input_buffer.data(), total_input_data_length);
|
||||
size_t input_buffer_index = 0;
|
||||
for (size_t i = 0; i < samples_length; i++) {
|
||||
sample_descriptions[i].buffers.input_data =
|
||||
|
||||
@@ -36,9 +36,7 @@ class OEMCryptoLicenseAPIFuzz : public InitializeFuzz {
|
||||
session_.GenerateNonce();
|
||||
}
|
||||
|
||||
~OEMCryptoLicenseAPIFuzz() {
|
||||
session_.close();
|
||||
}
|
||||
~OEMCryptoLicenseAPIFuzz() { session_.close(); }
|
||||
|
||||
LicenseRoundTrip& license_messages() { return license_messages_; }
|
||||
|
||||
|
||||
@@ -0,0 +1,77 @@
|
||||
#include <stdio.h>
|
||||
|
||||
#include "dispatcher.h"
|
||||
#include "marshaller_base.h"
|
||||
#include "transport_interface.h"
|
||||
|
||||
namespace wvoec {
|
||||
|
||||
void InitializeODKMessage(ODK_Message* message, uint8_t* data, size_t size) {
|
||||
ODK_Message_Impl* impl = (ODK_Message_Impl*)message;
|
||||
impl->base = data;
|
||||
impl->size = size;
|
||||
impl->capacity = size;
|
||||
impl->read_offset = 0;
|
||||
impl->status = MESSAGE_STATUS_OK;
|
||||
}
|
||||
|
||||
void OpenOEMCryptoTASession() {
|
||||
ODK_Message request;
|
||||
ODK_Message* response = NULL;
|
||||
uint8_t response_buffer[0x1000];
|
||||
uint8_t request_body[] = {
|
||||
0x06, // TAG_UINT32
|
||||
0x09, 0x00, 0x00, 0x00, // API value (0x09)
|
||||
0x01, // TAG_BOOL
|
||||
0x00, // value (false)
|
||||
0x0a // TAG_EOM
|
||||
};
|
||||
|
||||
InitializeODKMessage(&request, request_body, sizeof(request_body));
|
||||
|
||||
ODK_DispatchMessage(&request, &response);
|
||||
if (response != NULL) ODK_Transport_DeallocateMessage(response);
|
||||
}
|
||||
|
||||
void InitializeOEMCryptoTA() {
|
||||
ODK_Message init_request;
|
||||
ODK_Message* init_response = NULL;
|
||||
uint8_t response_buffer[0x1000];
|
||||
uint8_t init_request_body[] = {
|
||||
0x06, // TAG_UINT32
|
||||
0x01, 0x00, 0x00, 0x00, // API value(0x01)
|
||||
0x0a // TAG_EOM
|
||||
};
|
||||
|
||||
InitializeODKMessage(&init_request, init_request_body,
|
||||
sizeof(init_request_body));
|
||||
|
||||
ODK_DispatchMessage(&init_request, &init_response);
|
||||
if (init_response != NULL) ODK_Transport_DeallocateMessage(init_response);
|
||||
}
|
||||
|
||||
extern "C" int LLVMFuzzerInitialize(int* argc, char*** argv) {
|
||||
ODK_InitializeDispatcher();
|
||||
InitializeOEMCryptoTA();
|
||||
OpenOEMCryptoTASession();
|
||||
return 0;
|
||||
}
|
||||
|
||||
extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) {
|
||||
ODK_Message request;
|
||||
ODK_Message* response = NULL;
|
||||
unsigned char response_buffer[0x1000];
|
||||
|
||||
uint8_t* input = new uint8_t[size];
|
||||
memcpy(input, data, size);
|
||||
|
||||
InitializeODKMessage(&request, input, size);
|
||||
|
||||
ODK_DispatchMessage(&request, &response);
|
||||
if (response != NULL) ODK_Transport_DeallocateMessage(response);
|
||||
|
||||
delete[] input;
|
||||
return 0;
|
||||
}
|
||||
|
||||
} // namespace wvoec
|
||||
Reference in New Issue
Block a user