Divert CreateFileW in addition to CreateFileA.

This commit is contained in:
Sam Hocevar
2010-09-22 22:26:44 +00:00
committed by sam
parent c60b52ccb3
commit f377a31839
3 changed files with 29 additions and 9 deletions
+1 -1
View File
@@ -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
View File
@@ -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
View File
@@ -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
};