kernel32: Fix GetTempFileName with invalid path.
Found by Oskar Eisemuth.
This commit is contained in:
parent
105793bff7
commit
8819ae1e66
|
@ -660,6 +660,7 @@ UINT WINAPI GetTempFileNameW( LPCWSTR path, LPCWSTR prefix, UINT unique, LPWSTR
|
||||||
|
|
||||||
int i;
|
int i;
|
||||||
LPWSTR p;
|
LPWSTR p;
|
||||||
|
DWORD attr;
|
||||||
|
|
||||||
if ( !path || !buffer )
|
if ( !path || !buffer )
|
||||||
{
|
{
|
||||||
|
@ -667,6 +668,15 @@ UINT WINAPI GetTempFileNameW( LPCWSTR path, LPCWSTR prefix, UINT unique, LPWSTR
|
||||||
return 0;
|
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 );
|
strcpyW( buffer, path );
|
||||||
p = buffer + strlenW(buffer);
|
p = buffer + strlenW(buffer);
|
||||||
|
|
||||||
|
|
|
@ -364,9 +364,7 @@ static void test_InitPathA(CHAR *newdir, CHAR *curDrive, CHAR *otherDrive)
|
||||||
/* Non-existent path */
|
/* Non-existent path */
|
||||||
sprintf(invalid_dir, "%s\%s",tmppath,"non_existent_dir_1jwj3y32nb3");
|
sprintf(invalid_dir, "%s\%s",tmppath,"non_existent_dir_1jwj3y32nb3");
|
||||||
SetLastError(0xdeadbeef);
|
SetLastError(0xdeadbeef);
|
||||||
todo_wine
|
|
||||||
ok(!GetTempFileNameA(invalid_dir,"tfn",unique,newdir),"GetTempFileNameA should have failed\n");
|
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*/,
|
ok(GetLastError()==ERROR_DIRECTORY || broken(GetLastError()==ERROR_PATH_NOT_FOUND)/*win98*/,
|
||||||
"got %d, expected ERROR_DIRECTORY\n", GetLastError());
|
"got %d, expected ERROR_DIRECTORY\n", GetLastError());
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue