Preserve last error
Hooked functions that failed and logged debug messages were causing an incorrect last error to be set.
This commit is contained in:
parent
06459edb69
commit
0472db80b2
27
ANSI.c
27
ANSI.c
@ -213,7 +213,8 @@
|
|||||||
v1.85, 22 & 23 August, 2018:
|
v1.85, 22 & 23 August, 2018:
|
||||||
fix creating the wrap buffer;
|
fix creating the wrap buffer;
|
||||||
always inject from ansicon.exe, even if it's GUI or excluded;
|
always inject from ansicon.exe, even if it's GUI or excluded;
|
||||||
log CreateFile calls.
|
log CreateFile calls;
|
||||||
|
preserve last error.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "ansicon.h"
|
#include "ansicon.h"
|
||||||
@ -3113,7 +3114,9 @@ BOOL WINAPI MyCreateProcessA( LPCSTR lpApplicationName,
|
|||||||
lpStartupInfo,
|
lpStartupInfo,
|
||||||
&child_pi ))
|
&child_pi ))
|
||||||
{
|
{
|
||||||
DEBUGSTR( 1, " Failed (%u)", GetLastError() );
|
DWORD err = GetLastError();
|
||||||
|
DEBUGSTR( 1, " Failed (%u)", err );
|
||||||
|
SetLastError( err );
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -3151,7 +3154,9 @@ BOOL WINAPI MyCreateProcessW( LPCWSTR lpApplicationName,
|
|||||||
lpStartupInfo,
|
lpStartupInfo,
|
||||||
&child_pi ))
|
&child_pi ))
|
||||||
{
|
{
|
||||||
DEBUGSTR( 1, " Failed (%u)", GetLastError() );
|
DWORD err = GetLastError();
|
||||||
|
DEBUGSTR( 1, " Failed (%u)", err );
|
||||||
|
SetLastError( err );
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -3222,8 +3227,10 @@ FARPROC WINAPI MyGetProcAddress( HMODULE hModule, LPCSTR lpProcName )
|
|||||||
HMODULE WINAPI MyLoadLibraryA( LPCSTR lpFileName )
|
HMODULE WINAPI MyLoadLibraryA( LPCSTR lpFileName )
|
||||||
{
|
{
|
||||||
HMODULE hMod = LoadLibraryA( lpFileName );
|
HMODULE hMod = LoadLibraryA( lpFileName );
|
||||||
DEBUGSTR( 2, "LoadLibraryA %s", lpFileName );
|
DWORD err = GetLastError();
|
||||||
|
DEBUGSTR( 2, "LoadLibraryA %\"s", lpFileName );
|
||||||
HookAPIAllMod( Hooks, FALSE, TRUE );
|
HookAPIAllMod( Hooks, FALSE, TRUE );
|
||||||
|
SetLastError( err );
|
||||||
return hMod;
|
return hMod;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -3231,8 +3238,10 @@ HMODULE WINAPI MyLoadLibraryA( LPCSTR lpFileName )
|
|||||||
HMODULE WINAPI MyLoadLibraryW( LPCWSTR lpFileName )
|
HMODULE WINAPI MyLoadLibraryW( LPCWSTR lpFileName )
|
||||||
{
|
{
|
||||||
HMODULE hMod = LoadLibraryW( lpFileName );
|
HMODULE hMod = LoadLibraryW( lpFileName );
|
||||||
DEBUGSTR( 2, "LoadLibraryW %S", lpFileName );
|
DWORD err = GetLastError();
|
||||||
|
DEBUGSTR( 2, "LoadLibraryW %\"S", lpFileName );
|
||||||
HookAPIAllMod( Hooks, FALSE, TRUE );
|
HookAPIAllMod( Hooks, FALSE, TRUE );
|
||||||
|
SetLastError( err );
|
||||||
return hMod;
|
return hMod;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -3245,8 +3254,10 @@ HMODULE WINAPI MyLoadLibraryExA( LPCSTR lpFileName, HANDLE hFile,
|
|||||||
LOAD_LIBRARY_AS_DATAFILE_EXCLUSIVE |
|
LOAD_LIBRARY_AS_DATAFILE_EXCLUSIVE |
|
||||||
LOAD_LIBRARY_AS_IMAGE_RESOURCE)))
|
LOAD_LIBRARY_AS_IMAGE_RESOURCE)))
|
||||||
{
|
{
|
||||||
DEBUGSTR( 2, "LoadLibraryExA %s", lpFileName );
|
DWORD err = GetLastError();
|
||||||
|
DEBUGSTR( 2, "LoadLibraryExA %\"s", lpFileName );
|
||||||
HookAPIAllMod( Hooks, FALSE, TRUE );
|
HookAPIAllMod( Hooks, FALSE, TRUE );
|
||||||
|
SetLastError( err );
|
||||||
}
|
}
|
||||||
return hMod;
|
return hMod;
|
||||||
}
|
}
|
||||||
@ -3260,8 +3271,10 @@ HMODULE WINAPI MyLoadLibraryExW( LPCWSTR lpFileName, HANDLE hFile,
|
|||||||
LOAD_LIBRARY_AS_DATAFILE_EXCLUSIVE |
|
LOAD_LIBRARY_AS_DATAFILE_EXCLUSIVE |
|
||||||
LOAD_LIBRARY_AS_IMAGE_RESOURCE)))
|
LOAD_LIBRARY_AS_IMAGE_RESOURCE)))
|
||||||
{
|
{
|
||||||
DEBUGSTR( 2, "LoadLibraryExW %S", lpFileName );
|
DWORD err = GetLastError();
|
||||||
|
DEBUGSTR( 2, "LoadLibraryExW %\"S", lpFileName );
|
||||||
HookAPIAllMod( Hooks, FALSE, TRUE );
|
HookAPIAllMod( Hooks, FALSE, TRUE );
|
||||||
|
SetLastError( err );
|
||||||
}
|
}
|
||||||
return hMod;
|
return hMod;
|
||||||
}
|
}
|
||||||
|
@ -345,6 +345,7 @@ Version History
|
|||||||
- fix -e et al when redirecting to NUL;
|
- fix -e et al when redirecting to NUL;
|
||||||
- prevent -p from injecting when already injected;
|
- prevent -p from injecting when already injected;
|
||||||
- fix running directly via ansicon (hook even if it's GUI or excluded);
|
- fix running directly via ansicon (hook even if it's GUI or excluded);
|
||||||
|
- preserve last error;
|
||||||
+ add log level 32 to monitor CreateFile.
|
+ add log level 32 to monitor CreateFile.
|
||||||
|
|
||||||
1.84 - 11 May, 2018:
|
1.84 - 11 May, 2018:
|
||||||
|
Loading…
x
Reference in New Issue
Block a user