Fix the case where lpszSearchFile is NULL in FtpFindFirstFile.
diff --git a/dlls/wininet/ftp.c b/dlls/wininet/ftp.c index fd4c4cd..16cefa7 100644 --- a/dlls/wininet/ftp.c +++ b/dlls/wininet/ftp.c
@@ -606,7 +606,7 @@ workRequest.asyncall = FTPFINDFIRSTFILEW; workRequest.handle = hConnect; req = &workRequest.u.FtpFindFirstFileW; - req->lpszSearchFile = WININET_strdupW(lpszSearchFile); + req->lpszSearchFile = (lpszSearchFile == NULL) ? NULL : WININET_strdupW(lpszSearchFile); req->lpFindFileData = lpFindFileData; req->dwFlags = dwFlags; req->dwContext= dwContext; @@ -2659,7 +2659,7 @@ LPWININETFINDNEXTW lpwfn = NULL; HINTERNET handle = 0; - TRACE("(%p,%d,%p,%ld)\n", lpwfs, nSocket, lpFindFileData, dwContext); + TRACE("(%p,%d,%s,%p,%ld)\n", lpwfs, nSocket, debugstr_w(lpszSearchFile), lpFindFileData, dwContext); if (FTP_ParseDirectory(lpwfs, nSocket, lpszSearchFile, &lpafp, &dwSize)) { @@ -2878,7 +2878,8 @@ } if(lpfp->lpszName) { - if(PathMatchSpecW(lpfp->lpszName, lpszSearchFile)) { + if((lpszSearchFile == NULL) || + (PathMatchSpecW(lpfp->lpszName, lpszSearchFile))) { found = TRUE; TRACE("Matched: %s\n", debugstr_w(lpfp->lpszName)); }
diff --git a/dlls/wininet/internet.c b/dlls/wininet/internet.c index f0b3c27..c4feac6 100644 --- a/dlls/wininet/internet.c +++ b/dlls/wininet/internet.c
@@ -2556,7 +2556,8 @@ req = &workRequest.u.FtpFindFirstFileW; FTP_FtpFindFirstFileW(workRequest.handle, req->lpszSearchFile, req->lpFindFileData, req->dwFlags, req->dwContext); - HeapFree(GetProcessHeap(), 0, req->lpszSearchFile); + if (req->lpszSearchFile != NULL) + HeapFree(GetProcessHeap(), 0, req->lpszSearchFile); } break;