notoskrnl.exe: Fix the stack overflow bugs in raising exceptions (DLL_PROCESS_DETACH processing for DllMain in ntoskrnl.c)

Anton Rudnev mibori at etersoft.ru
Sat Oct 11 07:30:03 CDT 2008


-------------- next part --------------
From 60d3c8de06cc42eae61a073d91c9367884d229a7 Mon Sep 17 00:00:00 2001
From: Anton Rudnev <mibori at builder.office.etersoft.ru>
Date: Tue, 7 Oct 2008 17:58:46 +0400
Subject: [PATCH] notoskrnl.exe: Fix the stack overflow bugs in raising exceptions (DLL_PROCESS_DETACH processing for DllMain in ntoskrnl.c)

---
 dlls/ntoskrnl.exe/ntoskrnl.c |    8 +++++++-
 1 files changed, 7 insertions(+), 1 deletions(-)

diff --git a/dlls/ntoskrnl.exe/ntoskrnl.c b/dlls/ntoskrnl.exe/ntoskrnl.c
index 123a558..3fb0674 100644
--- a/dlls/ntoskrnl.exe/ntoskrnl.c
+++ b/dlls/ntoskrnl.exe/ntoskrnl.c
@@ -886,14 +886,20 @@ NTSTATUS WINAPI PsSetCreateProcessNotifyRoutine( PCREATE_PROCESS_NOTIFY_ROUTINE
 BOOL WINAPI DllMain( HINSTANCE inst, DWORD reason, LPVOID reserved )
 {
     LARGE_INTEGER count;
+    static vectored_handler_added = NULL;
 
     switch(reason)
     {
     case DLL_PROCESS_ATTACH:
         DisableThreadLibraryCalls( inst );
-        RtlAddVectoredExceptionHandler( TRUE, vectored_handler );
+        vectored_handler_added = RtlAddVectoredExceptionHandler( TRUE, vectored_handler );
         KeQueryTickCount( &count );  /* initialize the global KeTickCount */
         break;
+    case DLL_PROCESS_DETACH:
+        if(vectored_handler_added){
+            RtlRemoveVectoredExceptionHandler(vectored_handler_added);
+            vectored_handler_added = NULL;
+        }
     }
     return TRUE;
 }
-- 
1.5.6.5.GIT



More information about the wine-patches mailing list