summaryrefslogtreecommitdiff
path: root/chromium/sandbox/win/src/win_utils.cc
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/sandbox/win/src/win_utils.cc')
-rw-r--r--chromium/sandbox/win/src/win_utils.cc20
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) {