diff options
author | evan@chromium.org <evan@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-07-13 20:59:07 +0000 |
---|---|---|
committer | evan@chromium.org <evan@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-07-13 20:59:07 +0000 |
commit | c178526d3367de8ce6a1efd775b8fc669bfa7450 (patch) | |
tree | ad88b06763bd4eb81e69d8939313b1f4f137a092 /sandbox | |
parent | 3592babaa78f5bef7377c83309b57b3ef7c836d0 (diff) | |
download | chromium_src-c178526d3367de8ce6a1efd775b8fc669bfa7450.zip chromium_src-c178526d3367de8ce6a1efd775b8fc669bfa7450.tar.gz chromium_src-c178526d3367de8ce6a1efd775b8fc669bfa7450.tar.bz2 |
Revert "Had a bug in the handle table unit test. Added GetHandleName to fix the bug and make handle management easier."
This reverts commit r92403. Failed on Windows.
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@92412 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'sandbox')
-rw-r--r-- | sandbox/src/handle_table.cc | 38 | ||||
-rw-r--r-- | sandbox/src/handle_table.h | 4 | ||||
-rw-r--r-- | sandbox/src/handle_table_unittest.cc | 4 |
3 files changed, 14 insertions, 32 deletions
diff --git a/sandbox/src/handle_table.cc b/sandbox/src/handle_table.cc index 90501a8..c7fcf0a 100644 --- a/sandbox/src/handle_table.cc +++ b/sandbox/src/handle_table.cc @@ -17,8 +17,6 @@ bool CompareHandleEntries(const SYSTEM_HANDLE_INFORMATION& a, return a.ProcessId < b.ProcessId; } -static NtQueryObject QueryObject = NULL; - } // namespace namespace sandbox { @@ -86,6 +84,7 @@ HandleTable::HandleEntry::HandleEntry( } void HandleTable::HandleEntry::UpdateInfo(UpdateType flag) { + static NtQueryObject QueryObject = NULL; if (!QueryObject) ResolveNTFunctionPtr("NtQueryObject", &QueryObject); @@ -120,8 +119,18 @@ void HandleTable::HandleEntry::UpdateInfo(UpdateType flag) { switch (flag) { case UPDATE_INFO_AND_NAME: if (type_info_buffer_.size() && handle_name_.empty()) { - GetHandleName(reinterpret_cast<HANDLE>(handle_entry_->Handle), - &handle_name_); + ULONG size = MAX_PATH; + scoped_ptr<UNICODE_STRING> name; + do { + name.reset(reinterpret_cast<UNICODE_STRING*>(new BYTE[size])); + result = QueryObject(reinterpret_cast<HANDLE>( + handle_entry_->Handle), ObjectNameInformation, name.get(), + size, &size); + } while (result == STATUS_INFO_LENGTH_MISMATCH); + + if (NT_SUCCESS(result)) { + handle_name_.assign(name->Buffer, name->Length / sizeof(wchar_t)); + } } break; @@ -135,27 +144,6 @@ void HandleTable::HandleEntry::UpdateInfo(UpdateType flag) { } } -// Returns the object manager's name associated with a handle -BOOL GetHandleName(HANDLE handle, string16* handle_name) { - if (!QueryObject) - ResolveNTFunctionPtr("NtQueryObject", &QueryObject); - - ULONG size = MAX_PATH; - scoped_ptr<UNICODE_STRING> name; - NTSTATUS result; - - do { - name.reset(reinterpret_cast<UNICODE_STRING*>(new BYTE[size])); - result = QueryObject(handle, ObjectNameInformation, name.get(), - size, &size); - } while (result == STATUS_INFO_LENGTH_MISMATCH); - - if (NT_SUCCESS(result)) - handle_name->assign(name->Buffer, name->Length / sizeof(wchar_t)); - - return NT_SUCCESS(result); -} - const OBJECT_TYPE_INFORMATION* HandleTable::HandleEntry::TypeInfo() { UpdateInfo(UPDATE_INFO_ONLY); return type_info_buffer_.empty() ? NULL : type_info_internal(); diff --git a/sandbox/src/handle_table.h b/sandbox/src/handle_table.h index 4814aab..9b1fc66 100644 --- a/sandbox/src/handle_table.h +++ b/sandbox/src/handle_table.h @@ -155,10 +155,6 @@ class HandleTable { DISALLOW_COPY_AND_ASSIGN(HandleTable); }; -// Returns the object manager's name associated with a handle -BOOL GetHandleName(HANDLE handle, string16* handle_name); - - } // namespace sandbox #endif // SANDBOX_SRC_HANDLE_TABLE_H_ diff --git a/sandbox/src/handle_table_unittest.cc b/sandbox/src/handle_table_unittest.cc index 3977c4a..696037f 100644 --- a/sandbox/src/handle_table_unittest.cc +++ b/sandbox/src/handle_table_unittest.cc @@ -47,8 +47,6 @@ TEST(HandleTable, FindHandle) { FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, OPEN_EXISTING, FILE_FLAG_DELETE_ON_CLOSE, NULL); EXPECT_NE(INVALID_HANDLE_VALUE, file); - string16 handle_name; - ASSERT_NE(sandbox::GetHandleName(file, &handle_name), FALSE); // Look for the handle in our process bool handle_found = false; @@ -56,7 +54,7 @@ TEST(HandleTable, FindHandle) { for (HandleTable::Iterator it = handles.HandlesForProcess(::GetCurrentProcessId()); it != handles.end(); ++it) { - if (it->IsType(HandleTable::kTypeFile) && it->Name() == handle_name) { + if (it->IsType(HandleTable::kTypeFile) && it->Name().compare(my_file)) { handle_found = true; break; } |