| Index: chrome_elf/blacklist/blacklist.cc
|
| diff --git a/chrome_elf/blacklist/blacklist.cc b/chrome_elf/blacklist/blacklist.cc
|
| index 05d917fb6db8a32295d0c2f7a9ad96e65a195990..19df821b63515fde9281155b0db3a3ae404d07c1 100644
|
| --- a/chrome_elf/blacklist/blacklist.cc
|
| +++ b/chrome_elf/blacklist/blacklist.cc
|
| @@ -101,16 +101,16 @@ __declspec(allocate(".oldntmap"))
|
| #endif
|
|
|
| bool LeaveSetupBeacon() {
|
| - HANDLE key_handle = INVALID_HANDLE_VALUE;
|
| + nt::ScopedHANDLE key_handle = nt::CreateRegKey(
|
| + nt::HKCU, kRegistryBeaconPath, KEY_QUERY_VALUE | KEY_SET_VALUE);
|
|
|
| - if (!nt::CreateRegKey(nt::HKCU, kRegistryBeaconPath,
|
| - KEY_QUERY_VALUE | KEY_SET_VALUE, &key_handle))
|
| + if (!key_handle.is_valid())
|
| return false;
|
|
|
| DWORD blacklist_state = BLACKLIST_STATE_MAX;
|
| - if (!nt::QueryRegValueDWORD(key_handle, kBeaconState, &blacklist_state) ||
|
| + if (!nt::QueryRegValueDWORD(key_handle.get(), kBeaconState,
|
| + &blacklist_state) ||
|
| blacklist_state == BLACKLIST_DISABLED) {
|
| - nt::CloseRegKey(key_handle);
|
| return false;
|
| }
|
|
|
| @@ -120,9 +120,9 @@ bool LeaveSetupBeacon() {
|
| if (blacklist_state == BLACKLIST_ENABLED) {
|
| // If the blacklist succeeded on the previous run reset the failure
|
| // counter. Then update the beacon state.
|
| - if (nt::SetRegValueDWORD(key_handle, kBeaconAttemptCount,
|
| + if (nt::SetRegValueDWORD(key_handle.get(), kBeaconAttemptCount,
|
| static_cast<DWORD>(0))) {
|
| - if (nt::SetRegValueDWORD(key_handle, kBeaconState,
|
| + if (nt::SetRegValueDWORD(key_handle.get(), kBeaconState,
|
| BLACKLIST_SETUP_RUNNING))
|
| success = true;
|
| }
|
| @@ -132,47 +132,42 @@ bool LeaveSetupBeacon() {
|
| // failed and skip setting up the blacklist.
|
| DWORD attempt_count = 0;
|
|
|
| - nt::QueryRegValueDWORD(key_handle, blacklist::kBeaconAttemptCount,
|
| + nt::QueryRegValueDWORD(key_handle.get(), blacklist::kBeaconAttemptCount,
|
| &attempt_count);
|
| ++attempt_count;
|
| - nt::SetRegValueDWORD(key_handle, blacklist::kBeaconAttemptCount,
|
| + nt::SetRegValueDWORD(key_handle.get(), blacklist::kBeaconAttemptCount,
|
| attempt_count);
|
|
|
| if (attempt_count >= blacklist::kBeaconMaxAttempts) {
|
| blacklist_state = blacklist::BLACKLIST_SETUP_FAILED;
|
| - nt::SetRegValueDWORD(key_handle, blacklist::kBeaconState,
|
| + nt::SetRegValueDWORD(key_handle.get(), blacklist::kBeaconState,
|
| blacklist_state);
|
| }
|
| }
|
|
|
| - nt::CloseRegKey(key_handle);
|
| return success;
|
| }
|
|
|
| bool ResetBeacon() {
|
| - HANDLE key_handle = INVALID_HANDLE_VALUE;
|
| -
|
| - if (!nt::CreateRegKey(nt::HKCU, kRegistryBeaconPath,
|
| - KEY_QUERY_VALUE | KEY_SET_VALUE, &key_handle))
|
| + nt::ScopedHANDLE key_handle = nt::CreateRegKey(
|
| + nt::HKCU, kRegistryBeaconPath, KEY_QUERY_VALUE | KEY_SET_VALUE);
|
| + if (!key_handle.is_valid())
|
| return false;
|
|
|
| DWORD blacklist_state = BLACKLIST_STATE_MAX;
|
| - if (!nt::QueryRegValueDWORD(key_handle, kBeaconState, &blacklist_state)) {
|
| - nt::CloseRegKey(key_handle);
|
| + if (!nt::QueryRegValueDWORD(key_handle.get(), kBeaconState, &blacklist_state))
|
| return false;
|
| - }
|
|
|
| // Reaching this point with the setup running state means the setup did not
|
| // crash, so we reset to enabled. Any other state indicates that setup was
|
| // skipped; in that case we leave the state alone for later recording.
|
| if (blacklist_state == BLACKLIST_SETUP_RUNNING) {
|
| - if (!nt::SetRegValueDWORD(key_handle, kBeaconState, BLACKLIST_ENABLED)) {
|
| - nt::CloseRegKey(key_handle);
|
| + if (!nt::SetRegValueDWORD(key_handle.get(), kBeaconState,
|
| + BLACKLIST_ENABLED)) {
|
| return false;
|
| }
|
| }
|
|
|
| - nt::CloseRegKey(key_handle);
|
| return true;
|
| }
|
|
|
|
|