diff --git a/winsup/cygwin/ChangeLog b/winsup/cygwin/ChangeLog index 839467c99..85fe362bd 100644 --- a/winsup/cygwin/ChangeLog +++ b/winsup/cygwin/ChangeLog @@ -1,3 +1,8 @@ +2005-12-16 Christopher Faylor + + * hookapi.cc (putmem): Remove query of previous memory protection since + we get that for free the first time we call VirtualProtect. + 2005-12-15 Corinna Vinschen * mmap.cc (fhandler_dev_zero::fixup_mmap_after_fork): Use diff --git a/winsup/cygwin/hookapi.cc b/winsup/cygwin/hookapi.cc index 29a988912..26aff5165 100644 --- a/winsup/cygwin/hookapi.cc +++ b/winsup/cygwin/hookapi.cc @@ -53,25 +53,14 @@ rvadelta (PIMAGE_NT_HEADERS pnt, DWORD import_rva) void * putmem (PIMAGE_THUNK_DATA pi, const void *hookfn) { - - DWORD flOldProtect, flNewProtect, flDontCare; - MEMORY_BASIC_INFORMATION mbi; - - /* Get the current protection attributes */ - VirtualQuery (pi, &mbi, sizeof (mbi)); - - /* Remove ReadOnly and ExecuteRead attributes, add on ReadWrite flag */ - flNewProtect = mbi.Protect; - flNewProtect &= ~(PAGE_READONLY | PAGE_EXECUTE_READ); - flNewProtect |= PAGE_READWRITE; - - if (!VirtualProtect (pi, sizeof (PVOID), flNewProtect, &flOldProtect) ) + DWORD ofl; + if (!VirtualProtect (pi, sizeof (PVOID), PAGE_READWRITE, &ofl) ) return NULL; void *origfn = (void *) pi->u1.Function; pi->u1.Function = (DWORD) hookfn; - VirtualProtect (pi, sizeof (PVOID), flOldProtect, &flDontCare); + VirtualProtect (pi, sizeof (PVOID), ofl, &ofl); return origfn; }