From 78fddc230a412c9c4977e5dac653e192877b5ee9 Mon Sep 17 00:00:00 2001 From: Cong Lin Date: Tue, 17 Mar 2020 13:53:22 -0700 Subject: [PATCH] (WV to Android) Fix un-initialized-value warning as error in odk_test Merge from Widevine repo of http://go/wvgerrit/95968 Un-initialized int array allocated on heap is detected by MemorySanitizer using this command: rabbit test --config=msan --keep_going --compilation_mode=opt --runs_per_test=1 //video/widevine/export/common/oemcrypto_core_message/odk:odk_test Bug: 151339875 Test: cdm and odk unit tests Change-Id: Ic3329b918636a58eccb518ded7b262c4d98c3644 --- libwvdrmengine/oemcrypto/odk/test/odk_test.cpp | 12 ++++++------ .../oemcrypto/odk/test/odk_test_helper.cpp | 2 +- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/libwvdrmengine/oemcrypto/odk/test/odk_test.cpp b/libwvdrmengine/oemcrypto/odk/test/odk_test.cpp index 1da4cc88..b5c85650 100644 --- a/libwvdrmengine/oemcrypto/odk/test/odk_test.cpp +++ b/libwvdrmengine/oemcrypto/odk/test/odk_test.cpp @@ -70,12 +70,12 @@ void ValidateRequest(uint32_t message_type, // non-empty buf, expect core message length to be set correctly, and buf is // filled with ODK_Field values appropriately - uint8_t* buf = new uint8_t[message_size]; + uint8_t* buf = new uint8_t[message_size]{}; EXPECT_EQ(OEMCrypto_SUCCESS, odk_prepare_func(buf, &core_message_length, &nonce_values)); EXPECT_EQ(core_message_length, message_size); - uint8_t* buf_expected = new uint8_t[message_size]; + uint8_t* buf_expected = new uint8_t[message_size]{}; size_t buf_len_expected = 0; EXPECT_EQ(OEMCrypto_SUCCESS, ODK_IterFields(ODK_WRITE, buf_expected, SIZE_MAX, &buf_len_expected, total_fields)); @@ -94,7 +94,7 @@ void ValidateRequest(uint32_t message_type, nonce_values.api_major_version = t.api_major_version; nonce_values.nonce = t.nonce; nonce_values.session_id = t.session_id; - uint8_t* buf2 = new uint8_t[message_size]; + uint8_t* buf2 = new uint8_t[message_size]{}; EXPECT_EQ(OEMCrypto_SUCCESS, odk_prepare_func(buf2, &core_message_length, &nonce_values)); EXPECT_EQ(core_message_length, message_size); @@ -126,7 +126,7 @@ void ValidateResponse(ODK_CoreMessage* core_message, uint32_t buf_size = 0; ODK_BuildMessageBuffer(core_message, extra_fields, &buf, &buf_size); - uint8_t* zero = new uint8_t[buf_size]; + uint8_t* zero = new uint8_t[buf_size]{}; size_t bytes_read = 0; // zero-out input EXPECT_EQ(OEMCrypto_SUCCESS, ODK_IterFields(ODK_READ, zero, buf_size, @@ -185,13 +185,13 @@ TEST(OdkTest, SerializeFieldsStress) { total_size += ODK_FieldLength(fields[i].type); } - uint8_t* buf = new uint8_t[total_size]; + uint8_t* buf = new uint8_t[total_size]{}; for (int i = 0; i < total_size; i++) { buf[i] = std::rand() & 0xff; } size_t bytes_read = 0, bytes_written = 0; - uint8_t* buf2 = new uint8_t[total_size]; + uint8_t* buf2 = new uint8_t[total_size]{}; ODK_IterFields(ODK_READ, buf, total_size, &bytes_read, fields); EXPECT_EQ(bytes_read, total_size); ODK_IterFields(ODK_WRITE, buf2, total_size, &bytes_written, fields); diff --git a/libwvdrmengine/oemcrypto/odk/test/odk_test_helper.cpp b/libwvdrmengine/oemcrypto/odk/test/odk_test_helper.cpp index fd240648..167d9e59 100644 --- a/libwvdrmengine/oemcrypto/odk/test/odk_test_helper.cpp +++ b/libwvdrmengine/oemcrypto/odk/test/odk_test_helper.cpp @@ -477,7 +477,7 @@ void ODK_BuildMessageBuffer(ODK_CoreMessage* core_message, // update message_size *(reinterpret_cast(total_fields[1].value)) = *buf_size; - *buf = new uint8_t[*buf_size]; + *buf = new uint8_t[*buf_size]{}; size_t bytes_written = 0; // serialize ODK fields to message buffer EXPECT_EQ(OEMCrypto_SUCCESS, ODK_IterFields(ODK_WRITE, *buf, SIZE_MAX,