OLD | NEW |
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 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 "sandbox/win/wow_helper/service64_resolver.h" | 5 #include "sandbox/win/wow_helper/service64_resolver.h" |
6 | 6 |
7 #include "base/memory/scoped_ptr.h" | 7 #include "base/memory/scoped_ptr.h" |
8 #include "sandbox/win/wow_helper/target_code.h" | 8 #include "sandbox/win/wow_helper/target_code.h" |
9 | 9 |
10 namespace { | 10 namespace { |
(...skipping 192 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
203 void* thunk_storage, | 203 void* thunk_storage, |
204 size_t storage_bytes, | 204 size_t storage_bytes, |
205 size_t* storage_used) { | 205 size_t* storage_used) { |
206 NTSTATUS ret = Init(target_module, interceptor_module, target_name, | 206 NTSTATUS ret = Init(target_module, interceptor_module, target_name, |
207 interceptor_name, interceptor_entry_point, | 207 interceptor_name, interceptor_entry_point, |
208 thunk_storage, storage_bytes); | 208 thunk_storage, storage_bytes); |
209 if (!NT_SUCCESS(ret)) | 209 if (!NT_SUCCESS(ret)) |
210 return ret; | 210 return ret; |
211 | 211 |
212 size_t thunk_bytes = GetThunkSize(); | 212 size_t thunk_bytes = GetThunkSize(); |
213 scoped_array<char> thunk_buffer(new char[thunk_bytes]); | 213 scoped_ptr<char[]> thunk_buffer(new char[thunk_bytes]); |
214 ServiceFullThunk* thunk = reinterpret_cast<ServiceFullThunk*>( | 214 ServiceFullThunk* thunk = reinterpret_cast<ServiceFullThunk*>( |
215 thunk_buffer.get()); | 215 thunk_buffer.get()); |
216 | 216 |
217 if (!IsFunctionAService(&thunk->original)) | 217 if (!IsFunctionAService(&thunk->original)) |
218 return STATUS_UNSUCCESSFUL; | 218 return STATUS_UNSUCCESSFUL; |
219 | 219 |
220 ret = PerformPatch(thunk, thunk_storage); | 220 ret = PerformPatch(thunk, thunk_storage); |
221 | 221 |
222 if (NULL != storage_used) | 222 if (NULL != storage_used) |
223 *storage_used = thunk_bytes; | 223 *storage_used = thunk_bytes; |
(...skipping 109 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
333 | 333 |
334 // and now change the function to intercept, on the child | 334 // and now change the function to intercept, on the child |
335 if (!::WriteProtectedChildMemory(process_, target_, &local_service, | 335 if (!::WriteProtectedChildMemory(process_, target_, &local_service, |
336 sizeof(local_service))) | 336 sizeof(local_service))) |
337 return STATUS_UNSUCCESSFUL; | 337 return STATUS_UNSUCCESSFUL; |
338 | 338 |
339 return STATUS_SUCCESS; | 339 return STATUS_SUCCESS; |
340 } | 340 } |
341 | 341 |
342 } // namespace sandbox | 342 } // namespace sandbox |
OLD | NEW |