Bug 479667 - Firefox should use SetProcessDEPPolicy (if available) to get DEP protection on Windows XPSP3 as well as Windows Vista if the global configuration has DEP off by default, p=bsmedberg r=jimm a=dveditz

git-svn-id: svn://10.0.0.236/trunk@258095 18797224-902f-48f8-a5cc-f745e15eee43
This commit is contained in:
mrbkap%gmail.com 2009-08-13 03:52:23 +00:00
parent 7c45662399
commit 2d5c16f9da

View File

@ -107,6 +107,11 @@
#ifdef XP_WIN
#include "nsIWinAppHelper.h"
#include <windows.h>
#ifndef PROCESS_DEP_ENABLE
#define PROCESS_DEP_ENABLE 0x1
#endif
#endif
#include "nsCRT.h"
@ -2432,9 +2437,27 @@ static void MOZ_gdk_display_close(GdkDisplay *display)
*/
PRBool nspr_use_zone_allocator = PR_FALSE;
#ifdef XP_WIN
typedef BOOL (WINAPI* SetProcessDEPPolicyFunc)(DWORD dwFlags);
#endif
int
XRE_main(int argc, char* argv[], const nsXREAppData* aAppData)
{
#ifdef XP_WIN
/* On Windows XPSP3 and Windows Vista if DEP is configured off-by-default
we still want DEP protection: enable it explicitly and programmatically.
This function is not available on WinXPSP2 so we dynamically load it.
*/
HMODULE kernel32 = GetModuleHandleW(L"kernel32.dll");
SetProcessDEPPolicyFunc _SetProcessDEPPolicy =
(SetProcessDEPPolicyFunc) GetProcAddress(kernel32, "SetProcessDEPPolicy");
if (_SetProcessDEPPolicy)
_SetProcessDEPPolicy(PROCESS_DEP_ENABLE);
#endif
nsresult rv;
ArgResult ar;
NS_TIMELINE_MARK("enter main");