summaryrefslogtreecommitdiffstats
path: root/sandbox
diff options
context:
space:
mode:
authorcaitkp@chromium.org <caitkp@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-03-07 22:06:31 +0000
committercaitkp@chromium.org <caitkp@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-03-07 22:06:31 +0000
commit72d2d1b7f043edf5fe4e89a37e60e665dd747626 (patch)
tree6c905cb919cfa8a2d157cbdd6ab6069f4de87277 /sandbox
parent9d57a12d685b3847a31cefb2748723d3497bcfc6 (diff)
downloadchromium_src-72d2d1b7f043edf5fe4e89a37e60e665dd747626.zip
chromium_src-72d2d1b7f043edf5fe4e89a37e60e665dd747626.tar.gz
chromium_src-72d2d1b7f043edf5fe4e89a37e60e665dd747626.tar.bz2
Revert 255151 "Make chrome_elf use thunks instead of function po..."
(Crashy on today's canary) > Make chrome_elf use thunks instead of function pointers. > > 1. Add functionality to ServiceResolverThunk to copy a thunk without patching. > 2. Move chrome_elf thunk-handling code to a common location. > 3. Use a thunk instead of a f'n ptr for redirects. > > BUG=334379 > > Review URL: https://codereview.chromium.org/183833004 TBR=caitkp@chromium.org Review URL: https://codereview.chromium.org/189803007 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@255703 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'sandbox')
-rw-r--r--sandbox/win/src/service_resolver.h9
-rw-r--r--sandbox/win/src/service_resolver_32.cc26
-rw-r--r--sandbox/win/src/service_resolver_64.cc24
3 files changed, 0 insertions, 59 deletions
diff --git a/sandbox/win/src/service_resolver.h b/sandbox/win/src/service_resolver.h
index 20486c9..0089692 100644
--- a/sandbox/win/src/service_resolver.h
+++ b/sandbox/win/src/service_resolver.h
@@ -46,15 +46,6 @@ class ServiceResolverThunk : public ResolverThunk {
// Call this to set up ntdll_base_ which will allow for local patches.
virtual void AllowLocalPatches();
- // Verifies that the function specified by |target_name| in |target_module| is
- // a service and copies the data from that function into |thunk_storage|. If
- // |storage_bytes| is too small, then the method fails.
- virtual NTSTATUS CopyThunk(const void* target_module,
- const char* target_name,
- BYTE* thunk_storage,
- size_t storage_bytes,
- size_t* storage_used);
-
protected:
// The unit test will use this member to allow local patch on a buffer.
HMODULE ntdll_base_;
diff --git a/sandbox/win/src/service_resolver_32.cc b/sandbox/win/src/service_resolver_32.cc
index 9b8bbf9..2e69dbc 100644
--- a/sandbox/win/src/service_resolver_32.cc
+++ b/sandbox/win/src/service_resolver_32.cc
@@ -179,32 +179,6 @@ size_t ServiceResolverThunk::GetThunkSize() const {
return offsetof(ServiceFullThunk, internal_thunk) + GetInternalThunkSize();
}
-NTSTATUS ServiceResolverThunk::CopyThunk(const void* target_module,
- const char* target_name,
- BYTE* thunk_storage,
- size_t storage_bytes,
- size_t* storage_used) {
- NTSTATUS ret = ResolveTarget(target_module, target_name, &target_);
- if (!NT_SUCCESS(ret))
- return ret;
-
- size_t thunk_bytes = GetThunkSize();
- if (storage_bytes < thunk_bytes)
- return STATUS_UNSUCCESSFUL;
-
- ServiceFullThunk* thunk = reinterpret_cast<ServiceFullThunk*>(thunk_storage);
-
- if (!IsFunctionAService(&thunk->original) &&
- (!relaxed_ || !SaveOriginalFunction(&thunk->original, thunk_storage))) {
- return STATUS_UNSUCCESSFUL;
- }
-
- if (NULL != storage_used)
- *storage_used = thunk_bytes;
-
- return ret;
-}
-
bool ServiceResolverThunk::IsFunctionAService(void* local_thunk) const {
ServiceEntry function_code;
SIZE_T read;
diff --git a/sandbox/win/src/service_resolver_64.cc b/sandbox/win/src/service_resolver_64.cc
index 79c6b16..9612418 100644
--- a/sandbox/win/src/service_resolver_64.cc
+++ b/sandbox/win/src/service_resolver_64.cc
@@ -116,30 +116,6 @@ size_t ServiceResolverThunk::GetThunkSize() const {
return sizeof(ServiceFullThunk);
}
-NTSTATUS ServiceResolverThunk::CopyThunk(const void* target_module,
- const char* target_name,
- BYTE* thunk_storage,
- size_t storage_bytes,
- size_t* storage_used) {
- NTSTATUS ret = ResolveTarget(target_module, target_name, &target_);
- if (!NT_SUCCESS(ret))
- return ret;
-
- size_t thunk_bytes = GetThunkSize();
- if (storage_bytes < thunk_bytes)
- return STATUS_UNSUCCESSFUL;
-
- ServiceFullThunk* thunk = reinterpret_cast<ServiceFullThunk*>(thunk_storage);
-
- if (!IsFunctionAService(&thunk->original))
- return STATUS_UNSUCCESSFUL;
-
- if (NULL != storage_used)
- *storage_used = thunk_bytes;
-
- return ret;
-}
-
bool ServiceResolverThunk::IsFunctionAService(void* local_thunk) const {
ServiceFullThunk function_code;
SIZE_T read;