OLD | NEW |
1 // Copyright (c) 2006-2008 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2006-2008 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 #ifndef SANDBOX_SRC_POLICY_ENGINE_PARAMS_H__ | 5 #ifndef SANDBOX_SRC_POLICY_ENGINE_PARAMS_H__ |
6 #define SANDBOX_SRC_POLICY_ENGINE_PARAMS_H__ | 6 #define SANDBOX_SRC_POLICY_ENGINE_PARAMS_H__ |
7 | 7 |
8 #include "base/basictypes.h" | 8 #include <stdint.h> |
| 9 |
9 #include "sandbox/win/src/internal_types.h" | 10 #include "sandbox/win/src/internal_types.h" |
10 #include "sandbox/win/src/nt_internals.h" | 11 #include "sandbox/win/src/nt_internals.h" |
11 #include "sandbox/win/src/sandbox_nt_util.h" | 12 #include "sandbox/win/src/sandbox_nt_util.h" |
12 | 13 |
13 // This header defines the classes that allow the low level policy to select | 14 // This header defines the classes that allow the low level policy to select |
14 // the input parameters. In order to better make sense of this header is | 15 // the input parameters. In order to better make sense of this header is |
15 // recommended that you check policy_engine_opcodes.h first. | 16 // recommended that you check policy_engine_opcodes.h first. |
16 | 17 |
17 namespace sandbox { | 18 namespace sandbox { |
18 | 19 |
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
54 // original C++ type. This allows the policy to treat any set of supported | 55 // original C++ type. This allows the policy to treat any set of supported |
55 // argument types uniformily and with some type safety. | 56 // argument types uniformily and with some type safety. |
56 // | 57 // |
57 // TODO(cpu): support not fully implemented yet for unicode string and will | 58 // TODO(cpu): support not fully implemented yet for unicode string and will |
58 // probably add other types as well. | 59 // probably add other types as well. |
59 class ParameterSet { | 60 class ParameterSet { |
60 public: | 61 public: |
61 ParameterSet() : real_type_(INVALID_TYPE), address_(NULL) {} | 62 ParameterSet() : real_type_(INVALID_TYPE), address_(NULL) {} |
62 | 63 |
63 // Retrieve the stored parameter. If the type does not match ulong fail. | 64 // Retrieve the stored parameter. If the type does not match ulong fail. |
64 bool Get(uint32* destination) const { | 65 bool Get(uint32_t* destination) const { |
65 if (real_type_ != UINT32_TYPE) { | 66 if (real_type_ != UINT32_TYPE) { |
66 return false; | 67 return false; |
67 } | 68 } |
68 *destination = Void2TypePointerCopy<uint32>(); | 69 *destination = Void2TypePointerCopy<uint32_t>(); |
69 return true; | 70 return true; |
70 } | 71 } |
71 | 72 |
72 // Retrieve the stored parameter. If the type does not match void* fail. | 73 // Retrieve the stored parameter. If the type does not match void* fail. |
73 bool Get(const void** destination) const { | 74 bool Get(const void** destination) const { |
74 if (real_type_ != VOIDPTR_TYPE) { | 75 if (real_type_ != VOIDPTR_TYPE) { |
75 return false; | 76 return false; |
76 } | 77 } |
77 *destination = Void2TypePointerCopy<void*>(); | 78 *destination = Void2TypePointerCopy<void*>(); |
78 return true; | 79 return true; |
(...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
145 : ParameterSet(WCHAR_TYPE, address) {} | 146 : ParameterSet(WCHAR_TYPE, address) {} |
146 }; | 147 }; |
147 | 148 |
148 template<> | 149 template<> |
149 class ParameterSetEx<wchar_t const*> : public ParameterSet { | 150 class ParameterSetEx<wchar_t const*> : public ParameterSet { |
150 public: | 151 public: |
151 ParameterSetEx(const void* address) | 152 ParameterSetEx(const void* address) |
152 : ParameterSet(WCHAR_TYPE, address) {} | 153 : ParameterSet(WCHAR_TYPE, address) {} |
153 }; | 154 }; |
154 | 155 |
155 | 156 template <> |
156 template<> | 157 class ParameterSetEx<uint32_t> : public ParameterSet { |
157 class ParameterSetEx<uint32> : public ParameterSet { | |
158 public: | 158 public: |
159 ParameterSetEx(const void* address) | 159 ParameterSetEx(const void* address) |
160 : ParameterSet(UINT32_TYPE, address) {} | 160 : ParameterSet(UINT32_TYPE, address) {} |
161 }; | 161 }; |
162 | 162 |
163 template<> | 163 template<> |
164 class ParameterSetEx<UNICODE_STRING> : public ParameterSet { | 164 class ParameterSetEx<UNICODE_STRING> : public ParameterSet { |
165 public: | 165 public: |
166 ParameterSetEx(const void* address) | 166 ParameterSetEx(const void* address) |
167 : ParameterSet(UNISTR_TYPE, address) {} | 167 : ParameterSet(UNISTR_TYPE, address) {} |
(...skipping 25 matching lines...) Expand all Loading... |
193 return reinterpret_cast<CountedParameterSetBase*>(this); | 193 return reinterpret_cast<CountedParameterSetBase*>(this); |
194 } | 194 } |
195 | 195 |
196 int count; | 196 int count; |
197 ParameterSet parameters[T::PolParamLast]; | 197 ParameterSet parameters[T::PolParamLast]; |
198 }; | 198 }; |
199 | 199 |
200 } // namespace sandbox | 200 } // namespace sandbox |
201 | 201 |
202 #endif // SANDBOX_SRC_POLICY_ENGINE_PARAMS_H__ | 202 #endif // SANDBOX_SRC_POLICY_ENGINE_PARAMS_H__ |
OLD | NEW |