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;