Index: sandbox/win/src/acl.cc |
diff --git a/sandbox/win/src/acl.cc b/sandbox/win/src/acl.cc |
deleted file mode 100644 |
index f5de0981b3b2f653c3bf17ddbb8556ccadb8de62..0000000000000000000000000000000000000000 |
--- a/sandbox/win/src/acl.cc |
+++ /dev/null |
@@ -1,146 +0,0 @@ |
-// Copyright (c) 2012 The Chromium Authors. All rights reserved. |
-// Use of this source code is governed by a BSD-style license that can be |
-// found in the LICENSE file. |
- |
-#include "sandbox/win/src/acl.h" |
- |
-#include <aclapi.h> |
-#include <sddl.h> |
- |
-#include "base/logging.h" |
-#include "base/memory/free_deleter.h" |
- |
-namespace sandbox { |
- |
-bool GetDefaultDacl( |
- HANDLE token, |
- scoped_ptr<TOKEN_DEFAULT_DACL, base::FreeDeleter>* default_dacl) { |
- if (token == NULL) |
- return false; |
- |
- DCHECK(default_dacl != NULL); |
- |
- unsigned long length = 0; |
- ::GetTokenInformation(token, TokenDefaultDacl, NULL, 0, &length); |
- if (length == 0) { |
- NOTREACHED(); |
- return false; |
- } |
- |
- TOKEN_DEFAULT_DACL* acl = |
- reinterpret_cast<TOKEN_DEFAULT_DACL*>(malloc(length)); |
- default_dacl->reset(acl); |
- |
- if (!::GetTokenInformation(token, TokenDefaultDacl, default_dacl->get(), |
- length, &length)) |
- return false; |
- |
- return true; |
-} |
- |
-bool AddSidToDacl(const Sid& sid, ACL* old_dacl, ACCESS_MODE access_mode, |
- ACCESS_MASK access, ACL** new_dacl) { |
- EXPLICIT_ACCESS new_access = {0}; |
- new_access.grfAccessMode = access_mode; |
- new_access.grfAccessPermissions = access; |
- new_access.grfInheritance = NO_INHERITANCE; |
- |
- new_access.Trustee.pMultipleTrustee = NULL; |
- new_access.Trustee.MultipleTrusteeOperation = NO_MULTIPLE_TRUSTEE; |
- new_access.Trustee.TrusteeForm = TRUSTEE_IS_SID; |
- new_access.Trustee.ptstrName = reinterpret_cast<LPWSTR>( |
- const_cast<SID*>(sid.GetPSID())); |
- |
- if (ERROR_SUCCESS != ::SetEntriesInAcl(1, &new_access, old_dacl, new_dacl)) |
- return false; |
- |
- return true; |
-} |
- |
-bool AddSidToDefaultDacl(HANDLE token, |
- const Sid& sid, |
- ACCESS_MODE access_mode, |
- ACCESS_MASK access) { |
- if (token == NULL) |
- return false; |
- |
- scoped_ptr<TOKEN_DEFAULT_DACL, base::FreeDeleter> default_dacl; |
- if (!GetDefaultDacl(token, &default_dacl)) |
- return false; |
- |
- ACL* new_dacl = NULL; |
- if (!AddSidToDacl(sid, default_dacl->DefaultDacl, access_mode, access, |
- &new_dacl)) |
- return false; |
- |
- TOKEN_DEFAULT_DACL new_token_dacl = {0}; |
- new_token_dacl.DefaultDacl = new_dacl; |
- |
- BOOL ret = ::SetTokenInformation(token, TokenDefaultDacl, &new_token_dacl, |
- sizeof(new_token_dacl)); |
- ::LocalFree(new_dacl); |
- return (TRUE == ret); |
-} |
- |
-bool RevokeLogonSidFromDefaultDacl(HANDLE token) { |
- DWORD size = sizeof(TOKEN_GROUPS) + SECURITY_MAX_SID_SIZE; |
- TOKEN_GROUPS* logon_sid = reinterpret_cast<TOKEN_GROUPS*>(malloc(size)); |
- |
- scoped_ptr<TOKEN_GROUPS, base::FreeDeleter> logon_sid_ptr(logon_sid); |
- |
- if (!::GetTokenInformation(token, TokenLogonSid, logon_sid, size, &size)) |
- return false; |
- if (logon_sid->GroupCount < 1) { |
- ::SetLastError(ERROR_INVALID_TOKEN); |
- return false; |
- } |
- return AddSidToDefaultDacl(token, |
- reinterpret_cast<SID*>(logon_sid->Groups[0].Sid), |
- REVOKE_ACCESS, 0); |
-} |
- |
-bool AddUserSidToDefaultDacl(HANDLE token, ACCESS_MASK access) { |
- DWORD size = sizeof(TOKEN_USER) + SECURITY_MAX_SID_SIZE; |
- TOKEN_USER* token_user = reinterpret_cast<TOKEN_USER*>(malloc(size)); |
- |
- scoped_ptr<TOKEN_USER, base::FreeDeleter> token_user_ptr(token_user); |
- |
- if (!::GetTokenInformation(token, TokenUser, token_user, size, &size)) |
- return false; |
- |
- return AddSidToDefaultDacl(token, |
- reinterpret_cast<SID*>(token_user->User.Sid), |
- GRANT_ACCESS, access); |
-} |
- |
-bool AddKnownSidToObject(HANDLE object, SE_OBJECT_TYPE object_type, |
- const Sid& sid, ACCESS_MODE access_mode, |
- ACCESS_MASK access) { |
- PSECURITY_DESCRIPTOR descriptor = NULL; |
- PACL old_dacl = NULL; |
- PACL new_dacl = NULL; |
- |
- if (ERROR_SUCCESS != ::GetSecurityInfo(object, object_type, |
- DACL_SECURITY_INFORMATION, NULL, NULL, |
- &old_dacl, NULL, &descriptor)) |
- return false; |
- |
- if (!AddSidToDacl(sid.GetPSID(), old_dacl, access_mode, access, &new_dacl)) { |
- ::LocalFree(descriptor); |
- return false; |
- } |
- |
- DWORD result = ::SetSecurityInfo(object, object_type, |
- DACL_SECURITY_INFORMATION, NULL, NULL, |
- new_dacl, NULL); |
- |
- ::LocalFree(new_dacl); |
- ::LocalFree(descriptor); |
- |
- if (ERROR_SUCCESS != result) |
- return false; |
- |
- return true; |
-} |
- |
-} // namespace sandbox |