[PATCH v3 1/2] kernel32/tests: Fix stack overflow by DefineDosDeviceW().
Xu Wei
xuwei at uniontech.com
Thu Sep 9 03:45:36 CDT 2021
Signed-off-by: Xu Wei <xuwei at uniontech.com>
---
dlls/kernel32/tests/volume.c | 16 ++++++++++++++++
1 file changed, 16 insertions(+)
diff --git a/dlls/kernel32/tests/volume.c b/dlls/kernel32/tests/volume.c
index cb35de6add1..2fe8c1995cf 100644
--- a/dlls/kernel32/tests/volume.c
+++ b/dlls/kernel32/tests/volume.c
@@ -111,6 +111,7 @@ static void test_dos_devices(void)
{
char buf[MAX_PATH], buf2[400];
char drivestr[3];
+ WCHAR drivestrW[3];
HANDLE file;
BOOL ret;
@@ -185,6 +186,21 @@ static void test_dos_devices(void)
ret = QueryDosDeviceA( drivestr, buf, sizeof(buf) );
ok(!ret, "expected failure\n");
ok(GetLastError() == ERROR_FILE_NOT_FOUND, "got error %u\n", GetLastError());
+
+ SetLastError(0);
+ ret = DefineDosDeviceW( DDD_RAW_TARGET_PATH, drivestrW, NULL );
+ ok(!ret, "expected failure\n");
+ ok(GetLastError() == ERROR_INVALID_PARAMETER, "got error %u\n", GetLastError());
+
+ SetLastError(0);
+ ret = DefineDosDeviceW( DDD_RAW_TARGET_PATH, NULL, drivestrW );
+ ok(ret, "got error %u\n", GetLastError());
+
+ SetLastError(0);
+ DefineDosDeviceW( DDD_EXACT_MATCH_ON_REMOVE|DDD_RAW_TARGET_PATH|DDD_REMOVE_DEFINITION,
+ "{00000001-0000-0000-0000-4E6574446576}",
+ "\\Device\\{00000001-0000-0000-0000-4E6574446576}" );
+ ok(ret, "got error %u\n", GetLastError());
}
static void test_FindFirstVolume(void)
--
2.20.1
More information about the wine-devel
mailing list