security_capabilities.cc 1.2 KB

1234567891011121314151617181920212223242526272829303132333435
  1. // Copyright 2017 The Chromium Authors. All rights reserved.
  2. // Use of this source code is governed by a BSD-style license that can be
  3. // found in the LICENSE file.
  4. #include "sandbox/win/src/security_capabilities.h"
  5. #include "base/numerics/safe_conversions.h"
  6. #include "base/win/security_util.h"
  7. namespace sandbox {
  8. SecurityCapabilities::SecurityCapabilities(
  9. const base::win::Sid& package_sid,
  10. const std::vector<base::win::Sid>& capabilities)
  11. : SECURITY_CAPABILITIES(),
  12. capabilities_(base::win::CloneSidVector(capabilities)),
  13. package_sid_(package_sid.Clone()) {
  14. AppContainerSid = package_sid_.GetPSID();
  15. if (capabilities_.empty())
  16. return;
  17. capability_sids_.resize(capabilities_.size());
  18. for (size_t index = 0; index < capabilities_.size(); ++index) {
  19. capability_sids_[index].Sid = capabilities_[index].GetPSID();
  20. capability_sids_[index].Attributes = SE_GROUP_ENABLED;
  21. }
  22. CapabilityCount = base::checked_cast<DWORD>(capability_sids_.size());
  23. Capabilities = capability_sids_.data();
  24. }
  25. SecurityCapabilities::SecurityCapabilities(const base::win::Sid& package_sid)
  26. : SecurityCapabilities(package_sid, std::vector<base::win::Sid>()) {}
  27. SecurityCapabilities::~SecurityCapabilities() {}
  28. } // namespace sandbox