mirror of
https://gitlab.winehq.org/wine/wine-staging.git
synced 2025-01-28 22:04:43 -08:00
Added patch to fix handling of subdirectory in FtpFindFirstFile.
This commit is contained in:
parent
8765c50218
commit
71a0838ac3
@ -37,6 +37,11 @@ Wine. All those differences are also documented on the
|
||||
Included bug fixes and improvements
|
||||
===================================
|
||||
|
||||
**Bugfixes and features included in the next upcoming release [1]:**
|
||||
|
||||
* Fix handling of subdirectory in FtpFindFirstFile ([Wine Bug #16526](https://bugs.winehq.org/show_bug.cgi?id=16526))
|
||||
|
||||
|
||||
**Bugs fixed in Wine Staging 1.7.33 [119]:**
|
||||
|
||||
* ATL IOCS data should not be stored in GWLP_USERDATA ([Wine Bug #21767](https://bugs.winehq.org/show_bug.cgi?id=21767))
|
||||
|
1
debian/changelog
vendored
1
debian/changelog
vendored
@ -1,5 +1,6 @@
|
||||
wine-compholio (1.7.34) UNRELEASED; urgency=low
|
||||
* Fix issue in DOS Attributes patch which broke ./configure on systems with alternative shells.
|
||||
* Added patch to fix handling of subdirectory in FtpFindFirstFile.
|
||||
* Removed patch to implement combase HSTRING objects (accepted upstream).
|
||||
* Removed patch to add fake ProductId to registry (accepted upstream).
|
||||
-- Sebastian Lackner <sebastian@fds-team.de> Mon, 15 Dec 2014 22:42:09 +0100
|
||||
|
@ -131,6 +131,7 @@ PATCHLIST := \
|
||||
winex11-Window_Groups.ok \
|
||||
winex11-XEMBED.ok \
|
||||
winex11-wglShareLists.ok \
|
||||
wininet-FtpFindFirstFile.ok \
|
||||
wininet-encoding.ok \
|
||||
wpcap-Dynamic_Linking.ok \
|
||||
ws2_32-Connect_Time.ok \
|
||||
@ -2454,6 +2455,21 @@ winex11-wglShareLists.ok:
|
||||
echo '+ { "Michael Müller", "winex11.drv: Only warn about used contexts in wglShareLists.", 1 },'; \
|
||||
) > winex11-wglShareLists.ok
|
||||
|
||||
# Patchset wininet-FtpFindFirstFile
|
||||
# |
|
||||
# | This patchset fixes the following Wine bugs:
|
||||
# | * [#16526] Fix handling of subdirectory in FtpFindFirstFile
|
||||
# |
|
||||
# | Modified files:
|
||||
# | * dlls/wininet/ftp.c, dlls/wininet/tests/ftp.c
|
||||
# |
|
||||
.INTERMEDIATE: wininet-FtpFindFirstFile.ok
|
||||
wininet-FtpFindFirstFile.ok:
|
||||
$(call APPLY_FILE,wininet-FtpFindFirstFile/0001-wininet-Fix-handling-of-subdirectory-in-FtpFindFirst.patch)
|
||||
@( \
|
||||
echo '+ { "Sebastian Lackner", "wininet: Fix handling of subdirectory in FtpFindFirstFile.", 1 },'; \
|
||||
) > wininet-FtpFindFirstFile.ok
|
||||
|
||||
# Patchset wininet-encoding
|
||||
# |
|
||||
# | This patchset fixes the following Wine bugs:
|
||||
|
@ -0,0 +1,110 @@
|
||||
From c86309d8f87a4ceb1f22fdb5ca678dc3f720d9ce Mon Sep 17 00:00:00 2001
|
||||
From: Sebastian Lackner <sebastian@fds-team.de>
|
||||
Date: Tue, 16 Dec 2014 01:37:12 +0100
|
||||
Subject: wininet: Fix handling of subdirectory in FtpFindFirstFile.
|
||||
|
||||
Based on a patch by Mike Ruprecht.
|
||||
---
|
||||
dlls/wininet/ftp.c | 18 +++++++++++++++++-
|
||||
dlls/wininet/tests/ftp.c | 23 +++++++++++++++++++++--
|
||||
2 files changed, 38 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/dlls/wininet/ftp.c b/dlls/wininet/ftp.c
|
||||
index f45e495..dbe9dd8 100644
|
||||
--- a/dlls/wininet/ftp.c
|
||||
+++ b/dlls/wininet/ftp.c
|
||||
@@ -831,6 +831,7 @@ static HINTERNET FTP_FtpFindFirstFileW(ftp_session_t *lpwfs,
|
||||
INT nResCode;
|
||||
appinfo_t *hIC = NULL;
|
||||
HINTERNET hFindNext = NULL;
|
||||
+ LPWSTR lpszSearchPath = NULL;
|
||||
|
||||
TRACE("\n");
|
||||
|
||||
@@ -846,7 +847,20 @@ static HINTERNET FTP_FtpFindFirstFileW(ftp_session_t *lpwfs,
|
||||
if (!FTP_SendPortOrPasv(lpwfs))
|
||||
goto lend;
|
||||
|
||||
- if (!FTP_SendCommand(lpwfs->sndSocket, FTP_CMD_LIST, NULL,
|
||||
+ /* split search path into file and path */
|
||||
+ if (lpszSearchFile)
|
||||
+ {
|
||||
+ LPCWSTR name = lpszSearchFile, p;
|
||||
+ if ((p = strrchrW( name, '\\' ))) name = p + 1;
|
||||
+ if ((p = strrchrW( name, '/' ))) name = p + 1;
|
||||
+ if (name != lpszSearchFile)
|
||||
+ {
|
||||
+ lpszSearchPath = heap_strndupW(lpszSearchFile, name - lpszSearchFile);
|
||||
+ lpszSearchFile = name;
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ if (!FTP_SendCommand(lpwfs->sndSocket, FTP_CMD_LIST, lpszSearchPath,
|
||||
lpwfs->hdr.lpfnStatusCB, &lpwfs->hdr, lpwfs->hdr.dwContext))
|
||||
goto lend;
|
||||
|
||||
@@ -872,6 +886,8 @@ static HINTERNET FTP_FtpFindFirstFileW(ftp_session_t *lpwfs,
|
||||
}
|
||||
|
||||
lend:
|
||||
+ HeapFree(GetProcessHeap(), 0, lpszSearchPath);
|
||||
+
|
||||
if (lpwfs->lstnSocket != -1)
|
||||
{
|
||||
closesocket(lpwfs->lstnSocket);
|
||||
diff --git a/dlls/wininet/tests/ftp.c b/dlls/wininet/tests/ftp.c
|
||||
index b88b136..567545d 100644
|
||||
--- a/dlls/wininet/tests/ftp.c
|
||||
+++ b/dlls/wininet/tests/ftp.c
|
||||
@@ -751,6 +751,7 @@ static void test_find_first_file(HINTERNET hFtp, HINTERNET hConnect)
|
||||
HINTERNET hSearch2;
|
||||
HINTERNET hOpenFile;
|
||||
DWORD error;
|
||||
+ BOOL success;
|
||||
|
||||
/* NULL as the search file ought to return the first file in the directory */
|
||||
SetLastError(0xdeadbeef);
|
||||
@@ -770,13 +771,13 @@ static void test_find_first_file(HINTERNET hFtp, HINTERNET hConnect)
|
||||
/* Try a valid filename in a subdirectory search */
|
||||
SetLastError(0xdeadbeef);
|
||||
hSearch = FtpFindFirstFileA(hFtp, "pub/wine", &findData, 0, 0);
|
||||
- todo_wine ok ( hSearch != NULL, "Expected FtpFindFirstFileA to pass\n" );
|
||||
+ ok( hSearch != NULL, "Expected FtpFindFirstFileA to pass\n" );
|
||||
InternetCloseHandle(hSearch);
|
||||
|
||||
/* Try a valid filename in a subdirectory wildcard search */
|
||||
SetLastError(0xdeadbeef);
|
||||
hSearch = FtpFindFirstFileA(hFtp, "pub/w*", &findData, 0, 0);
|
||||
- todo_wine ok ( hSearch != NULL, "Expected FtpFindFirstFileA to pass\n" );
|
||||
+ ok( hSearch != NULL, "Expected FtpFindFirstFileA to pass\n" );
|
||||
InternetCloseHandle(hSearch);
|
||||
|
||||
/* Try an invalid wildcard search */
|
||||
@@ -785,6 +786,24 @@ static void test_find_first_file(HINTERNET hFtp, HINTERNET hConnect)
|
||||
ok ( hSearch == NULL, "Expected FtpFindFirstFileA to fail\n" );
|
||||
InternetCloseHandle(hSearch); /* Just in case */
|
||||
|
||||
+ /* change current directory, and repeat those tests - this shows
|
||||
+ * that the search string is interpreted as relative directory. */
|
||||
+ success = FtpSetCurrentDirectoryA(hFtp, "pub");
|
||||
+ ok( success, "Expected FtpSetCurrentDirectory to succeed\n" );
|
||||
+
|
||||
+ SetLastError(0xdeadbeef);
|
||||
+ hSearch = FtpFindFirstFileA(hFtp, "wine", &findData, 0, 0);
|
||||
+ ok( hSearch != NULL, "Expected FtpFindFirstFileA to pass\n" );
|
||||
+ InternetCloseHandle(hSearch);
|
||||
+
|
||||
+ SetLastError(0xdeadbeef);
|
||||
+ hSearch = FtpFindFirstFileA(hFtp, "w*", &findData, 0, 0);
|
||||
+ ok( hSearch != NULL, "Expected FtpFindFirstFileA to pass\n" );
|
||||
+ InternetCloseHandle(hSearch);
|
||||
+
|
||||
+ success = FtpSetCurrentDirectoryA(hFtp, "..");
|
||||
+ ok( success, "Expected FtpSetCurrentDirectory to succeed\n" );
|
||||
+
|
||||
/* Try FindFirstFile between FtpOpenFile and InternetCloseHandle */
|
||||
SetLastError(0xdeadbeef);
|
||||
hOpenFile = FtpOpenFileA(hFtp, "welcome.msg", GENERIC_READ, FTP_TRANSFER_TYPE_ASCII, 0);
|
||||
--
|
||||
2.1.3
|
||||
|
1
patches/wininet-FtpFindFirstFile/definition
Normal file
1
patches/wininet-FtpFindFirstFile/definition
Normal file
@ -0,0 +1 @@
|
||||
Fixes: [16526] Fix handling of subdirectory in FtpFindFirstFile
|
Loading…
x
Reference in New Issue
Block a user