Commit 0d5f9e2f authored by Roger Tawa's avatar Roger Tawa Committed by Commit Bot

Fix SetupUtilTest.StoreDMTokenToRegistry.

To create a "binary" std::string with embedded nulls from a C string,
use the 2 argument constructor so that std::string does not use embedded
nulls to determine the full length of the string.

Bug: None
Change-Id: I6003984b6179d03753fef402134329523fe4c31a
Reviewed-on: https://chromium-review.googlesource.com/973692
Commit-Queue: Roger Tawa <rogerta@chromium.org>
Reviewed-by: default avatarGreg Thompson <grt@chromium.org>
Cr-Commit-Position: refs/heads/master@{#545123}
parent 80189410
...@@ -476,7 +476,12 @@ TEST(SetupUtilTest, StoreDMTokenToRegistry) { ...@@ -476,7 +476,12 @@ TEST(SetupUtilTest, StoreDMTokenToRegistry) {
registry_util::RegistryOverrideManager registry_override_manager; registry_util::RegistryOverrideManager registry_override_manager;
registry_override_manager.OverrideRegistry(HKEY_LOCAL_MACHINE); registry_override_manager.OverrideRegistry(HKEY_LOCAL_MACHINE);
std::string token("tokens are \0 binary data"); // Use the 2 argument std::string constructor so that the length of the string
// is not calculated by assuming the input char array is null terminated.
static constexpr char kTokenData[] = "tokens are \0 binary data";
static constexpr DWORD kExpectedSize = sizeof(kTokenData) - 1;
std::string token(&kTokenData[0], kExpectedSize);
ASSERT_EQ(kExpectedSize, token.length());
EXPECT_TRUE(installer::StoreDMToken(token)); EXPECT_TRUE(installer::StoreDMToken(token));
std::wstring path; std::wstring path;
...@@ -486,14 +491,14 @@ TEST(SetupUtilTest, StoreDMTokenToRegistry) { ...@@ -486,14 +491,14 @@ TEST(SetupUtilTest, StoreDMTokenToRegistry) {
ASSERT_EQ(ERROR_SUCCESS, key.Open(HKEY_LOCAL_MACHINE, path.c_str(), ASSERT_EQ(ERROR_SUCCESS, key.Open(HKEY_LOCAL_MACHINE, path.c_str(),
KEY_QUERY_VALUE | KEY_WOW64_64KEY)); KEY_QUERY_VALUE | KEY_WOW64_64KEY));
DWORD size = 64; DWORD size = kExpectedSize;
std::vector<char> raw_value(size); std::vector<char> raw_value(size);
DWORD dtype; DWORD dtype;
ASSERT_EQ(ERROR_SUCCESS, ASSERT_EQ(ERROR_SUCCESS,
key.ReadValue(name.c_str(), raw_value.data(), &size, &dtype)); key.ReadValue(name.c_str(), raw_value.data(), &size, &dtype));
EXPECT_EQ(REG_BINARY, dtype); EXPECT_EQ(REG_BINARY, dtype);
ASSERT_EQ(token.length(), size); ASSERT_EQ(kExpectedSize, size);
EXPECT_EQ(0, memcmp(token.data(), raw_value.data(), size)); EXPECT_EQ(0, memcmp(token.data(), raw_value.data(), kExpectedSize));
} }
namespace installer { namespace installer {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment