Commit 8819ae1e authored by Louis Lenders's avatar Louis Lenders Committed by Alexandre Julliard

kernel32: Fix GetTempFileName with invalid path.

Found by Oskar Eisemuth.
parent 105793bf
......@@ -660,6 +660,7 @@ UINT WINAPI GetTempFileNameW( LPCWSTR path, LPCWSTR prefix, UINT unique, LPWSTR
int i;
LPWSTR p;
DWORD attr;
if ( !path || !buffer )
{
......@@ -667,6 +668,15 @@ UINT WINAPI GetTempFileNameW( LPCWSTR path, LPCWSTR prefix, UINT unique, LPWSTR
return 0;
}
/* ensure that the provided directory exists */
attr = GetFileAttributesW(path);
if (attr == INVALID_FILE_ATTRIBUTES || !(attr & FILE_ATTRIBUTE_DIRECTORY))
{
TRACE("path not found %s\n", debugstr_w(path));
SetLastError( ERROR_DIRECTORY );
return 0;
}
strcpyW( buffer, path );
p = buffer + strlenW(buffer);
......
......@@ -364,9 +364,7 @@ static void test_InitPathA(CHAR *newdir, CHAR *curDrive, CHAR *otherDrive)
/* Non-existent path */
sprintf(invalid_dir, "%s\%s",tmppath,"non_existent_dir_1jwj3y32nb3");
SetLastError(0xdeadbeef);
todo_wine
ok(!GetTempFileNameA(invalid_dir,"tfn",unique,newdir),"GetTempFileNameA should have failed\n");
todo_wine
ok(GetLastError()==ERROR_DIRECTORY || broken(GetLastError()==ERROR_PATH_NOT_FOUND)/*win98*/,
"got %d, expected ERROR_DIRECTORY\n", GetLastError());
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment