diff options
Diffstat (limited to 'chromium/sandbox/win/src/win_utils.cc')
-rw-r--r-- | chromium/sandbox/win/src/win_utils.cc | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/chromium/sandbox/win/src/win_utils.cc b/chromium/sandbox/win/src/win_utils.cc index 2225c88f83e..4b80c6eda77 100644 --- a/chromium/sandbox/win/src/win_utils.cc +++ b/chromium/sandbox/win/src/win_utils.cc @@ -545,6 +545,26 @@ void* GetProcessBaseAddress(HANDLE process) { return base_address; } +DWORD GetTokenInformation(HANDLE token, + TOKEN_INFORMATION_CLASS info_class, + std::unique_ptr<BYTE[]>* buffer) { + // Get the required buffer size. + DWORD size = 0; + ::GetTokenInformation(token, info_class, nullptr, 0, &size); + if (!size) { + return ::GetLastError(); + } + + auto temp_buffer = std::make_unique<BYTE[]>(size); + if (!::GetTokenInformation(token, info_class, temp_buffer.get(), size, + &size)) { + return ::GetLastError(); + } + + *buffer = std::move(temp_buffer); + return ERROR_SUCCESS; +} + } // namespace sandbox void ResolveNTFunctionPtr(const char* name, void* ptr) { |