=?UTF-8?Q?Andr=C3=A9=20Hentschel=20?=: ntdll: Catch bad pointers in RtlWow64EnableFsRedirectionEx.
Alexandre Julliard
julliard at winehq.org
Wed Aug 22 14:04:20 CDT 2012
Module: wine
Branch: master
Commit: aac478f51b993a56ec0c4deb5b051d60d80bf6e5
URL: http://source.winehq.org/git/wine.git/?a=commit;h=aac478f51b993a56ec0c4deb5b051d60d80bf6e5
Author: André Hentschel <nerv at dawncrow.de>
Date: Tue Aug 21 21:58:17 2012 +0200
ntdll: Catch bad pointers in RtlWow64EnableFsRedirectionEx.
---
dlls/ntdll/directory.c | 2 ++
dlls/ntdll/tests/directory.c | 5 +++++
2 files changed, 7 insertions(+), 0 deletions(-)
diff --git a/dlls/ntdll/directory.c b/dlls/ntdll/directory.c
index c8fff6b..28b0ab3 100644
--- a/dlls/ntdll/directory.c
+++ b/dlls/ntdll/directory.c
@@ -3022,6 +3022,8 @@ NTSTATUS WINAPI RtlWow64EnableFsRedirection( BOOLEAN enable )
NTSTATUS WINAPI RtlWow64EnableFsRedirectionEx( ULONG disable, ULONG *old_value )
{
if (!is_wow64) return STATUS_NOT_IMPLEMENTED;
+ if (((ULONG_PTR)old_value >> 16) == 0) return STATUS_ACCESS_VIOLATION;
+
*old_value = !ntdll_get_thread_data()->wow64_redir;
ntdll_get_thread_data()->wow64_redir = !disable;
return STATUS_SUCCESS;
diff --git a/dlls/ntdll/tests/directory.c b/dlls/ntdll/tests/directory.c
index c74bf34..d6b886a 100644
--- a/dlls/ntdll/tests/directory.c
+++ b/dlls/ntdll/tests/directory.c
@@ -287,6 +287,11 @@ static void test_redirection(void)
ok( !status, "RtlWow64EnableFsRedirectionEx failed status %x\n", status );
ok( !cur, "RtlWow64EnableFsRedirectionEx got %u\n", cur );
+ status = pRtlWow64EnableFsRedirectionEx( TRUE, NULL );
+ ok( status == STATUS_ACCESS_VIOLATION, "RtlWow64EnableFsRedirectionEx failed with status %x\n", status );
+ status = pRtlWow64EnableFsRedirectionEx( TRUE, (void*)1 );
+ ok( status == STATUS_ACCESS_VIOLATION, "RtlWow64EnableFsRedirectionEx failed with status %x\n", status );
+
status = pRtlWow64EnableFsRedirection( FALSE );
ok( !status, "RtlWow64EnableFsRedirectionEx failed status %x\n", status );
status = pRtlWow64EnableFsRedirectionEx( FALSE, &cur );
More information about the wine-cvs
mailing list