diff --git a/dlls/wininet/ftp.c b/dlls/wininet/ftp.c index 39fbc904205..ce60fa0c6d7 100644 --- a/dlls/wininet/ftp.c +++ b/dlls/wininet/ftp.c @@ -885,12 +885,30 @@ BOOL WINAPI FtpGetCurrentDirectoryW(HINTERNET hFtpSession, LPWSTR lpszCurrentDir TRACE("len(%d)\n", *lpdwCurrentDirectory); lpwfs = (LPWININETFTPSESSIONW) WININET_GetObject( hFtpSession ); - if (NULL == lpwfs || WH_HFTPSESSION != lpwfs->hdr.htype) + if (NULL == lpwfs) + { + INTERNET_SetLastError(ERROR_INVALID_HANDLE); + goto lend; + } + + if (WH_HFTPSESSION != lpwfs->hdr.htype) { INTERNET_SetLastError(ERROR_INTERNET_INCORRECT_HANDLE_TYPE); goto lend; } + if (!lpdwCurrentDirectory) + { + INTERNET_SetLastError(ERROR_INVALID_PARAMETER); + goto lend; + } + + if (lpszCurrentDirectory == NULL) + { + INTERNET_SetLastError(ERROR_INSUFFICIENT_BUFFER); + goto lend; + } + if (lpwfs->download_in_progress != NULL) { INTERNET_SetLastError(ERROR_FTP_TRANSFER_IN_PROGRESS);