From b9b900f4b89f4225259b02482fb8d828fa693586 Mon Sep 17 00:00:00 2001 From: Zac Brown Date: Sat, 1 Dec 2007 17:21:07 -0500 Subject: [PATCH] wininet: Fix FtpGetCurrentDirectoryW to handle bad input. --- dlls/wininet/ftp.c | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) 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);