summaryrefslogtreecommitdiffstats
path: root/chromium/base/win/win_util.cc
diff options
context:
space:
mode:
authorAllan Sandfeld Jensen <allan.jensen@qt.io>2022-02-04 17:20:24 +0100
committerAllan Sandfeld Jensen <allan.jensen@qt.io>2022-02-12 08:15:25 +0000
commit8fa0776f1f79e91fc9c0b9c1ba11a0a29c05196b (patch)
tree788d8d7549712682703a0310ca4a0f0860d4802b /chromium/base/win/win_util.cc
parent606d85f2a5386472314d39923da28c70c60dc8e7 (diff)
BASELINE: Update Chromium to 98.0.4758.90
Change-Id: Ib7c41539bf8a8e0376bd639f27d68294de90f3c8 Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
Diffstat (limited to 'chromium/base/win/win_util.cc')
-rw-r--r--chromium/base/win/win_util.cc30
1 files changed, 7 insertions, 23 deletions
diff --git a/chromium/base/win/win_util.cc b/chromium/base/win/win_util.cc
index 42d3fa3bc82..66d817df9ba 100644
--- a/chromium/base/win/win_util.cc
+++ b/chromium/base/win/win_util.cc
@@ -44,6 +44,7 @@
#include "base/strings/utf_string_conversions.h"
#include "base/threading/scoped_thread_priority.h"
#include "base/threading/thread_restrictions.h"
+#include "base/win/access_token.h"
#include "base/win/core_winrt_util.h"
#include "base/win/propvarutil.h"
#include "base/win/registry.h"
@@ -53,6 +54,7 @@
#include "base/win/scoped_propvariant.h"
#include "base/win/shlwapi.h"
#include "base/win/windows_version.h"
+#include "third_party/abseil-cpp/absl/types/optional.h"
namespace base {
namespace win {
@@ -360,31 +362,13 @@ bool IsKeyboardPresentOnSlate(HWND hwnd, std::string* reason) {
static bool g_crash_on_process_detach = false;
bool GetUserSidString(std::wstring* user_sid) {
- // Get the current token.
- HANDLE token = nullptr;
- if (!::OpenProcessToken(::GetCurrentProcess(), TOKEN_QUERY, &token))
+ absl::optional<AccessToken> token = AccessToken::FromCurrentProcess();
+ if (!token)
return false;
- ScopedHandle token_scoped(token);
-
- DWORD size = sizeof(TOKEN_USER) + SECURITY_MAX_SID_SIZE;
- std::unique_ptr<BYTE[]> user_bytes(new BYTE[size]);
- TOKEN_USER* user = reinterpret_cast<TOKEN_USER*>(user_bytes.get());
-
- if (!::GetTokenInformation(token, TokenUser, user, size, &size))
+ absl::optional<std::wstring> sid_string = token->User().ToSddlString();
+ if (!sid_string)
return false;
-
- if (!user->User.Sid)
- return false;
-
- // Convert the data to a string.
- wchar_t* sid_string;
- if (!::ConvertSidToStringSid(user->User.Sid, &sid_string))
- return false;
-
- *user_sid = sid_string;
-
- ::LocalFree(sid_string);
-
+ *user_sid = *sid_string;
return true;
}