Module: wine Branch: master Commit: d01c135aed362556fdfd79fd5e4403d7dfb5d90c URL: http://source.winehq.org/git/wine.git/?a=commit;h=d01c135aed362556fdfd79fd5e...
Author: Sebastian Lackner sebastian@fds-team.de Date: Tue Sep 2 05:23:37 2014 +0200
kernel32/tests: Add a lot of picky GetVolumePathName tests.
---
dlls/kernel32/tests/volume.c | 95 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 95 insertions(+)
diff --git a/dlls/kernel32/tests/volume.c b/dlls/kernel32/tests/volume.c index 4349ec4..b7369a6 100644 --- a/dlls/kernel32/tests/volume.c +++ b/dlls/kernel32/tests/volume.c @@ -683,6 +683,94 @@ static void test_GetVolumePathNameA(void) "\??\ReallyBogus", "%CurrentDrive%\", sizeof(volume_path), NO_ERROR, NO_ERROR }, + { /* test 20 */ + "C:", "C:", 2, + ERROR_FILENAME_EXCED_RANGE, NO_ERROR + }, + { /* test 21 */ + "C:", "C:", 3, + NO_ERROR, ERROR_FILENAME_EXCED_RANGE + }, + { /* test 22 */ + "C:\", "C:", 2, + ERROR_FILENAME_EXCED_RANGE, NO_ERROR + }, + { /* test 23 */ + "C:\", "C:", 3, + NO_ERROR, ERROR_FILENAME_EXCED_RANGE + }, + { /* test 24 */ + "C::", "C:", 2, + ERROR_FILENAME_EXCED_RANGE, NO_ERROR + }, + { /* test 25 */ + "C::", "C:", 3, + NO_ERROR, ERROR_FILENAME_EXCED_RANGE + }, + { /* test 26 */ + "C::", "C:\", 4, + NO_ERROR, ERROR_MORE_DATA + }, + { /* test 27 */ + "C:\windows\system32\AnInvalidFolder", "C:", 3, + NO_ERROR, ERROR_FILENAME_EXCED_RANGE + }, + { /* test 28 */ + "\\?\C:\AnInvalidFolder", "\\?\C:", 3, + ERROR_FILENAME_EXCED_RANGE, NO_ERROR + }, + { /* test 29 */ + "\\?\C:\AnInvalidFolder", "\\?\C:", 6, + ERROR_FILENAME_EXCED_RANGE, NO_ERROR + }, + { /* test 30 */ + "\\?\C:\AnInvalidFolder", "\\?\C:", 7, + NO_ERROR, ERROR_FILENAME_EXCED_RANGE + }, + { /* test 31 */ + "\\?\c:\AnInvalidFolder", "\\?\c:", 7, + NO_ERROR, ERROR_FILENAME_EXCED_RANGE + }, + { /* test 32 */ + "C:/", "C:\", 4, + NO_ERROR, ERROR_MORE_DATA + }, + { /* test 33 */ + "M:/", "", 4, + ERROR_FILE_NOT_FOUND, ERROR_MORE_DATA + }, + { /* test 34 */ + "C:ABC:DEF:\AnInvalidFolder", "C:\", 4, + NO_ERROR, ERROR_MORE_DATA + }, + { /* test 35 */ + "?:ABC:DEF:\AnInvalidFolder", "?:\" /* win2k, winxp */, sizeof(volume_path), + ERROR_FILE_NOT_FOUND, NO_ERROR + }, + { /* test 36 */ + "relative/path", "%CurrentDrive%\", sizeof(volume_path), + NO_ERROR, NO_ERROR + }, + { /* test 37 */ + "/unix-style/absolute/path", "%CurrentDrive%\", sizeof(volume_path), + NO_ERROR, NO_ERROR + }, + { /* test 38 */ + "\??\C:\NonExistent", "%CurrentDrive%\", sizeof(volume_path), + NO_ERROR, NO_ERROR + }, + { /* test 39 */ + "\??\M:\NonExistent", "%CurrentDrive%\", sizeof(volume_path), + NO_ERROR, NO_ERROR + }, + { /* test 40 */ + "somefile:def", "%CurrentDrive%\", sizeof(volume_path), + NO_ERROR, NO_ERROR + }, + { /* test 41 */ + "s:omefile", "S:\" /* win2k, winxp */, sizeof(volume_path), + ERROR_FILE_NOT_FOUND, NO_ERROR + }, }; BOOL ret, success; DWORD error; @@ -709,6 +797,9 @@ static void test_GetVolumePathNameA(void) BOOL expected_ret = test_paths[i].error == NO_ERROR ? TRUE : FALSE;
volume_path[0] = 0; + if (test_paths[i].path_len < sizeof(volume_path)) + volume_path[ test_paths[i].path_len ] = 0x11; + SetLastError( 0xdeadbeef ); ret = pGetVolumePathNameA( test_paths[i].file_name, output, test_paths[i].path_len ); error = GetLastError(); @@ -734,6 +825,10 @@ static void test_GetVolumePathNameA(void) ok(success, "GetVolumePathName test %d unexpectedly returned error 0x%x (expected 0x%x).\n", i, error, test_paths[i].error); } + + if (test_paths[i].path_len < sizeof(volume_path)) + ok(volume_path[ test_paths[i].path_len ] == 0x11, + "GetVolumePathName test %d corrupted byte after end of buffer.\n", i); } }