Divert CreateFileW in addition to CreateFileA.
This commit is contained in:
+1
-1
@@ -54,7 +54,7 @@ AC_CHECK_FUNCS(__getdelim __srefill __filbuf __srget __uflow)
|
||||
AC_CHECK_FUNCS(open64 lseek64 mmap64 fopen64 freopen64 ftello64 fseeko64 fsetpos64)
|
||||
AC_CHECK_FUNCS(__open64 __lseek64 __fopen64 __freopen64 __ftello64 __fseeko64 __fsetpos64)
|
||||
AC_CHECK_FUNCS(__fgets_chk __fgets_unlocked_chk __fread_chk __fread_unlocked_chk __read_chk __recv_chk __recvfrom_chk)
|
||||
AC_CHECK_FUNCS(CreateFile)
|
||||
AC_CHECK_FUNCS(CreateFileA CreateFileW)
|
||||
|
||||
AC_CHECK_TYPES(sighandler_t, [], [],
|
||||
[#define _GNU_SOURCE
|
||||
|
||||
+2
-1
@@ -25,7 +25,8 @@
|
||||
/* #undef HAVE_ARPA_INET_H */
|
||||
#define HAVE_BIND 1
|
||||
#define HAVE_CONNECT 1
|
||||
#define HAVE_CREATEFILE 1
|
||||
#define HAVE_CREATEFILEA 1
|
||||
#define HAVE_CREATEFILEW 1
|
||||
/* #undef HAVE_DLFCN_H */
|
||||
#define HAVE_DUP 1
|
||||
#define HAVE_DUP2 1
|
||||
|
||||
+26
-7
@@ -36,14 +36,17 @@
|
||||
#include "fd.h"
|
||||
|
||||
/* Kernel functions that we divert */
|
||||
#if defined HAVE_CREATEFILE
|
||||
static HANDLE (*ORIG(CreateFileA))(LPCTSTR lpFileName, DWORD dwDesiredAccess,
|
||||
DWORD dwShareMode, LPSECURITY_ATTRIBUTES lpSecurityAttributes,
|
||||
DWORD dwCreationDisposition, DWORD dwFlagsAndAttributes,
|
||||
HANDLE hTemplateFile);
|
||||
#if defined HAVE_CREATEFILEA
|
||||
static HANDLE (*ORIG(CreateFileA))(LPCTSTR, DWORD, DWORD, LPSECURITY_ATTRIBUTES,
|
||||
DWORD, DWORD, HANDLE);
|
||||
#endif
|
||||
|
||||
#if defined HAVE_CREATEFILE
|
||||
#if defined HAVE_CREATEFILEA
|
||||
static HANDLE (*ORIG(CreateFileW))(LPCWSTR, DWORD, DWORD, LPSECURITY_ATTRIBUTES,
|
||||
DWORD, DWORD, HANDLE);
|
||||
#endif
|
||||
|
||||
#if defined HAVE_CREATEFILEA
|
||||
HANDLE NEW(CreateFileA)(LPCTSTR lpFileName, DWORD dwDesiredAccess,
|
||||
DWORD dwShareMode, LPSECURITY_ATTRIBUTES lpSecurityAttributes,
|
||||
DWORD dwCreationDisposition, DWORD dwFlagsAndAttributes,
|
||||
@@ -56,12 +59,28 @@ HANDLE NEW(CreateFileA)(LPCTSTR lpFileName, DWORD dwDesiredAccess,
|
||||
}
|
||||
#endif
|
||||
|
||||
#if defined HAVE_CREATEFILEW
|
||||
HANDLE NEW(CreateFileW)(LPCWSTR lpFileName, DWORD dwDesiredAccess,
|
||||
DWORD dwShareMode, LPSECURITY_ATTRIBUTES lpSecurityAttributes,
|
||||
DWORD dwCreationDisposition, DWORD dwFlagsAndAttributes,
|
||||
HANDLE hTemplateFile)
|
||||
{
|
||||
fprintf(stderr, "CreateFileW diverted!\n");
|
||||
return ORIG(CreateFileW)(lpFileName, dwDesiredAccess, dwShareMode,
|
||||
lpSecurityAttributes, dwCreationDisposition,
|
||||
dwFlagsAndAttributes, hTemplateFile);
|
||||
}
|
||||
#endif
|
||||
|
||||
/* Win32 function table */
|
||||
#if defined _WIN32
|
||||
zzuf_table_t table_win32[] =
|
||||
{
|
||||
#if defined HAVE_CREATEFILE
|
||||
#if defined HAVE_CREATEFILEA
|
||||
DIVERT(CreateFileA),
|
||||
#endif
|
||||
#if defined HAVE_CREATEFILEW
|
||||
DIVERT(CreateFileW),
|
||||
#endif
|
||||
DIVERT_END
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user