Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(28)

Side by Side Diff: remoting/host/win/chromoting_module.cc

Issue 602763003: Remove implicit HANDLE conversions from remoting. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "remoting/host/win/chromoting_module.h" 5 #include "remoting/host/win/chromoting_module.h"
6 6
7 #include <sddl.h> 7 #include <sddl.h>
8 8
9 #include "base/lazy_instance.h" 9 #include "base/lazy_instance.h"
10 #include "base/logging.h" 10 #include "base/logging.h"
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
47 &temp_handle)) { 47 &temp_handle)) {
48 PLOG(ERROR) << "OpenProcessToken() failed"; 48 PLOG(ERROR) << "OpenProcessToken() failed";
49 return false; 49 return false;
50 } 50 }
51 base::win::ScopedHandle token(temp_handle); 51 base::win::ScopedHandle token(temp_handle);
52 52
53 TypedBuffer<TOKEN_MANDATORY_LABEL> mandatory_label; 53 TypedBuffer<TOKEN_MANDATORY_LABEL> mandatory_label;
54 DWORD length = 0; 54 DWORD length = 0;
55 55
56 // Get the size of the buffer needed to hold the mandatory label. 56 // Get the size of the buffer needed to hold the mandatory label.
57 BOOL result = GetTokenInformation(token, TokenIntegrityLevel, 57 BOOL result = GetTokenInformation(token.Get(), TokenIntegrityLevel,
58 mandatory_label.get(), length, &length); 58 mandatory_label.get(), length, &length);
59 if (!result && GetLastError() == ERROR_INSUFFICIENT_BUFFER) { 59 if (!result && GetLastError() == ERROR_INSUFFICIENT_BUFFER) {
60 // Allocate a buffer that is large enough. 60 // Allocate a buffer that is large enough.
61 TypedBuffer<TOKEN_MANDATORY_LABEL> buffer(length); 61 TypedBuffer<TOKEN_MANDATORY_LABEL> buffer(length);
62 mandatory_label.Swap(buffer); 62 mandatory_label.Swap(buffer);
63 63
64 // Get the the mandatory label. 64 // Get the the mandatory label.
65 result = GetTokenInformation(token, TokenIntegrityLevel, 65 result = GetTokenInformation(token.Get(), TokenIntegrityLevel,
66 mandatory_label.get(), length, &length); 66 mandatory_label.get(), length, &length);
67 } 67 }
68 if (!result) { 68 if (!result) {
69 PLOG(ERROR) << "Failed to get the mandatory label"; 69 PLOG(ERROR) << "Failed to get the mandatory label";
70 return false; 70 return false;
71 } 71 }
72 72
73 // Read the current integrity level. 73 // Read the current integrity level.
74 DWORD sub_authority_count = 74 DWORD sub_authority_count =
75 *GetSidSubAuthorityCount(mandatory_label->Label.Sid); 75 *GetSidSubAuthorityCount(mandatory_label->Label.Sid);
76 DWORD* current_level = GetSidSubAuthority(mandatory_label->Label.Sid, 76 DWORD* current_level = GetSidSubAuthority(mandatory_label->Label.Sid,
77 sub_authority_count - 1); 77 sub_authority_count - 1);
78 78
79 // Set the integrity level to |max_level| if needed. 79 // Set the integrity level to |max_level| if needed.
80 if (*current_level > max_level) { 80 if (*current_level > max_level) {
81 *current_level = max_level; 81 *current_level = max_level;
82 if (!SetTokenInformation(token, TokenIntegrityLevel, mandatory_label.get(), 82 if (!SetTokenInformation(token.Get(), TokenIntegrityLevel,
83 length)) { 83 mandatory_label.get(), length)) {
84 PLOG(ERROR) << "Failed to set the mandatory label"; 84 PLOG(ERROR) << "Failed to set the mandatory label";
85 return false; 85 return false;
86 } 86 }
87 } 87 }
88 88
89 return true; 89 return true;
90 } 90 }
91 91
92 } // namespace 92 } // namespace
93 93
(...skipping 130 matching lines...) Expand 10 before | Expand all | Expand 10 after
224 224
225 ATL::_ATL_OBJMAP_ENTRY rdp_client_entry[] = { 225 ATL::_ATL_OBJMAP_ENTRY rdp_client_entry[] = {
226 OBJECT_ENTRY(__uuidof(RdpDesktopSession), RdpDesktopSession) 226 OBJECT_ENTRY(__uuidof(RdpDesktopSession), RdpDesktopSession)
227 }; 227 };
228 228
229 ChromotingModule module(rdp_client_entry, rdp_client_entry + 1); 229 ChromotingModule module(rdp_client_entry, rdp_client_entry + 1);
230 return module.Run() ? kSuccessExitCode : kInitializationFailed; 230 return module.Run() ? kSuccessExitCode : kInitializationFailed;
231 } 231 }
232 232
233 } // namespace remoting 233 } // namespace remoting
OLDNEW
« no previous file with comments | « remoting/host/setup/daemon_controller_delegate_win.cc ('k') | remoting/host/win/elevated_controller.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698