Sebastian Lackner : kernel32/tests: Add a lot of picky GetVolumePathName tests.
Module: wine Branch: master Commit: d01c135aed362556fdfd79fd5e4403d7dfb5d90c URL: http://source.winehq.org/git/wine.git/?a=commit;h=d01c135aed362556fdfd79fd5e... Author: Sebastian Lackner <sebastian(a)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); } }
participants (1)
-
Alexandre Julliard