Commit ccf9b18e authored by Dmitry Timoshkov's avatar Dmitry Timoshkov Committed by Alexandre Julliard

kernel32: GetLongPathName should fail when called with a wildcard.

parent 3a78ec67
...@@ -297,6 +297,8 @@ DWORD WINAPI GetLongPathNameW( LPCWSTR shortpath, LPWSTR longpath, DWORD longlen ...@@ -297,6 +297,8 @@ DWORD WINAPI GetLongPathNameW( LPCWSTR shortpath, LPWSTR longpath, DWORD longlen
HANDLE goit; HANDLE goit;
BOOL is_legal_8dot3; BOOL is_legal_8dot3;
TRACE("%s,%p,%u\n", debugstr_w(shortpath), longpath, longlen);
if (!shortpath) if (!shortpath)
{ {
SetLastError(ERROR_INVALID_PARAMETER); SetLastError(ERROR_INVALID_PARAMETER);
...@@ -308,8 +310,6 @@ DWORD WINAPI GetLongPathNameW( LPCWSTR shortpath, LPWSTR longpath, DWORD longlen ...@@ -308,8 +310,6 @@ DWORD WINAPI GetLongPathNameW( LPCWSTR shortpath, LPWSTR longpath, DWORD longlen
return 0; return 0;
} }
TRACE("%s,%p,%d\n", debugstr_w(shortpath), longpath, longlen);
if (shortpath[0] == '\\' && shortpath[1] == '\\') if (shortpath[0] == '\\' && shortpath[1] == '\\')
{ {
FIXME("UNC pathname %s\n", debugstr_w(shortpath)); FIXME("UNC pathname %s\n", debugstr_w(shortpath));
...@@ -333,6 +333,12 @@ DWORD WINAPI GetLongPathNameW( LPCWSTR shortpath, LPWSTR longpath, DWORD longlen ...@@ -333,6 +333,12 @@ DWORD WINAPI GetLongPathNameW( LPCWSTR shortpath, LPWSTR longpath, DWORD longlen
lp = sp = 2; lp = sp = 2;
} }
if (strpbrkW(shortpath + sp, wildcardsW))
{
SetLastError(ERROR_INVALID_NAME);
return 0;
}
while (shortpath[sp]) while (shortpath[sp])
{ {
/* check for path delimiters and reproduce them */ /* check for path delimiters and reproduce them */
......
...@@ -1202,9 +1202,7 @@ static void test_GetLongPathNameA(void) ...@@ -1202,9 +1202,7 @@ static void test_GetLongPathNameA(void)
strcpy(name, "*"); strcpy(name, "*");
SetLastError(0xdeadbeef); SetLastError(0xdeadbeef);
length = pGetLongPathNameA(tempfile, temppath, MAX_PATH); length = pGetLongPathNameA(tempfile, temppath, MAX_PATH);
todo_wine
ok(!length, "GetLongPathNameA should fail\n"); ok(!length, "GetLongPathNameA should fail\n");
todo_wine
ok(GetLastError() == ERROR_INVALID_NAME, "wrong error %d\n", GetLastError()); ok(GetLastError() == ERROR_INVALID_NAME, "wrong error %d\n", GetLastError());
strcpy(name, "longfilename.longext"); strcpy(name, "longfilename.longext");
......
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