wininet: Improve FtpOpenFile()'s parameter checking and remove
the corresponding todo_wines.
Paul Vriens
paul.vriens.wine at gmail.com
Fri Feb 16 13:18:23 CST 2007
Francois Gouget wrote:
> Also make test_getfile_no_open() succeed on Windows 98.
> ---
>
> I have had some strange results with these tests. One of them was
> actually succeeding in a todo_wine for a good while.
>
> dlls/wininet/ftp.c | 12 +++++++++++-
> dlls/wininet/tests/ftp.c | 12 +++---------
> 2 files changed, 14 insertions(+), 10 deletions(-)
>
This was the last one for now on my list, you beat me to it. We do have some
conflicting patches now in wine-patches.
> diff --git a/dlls/wininet/ftp.c b/dlls/wininet/ftp.c
> index 5b073cf..2bd29fd 100644
> --- a/dlls/wininet/ftp.c
> +++ b/dlls/wininet/ftp.c
> @@ -1011,11 +1011,21 @@ HINTERNET WINAPI FtpOpenFileW(HINTERNET hFtpSession,
> debugstr_w(lpszFileName), fdwAccess, dwFlags, dwContext);
>
> lpwfs = (LPWININETFTPSESSIONW) WININET_GetObject( hFtpSession );
> - if (NULL == lpwfs || WH_HFTPSESSION != lpwfs->hdr.htype)
> + if (NULL == lpwfs)
> + {
> + INTERNET_SetLastError(ERROR_INTERNET_NOT_INITIALIZED);
> + goto lend;
Why do a 'goto lend' you could just 'return FALSE' like I did in the other ftp
functions. No need do another check for lpwfs being NULL. If you do a 'return
FALSE' you could also get rid of the check for lpwfs being NULL right after lend:.
> + }
> + if (WH_HFTPSESSION != lpwfs->hdr.htype)
> {
> INTERNET_SetLastError(ERROR_INTERNET_INCORRECT_HANDLE_TYPE);
> goto lend;
> }
> + if (dwFlags & ~(INTERNET_FLAGS_MASK|FTP_TRANSFER_TYPE_MASK))
> + {
> + INTERNET_SetLastError(ERROR_INVALID_PARAMETER);
> + goto lend;
> + }
I think this covers the 5 in the test but not all possible combinations. I did
some (loop) testing with dwFlags (also used in FtpGetFile and FtpPutFile) and it
appears all boils down to the last 3 bits (see FtpGetFile).
Cheers,
Paul.
More information about the wine-devel
mailing list