Rebase against 829170f3d6b875f7a6f065072cc3334a20ff805e

This commit is contained in:
Alistair Leslie-Hughes 2019-03-27 11:07:38 +11:00
parent 0d4d90ee80
commit a02caca06d
17 changed files with 89 additions and 326 deletions

View File

@ -1,32 +0,0 @@
From 21028049055c1f65d72baf685ad9464187aada25 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Michael=20M=C3=BCller?= <michael@fds-team.de>
Date: Wed, 31 May 2017 03:53:05 +0200
Subject: msi: Always return MSIDBSTATE_ERROR when MsiGetDatabaseState is
called from a custom action.
---
dlls/msi/database.c | 7 +------
1 file changed, 1 insertion(+), 6 deletions(-)
diff --git a/dlls/msi/database.c b/dlls/msi/database.c
index d3eb910..47a99fa 100644
--- a/dlls/msi/database.c
+++ b/dlls/msi/database.c
@@ -1890,13 +1890,8 @@ MSIDBSTATE WINAPI MsiGetDatabaseState( MSIHANDLE handle )
db = msihandle2msiinfo( handle, MSIHANDLETYPE_DATABASE );
if( !db )
{
- MSIHANDLE remote_database = msi_get_remote(handle);
- if ( !remote_database )
- return MSIDBSTATE_ERROR;
-
WARN("MsiGetDatabaseState not allowed during a custom action!\n");
-
- return MSIDBSTATE_READ;
+ return MSIDBSTATE_ERROR;
}
if (db->mode != MSIDBOPEN_READONLY )
--
2.7.4

View File

@ -1,2 +0,0 @@
Fixes: Return MSIDBSTATE_ERROR when MsiGetDatabaseState is called from a custom action
# Note: this was originally written for League of Legends; see bug 43093.

View File

@ -1,16 +1,16 @@
From 41da6df255dd09494827ad780e5821e119b4507b Mon Sep 17 00:00:00 2001
From 91682accdd60ed9d3aac6492acbf6deff814e820 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Michael=20M=C3=BCller?= <michael@fds-team.de>
Date: Thu, 9 Mar 2017 16:27:23 +0100
Subject: [PATCH] ntdll: Fill process kernel and user time.
---
dlls/ntdll/nt.c | 6 +++-
dlls/ntdll/ntdll_misc.h | 3 ++
dlls/ntdll/thread.c | 84 ++++++++++++++++++++++++++++---------------------
3 files changed, 56 insertions(+), 37 deletions(-)
dlls/ntdll/nt.c | 6 ++-
dlls/ntdll/ntdll_misc.h | 5 +++
dlls/ntdll/thread.c | 84 +++++++++++++++++++++++------------------
3 files changed, 58 insertions(+), 37 deletions(-)
diff --git a/dlls/ntdll/nt.c b/dlls/ntdll/nt.c
index 0db0d16..c370550 100644
index d2a4b1d35af..258798fcdee 100644
--- a/dlls/ntdll/nt.c
+++ b/dlls/ntdll/nt.c
@@ -2451,6 +2451,7 @@ NTSTATUS WINAPI NtQuerySystemInformation(
@ -41,19 +41,24 @@ index 0db0d16..c370550 100644
len += procstructlen;
}
diff --git a/dlls/ntdll/ntdll_misc.h b/dlls/ntdll/ntdll_misc.h
index fdc54c6..69005d0 100644
index 4835885d6c5..40bf66f1d24 100644
--- a/dlls/ntdll/ntdll_misc.h
+++ b/dlls/ntdll/ntdll_misc.h
@@ -260,4 +260,7 @@ extern SYSTEM_CPU_INFORMATION cpu_info DECLSPEC_HIDDEN;
@@ -260,7 +260,12 @@ extern SYSTEM_CPU_INFORMATION cpu_info DECLSPEC_HIDDEN;
NTSTATUS WINAPI RtlHashUnicodeString(PCUNICODE_STRING,BOOLEAN,ULONG,ULONG*);
void WINAPI LdrInitializeThunk(CONTEXT*,void**,ULONG_PTR,ULONG_PTR);
+/* process / thread time */
+extern BOOL read_process_time(int unix_pid, int unix_tid, unsigned long clk_tck,
+ LARGE_INTEGER *kernel, LARGE_INTEGER *user) DECLSPEC_HIDDEN;
+
/* string functions */
int __cdecl NTDLL_tolower( int c );
int __cdecl _stricmp( LPCSTR str1, LPCSTR str2 );
+
#endif
diff --git a/dlls/ntdll/thread.c b/dlls/ntdll/thread.c
index e4336ab..4279ae7 100644
index e4336ab1237..4279ae77099 100644
--- a/dlls/ntdll/thread.c
+++ b/dlls/ntdll/thread.c
@@ -149,6 +149,53 @@ static ULONG_PTR get_image_addr(void)
@ -155,5 +160,5 @@ index e4336ab..4279ae7 100644
/* get values for current process instead */
--
1.9.1
2.20.1

View File

@ -1,4 +1,4 @@
From e72a63216155c21784be784940782e995022a319 Mon Sep 17 00:00:00 2001
From d2f9bcfc14a960a4b365406a8610f9ab96f78e9b Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Michael=20M=C3=BCller?= <michael@fds-team.de>
Date: Thu, 9 Mar 2017 22:56:45 +0100
Subject: [PATCH] ntdll: Fill process virtual memory counters in
@ -13,10 +13,10 @@ FIXME: fill_VM_COUNTERS now uses a different method ... which one is better?
4 files changed, 41 insertions(+), 1 deletion(-)
diff --git a/dlls/ntdll/nt.c b/dlls/ntdll/nt.c
index 86695f7d23e..7736adca5b1 100644
index 3c2838f365e..5092b97d252 100644
--- a/dlls/ntdll/nt.c
+++ b/dlls/ntdll/nt.c
@@ -2511,8 +2511,11 @@ NTSTATUS WINAPI NtQuerySystemInformation(
@@ -2510,8 +2510,11 @@ NTSTATUS WINAPI NtQuerySystemInformation(
/* spi->ti will be set later on */
if (reply->unix_pid != -1)
@ -29,17 +29,19 @@ index 86695f7d23e..7736adca5b1 100644
}
len += procstructlen;
diff --git a/dlls/ntdll/ntdll_misc.h b/dlls/ntdll/ntdll_misc.h
index 4a411292cdc..467d66373dd 100644
index 40bf66f1d24..5ec14a399cc 100644
--- a/dlls/ntdll/ntdll_misc.h
+++ b/dlls/ntdll/ntdll_misc.h
@@ -261,4 +261,5 @@ NTSTATUS WINAPI RtlHashUnicodeString(PCUNICODE_STRING,BOOLEAN,ULONG,ULONG*);
@@ -263,6 +263,7 @@ void WINAPI LdrInitializeThunk(CONTEXT*,void**,ULONG_PTR,ULONG_PTR);
/* process / thread time */
extern BOOL read_process_time(int unix_pid, int unix_tid, unsigned long clk_tck,
LARGE_INTEGER *kernel, LARGE_INTEGER *user) DECLSPEC_HIDDEN;
+extern BOOL read_process_memory_stats(int unix_pid, VM_COUNTERS *pvmi) DECLSPEC_HIDDEN;
#endif
/* string functions */
int __cdecl NTDLL_tolower( int c );
diff --git a/dlls/ntdll/process.c b/dlls/ntdll/process.c
index bb4a1719c3c..709daf19faf 100644
index 34051c2ef93..94e8df8d8d1 100644
--- a/dlls/ntdll/process.c
+++ b/dlls/ntdll/process.c
@@ -203,7 +203,7 @@ static void fill_VM_COUNTERS(VM_COUNTERS* pvmi)
@ -52,10 +54,10 @@ index bb4a1719c3c..709daf19faf 100644
#endif
diff --git a/dlls/ntdll/thread.c b/dlls/ntdll/thread.c
index fea1244620c..e56c02faec6 100644
index 4279ae77099..0f90291e222 100644
--- a/dlls/ntdll/thread.c
+++ b/dlls/ntdll/thread.c
@@ -197,6 +197,42 @@ BOOL read_process_time(int unix_pid, int unix_tid, unsigned long clk_tck,
@@ -195,6 +195,42 @@ BOOL read_process_time(int unix_pid, int unix_tid, unsigned long clk_tck,
return FALSE;
}

View File

@ -1,4 +1,4 @@
From 62ab92c3a4b0ba57df6a84ac0119a0c134760608 Mon Sep 17 00:00:00 2001
From 2f00e0d3531ac02c23a4339ea582ea1e71e40499 Mon Sep 17 00:00:00 2001
From: Zebediah Figura <z.figura12@gmail.com>
Date: Tue, 29 Jan 2019 21:54:39 -0600
Subject: [PATCH] ntoskrnl.exe/tests: Add tests for ERESOURCE functions.
@ -10,11 +10,11 @@ Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
2 files changed, 312 insertions(+), 1 deletion(-)
diff --git a/dlls/ntoskrnl.exe/tests/driver.c b/dlls/ntoskrnl.exe/tests/driver.c
index 2fbe493fa35..b2ac5fc8a0e 100644
index 88237461d5b..312cdbf38cb 100644
--- a/dlls/ntoskrnl.exe/tests/driver.c
+++ b/dlls/ntoskrnl.exe/tests/driver.c
@@ -308,7 +308,14 @@ static NTSTATUS wait_multiple(ULONG count, void *objs[], WAIT_TYPE wait_type, UL
return KeWaitForMultipleObjects(count, objs, wait_type, Executive, KernelMode, FALSE, &integer, NULL);
@@ -316,7 +316,14 @@ static NTSTATUS wait_single_handle(HANDLE handle, ULONGLONG timeout)
return ZwWaitForSingleObject(handle, FALSE, &integer);
}
-static void run_thread(PKSTART_ROUTINE proc, void *arg)
@ -29,7 +29,7 @@ index 2fbe493fa35..b2ac5fc8a0e 100644
{
OBJECT_ATTRIBUTES attr = {0};
HANDLE thread;
@@ -319,12 +326,25 @@ static void run_thread(PKSTART_ROUTINE proc, void *arg)
@@ -327,12 +334,25 @@ static void run_thread(PKSTART_ROUTINE proc, void *arg)
ret = PsCreateSystemThread(&thread, THREAD_ALL_ACCESS, &attr, NULL, NULL, proc, arg);
ok(!ret, "got %#x\n", ret);
@ -55,7 +55,7 @@ index 2fbe493fa35..b2ac5fc8a0e 100644
static KMUTEX test_mutex;
static void WINAPI mutex_thread(void *arg)
@@ -763,6 +783,294 @@ static void test_ob_reference(const WCHAR *test_path)
@@ -814,6 +834,294 @@ static void test_ob_reference(const WCHAR *test_path)
ok(!status, "ZwClose failed: %#x\n", status);
}
@ -350,7 +350,7 @@ index 2fbe493fa35..b2ac5fc8a0e 100644
static NTSTATUS main_test(DEVICE_OBJECT *device, IRP *irp, IO_STACK_LOCATION *stack, ULONG_PTR *info)
{
ULONG length = stack->Parameters.DeviceIoControl.OutputBufferLength;
@@ -805,6 +1113,7 @@ static NTSTATUS main_test(DEVICE_OBJECT *device, IRP *irp, IO_STACK_LOCATION *st
@@ -856,6 +1164,7 @@ static NTSTATUS main_test(DEVICE_OBJECT *device, IRP *irp, IO_STACK_LOCATION *st
test_stack_callout();
test_lookaside_list();
test_ob_reference(test_input->path);
@ -359,10 +359,10 @@ index 2fbe493fa35..b2ac5fc8a0e 100644
/* print process report */
if (winetest_debug)
diff --git a/include/ddk/wdm.h b/include/ddk/wdm.h
index e5a2906fb49..0677be693c1 100644
index 3600bcd80af..d7930be68a9 100644
--- a/include/ddk/wdm.h
+++ b/include/ddk/wdm.h
@@ -1578,6 +1578,7 @@ void WINAPI KeAcquireSpinLockAtDpcLevel(KSPIN_LOCK*);
@@ -1579,6 +1579,7 @@ void WINAPI KeAcquireSpinLockAtDpcLevel(KSPIN_LOCK*);
BOOLEAN WINAPI KeCancelTimer(KTIMER*);
void WINAPI KeClearEvent(PRKEVENT);
NTSTATUS WINAPI KeDelayExecutionThread(KPROCESSOR_MODE,BOOLEAN,LARGE_INTEGER*);
@ -370,7 +370,7 @@ index e5a2906fb49..0677be693c1 100644
PKTHREAD WINAPI KeGetCurrentThread(void);
void WINAPI KeInitializeEvent(PRKEVENT,EVENT_TYPE,BOOLEAN);
void WINAPI KeInitializeMutex(PRKMUTEX,ULONG);
@@ -1585,6 +1586,7 @@ void WINAPI KeInitializeSemaphore(PRKSEMAPHORE,LONG,LONG);
@@ -1586,6 +1587,7 @@ void WINAPI KeInitializeSemaphore(PRKSEMAPHORE,LONG,LONG);
void WINAPI KeInitializeSpinLock(KSPIN_LOCK*);
void WINAPI KeInitializeTimerEx(PKTIMER,TIMER_TYPE);
void WINAPI KeInitializeTimer(KTIMER*);

View File

@ -52,7 +52,7 @@ usage()
# Get the upstream commit sha
upstream_commit()
{
echo "c7f323107b3b956d206d8d0ee28851d60f19841c"
echo "829170f3d6b875f7a6f065072cc3334a20ff805e"
}
# Show version information
@ -180,7 +180,6 @@ patch_enable_all ()
enable_mountmgr_DosDevices="$1"
enable_mscoree_CorValidateImage="$1"
enable_mshtml_HTMLLocation_put_hash="$1"
enable_msi_MsiGetDatabaseState="$1"
enable_msi_msi_vcl_get_cost="$1"
enable_msvcrt_Math_Precision="$1"
enable_ntdll_APC_Performance="$1"
@ -255,7 +254,6 @@ patch_enable_all ()
enable_qwave_QOSCreateHandle="$1"
enable_riched20_Class_Tests="$1"
enable_riched20_IText_Interface="$1"
enable_server_Desktop_Refcount="$1"
enable_server_FileEndOfFileInformation="$1"
enable_server_File_Permissions="$1"
enable_server_Inherited_ACLs="$1"
@ -295,7 +293,6 @@ patch_enable_all ()
enable_stdole32_tlb_SLTG_Typelib="$1"
enable_taskmgr_Memory_Usage="$1"
enable_uianimation_stubs="$1"
enable_urlmon_ftp_escape="$1"
enable_user32_DM_SETDEFID="$1"
enable_user32_Dialog_Paint_Event="$1"
enable_user32_DrawMenuItem="$1"
@ -688,9 +685,6 @@ patch_enable ()
mshtml-HTMLLocation_put_hash)
enable_mshtml_HTMLLocation_put_hash="$2"
;;
msi-MsiGetDatabaseState)
enable_msi_MsiGetDatabaseState="$2"
;;
msi-msi_vcl_get_cost)
enable_msi_msi_vcl_get_cost="$2"
;;
@ -913,9 +907,6 @@ patch_enable ()
riched20-IText_Interface)
enable_riched20_IText_Interface="$2"
;;
server-Desktop_Refcount)
enable_server_Desktop_Refcount="$2"
;;
server-FileEndOfFileInformation)
enable_server_FileEndOfFileInformation="$2"
;;
@ -1033,9 +1024,6 @@ patch_enable ()
uianimation-stubs)
enable_uianimation_stubs="$2"
;;
urlmon-ftp_escape)
enable_urlmon_ftp_escape="$2"
;;
user32-DM_SETDEFID)
enable_user32_DM_SETDEFID="$2"
;;
@ -1697,20 +1685,6 @@ if test "$enable_xaudio2_7_CreateFX_FXEcho" -eq 1; then
enable_xaudio2_revert=1
fi
if test "$enable_ws2_32_WSACleanup" -eq 1; then
if test "$enable_server_Desktop_Refcount" -gt 1; then
abort "Patchset server-Desktop_Refcount disabled, but ws2_32-WSACleanup depends on that."
fi
enable_server_Desktop_Refcount=1
fi
if test "$enable_ws2_32_TransmitFile" -eq 1; then
if test "$enable_server_Desktop_Refcount" -gt 1; then
abort "Patchset server-Desktop_Refcount disabled, but ws2_32-TransmitFile depends on that."
fi
enable_server_Desktop_Refcount=1
fi
if test "$enable_wintrust_WTHelperGetProvCertFromChain" -eq 1; then
if test "$enable_wintrust_WinVerifyTrust" -gt 1; then
abort "Patchset wintrust-WinVerifyTrust disabled, but wintrust-WTHelperGetProvCertFromChain depends on that."
@ -4014,7 +3988,7 @@ fi
# | * [#32490] Graphical issues in Inquisitor
# |
# | Modified files:
# | * dlls/kernel32/tests/locale.c, libs/wine/collation.c
# | * dlls/kernel32/tests/locale.c, libs/port/collation.c
# |
if test "$enable_libs_Unicode_Collation" -eq 1; then
patch_apply libs-Unicode_Collation/0001-libs-Fix-most-problems-with-CompareString.patch
@ -4100,18 +4074,6 @@ if test "$enable_mshtml_HTMLLocation_put_hash" -eq 1; then
) >> "$patchlist"
fi
# Patchset msi-MsiGetDatabaseState
# |
# | Modified files:
# | * dlls/msi/database.c
# |
if test "$enable_msi_MsiGetDatabaseState" -eq 1; then
patch_apply msi-MsiGetDatabaseState/0001-msi-Always-return-MSIDBSTATE_ERROR-when-MsiGetDataba.patch
(
printf '%s\n' '+ { "Michael Müller", "msi: Always return MSIDBSTATE_ERROR when MsiGetDatabaseState is called from a custom action.", 1 },';
) >> "$patchlist"
fi
# Patchset msi-msi_vcl_get_cost
# |
# | Modified files:
@ -5362,30 +5324,6 @@ if test "$enable_riched20_IText_Interface" -eq 1; then
) >> "$patchlist"
fi
# Patchset server-Desktop_Refcount
# |
# | Modified files:
# | * dlls/user32/tests/winstation.c, dlls/user32/winstation.c, include/winuser.h, programs/explorer/desktop.c,
# | server/async.c, server/atom.c, server/change.c, server/clipboard.c, server/completion.c, server/console.c,
# | server/debugger.c, server/device.c, server/directory.c, server/event.c, server/fd.c, server/file.c, server/handle.c,
# | server/handle.h, server/hook.c, server/mailslot.c, server/mapping.c, server/mutex.c, server/named_pipe.c,
# | server/object.c, server/object.h, server/process.c, server/queue.c, server/registry.c, server/request.c,
# | server/semaphore.c, server/serial.c, server/signal.c, server/snapshot.c, server/sock.c, server/symlink.c,
# | server/thread.c, server/timer.c, server/token.c, server/winstation.c
# |
if test "$enable_server_Desktop_Refcount" -eq 1; then
patch_apply server-Desktop_Refcount/0001-server-Introduce-a-new-alloc_handle-object-callback..patch
patch_apply server-Desktop_Refcount/0002-server-Track-desktop-handle-count-more-correctly.patch
patch_apply server-Desktop_Refcount/0003-user32-Implement-CWF_CREATE_ONLY-flag-for-CreateWind.patch
patch_apply server-Desktop_Refcount/0004-server-Assign-random-name-when-no-name-was-passed-to.patch
(
printf '%s\n' '+ { "Sebastian Lackner", "server: Introduce a new alloc_handle object callback.", 2 },';
printf '%s\n' '+ { "Sebastian Lackner", "server: Track desktop handle count more correctly.", 1 },';
printf '%s\n' '+ { "Sebastian Lackner", "user32: Implement CWF_CREATE_ONLY flag for CreateWindowStation.", 1 },';
printf '%s\n' '+ { "Sebastian Lackner", "server: Assign random name when no name was passed to create_winstation.", 1 },';
) >> "$patchlist"
fi
# Patchset server-FileEndOfFileInformation
# |
# | Modified files:
@ -6102,23 +6040,6 @@ if test "$enable_uianimation_stubs" -eq 1; then
) >> "$patchlist"
fi
# Patchset urlmon-ftp_escape
# |
# | This patchset fixes the following Wine bugs:
# | * [#26445] urlmon: Use unescaped Urls for FTP actions
# |
# | Modified files:
# | * dlls/urlmon/ftp.c, dlls/urlmon/tests/Makefile.in, dlls/urlmon/tests/url.c
# |
if test "$enable_urlmon_ftp_escape" -eq 1; then
patch_apply urlmon-ftp_escape/0001-urlmon-Use-unescaped-Urls-for-FTP-actions.patch
patch_apply urlmon-ftp_escape/0002-urlmon-tests-Add-FTP-encoded-url-test.patch
(
printf '%s\n' '+ { "André Hentschel", "urlmon: Use unescaped Urls for FTP actions.", 1 },';
printf '%s\n' '+ { "Alistair Leslie-Hughes", "urlmon/tests: Add FTP encoded url test.", 1 },';
) >> "$patchlist"
fi
# Patchset user32-DM_SETDEFID
# |
# | This patchset fixes the following Wine bugs:
@ -7448,9 +7369,6 @@ fi
# Patchset ws2_32-TransmitFile
# |
# | This patchset has the following (direct or indirect) dependencies:
# | * server-Desktop_Refcount
# |
# | Modified files:
# | * dlls/ws2_32/socket.c, dlls/ws2_32/tests/sock.c, include/winsock.h, server/protocol.def, server/sock.c
# |
@ -7465,9 +7383,6 @@ fi
# Patchset ws2_32-WSACleanup
# |
# | This patchset has the following (direct or indirect) dependencies:
# | * server-Desktop_Refcount
# |
# | This patchset fixes the following Wine bugs:
# | * [#18670] Properly close sockets when WSACleanup is called
# |

View File

@ -1,2 +1,3 @@
Fixes: Fix possible leak of explorer.exe processes and implement proper desktop refcounting
Fixes: Assign random name when trying to create Window Station without name
Disabled: True

View File

@ -1,18 +1,18 @@
From 7947b082f3d34c30f2c69e236db6723985faf35f Mon Sep 17 00:00:00 2001
From bd0f7b022c161bf1c43bb9457925c0e1b45d0468 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Michael=20M=C3=BCller?= <michael@fds-team.de>
Date: Sat, 27 May 2017 15:52:32 +0200
Subject: server: Fix crash when a device driver segfaults during an open file
request.
Subject: [PATCH] server: Fix crash when a device driver segfaults during an
open file request.
---
server/device.c | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/server/device.c b/server/device.c
index 42f3e797ab9..a5928f520a9 100644
index 5880ea620b9..9e250a8a9d3 100644
--- a/server/device.c
+++ b/server/device.c
@@ -623,7 +623,11 @@ static void delete_device( struct device *device )
@@ -667,7 +667,11 @@ static void delete_device( struct device *device )
if (!device->manager) return; /* already deleted */
LIST_FOR_EACH_ENTRY_SAFE( file, next, &device->files, struct device_file, entry )
@ -24,7 +24,7 @@ index 42f3e797ab9..a5928f520a9 100644
unlink_named_object( &device->obj );
list_remove( &device->entry );
@@ -651,7 +655,9 @@ static void device_manager_destroy( struct object *obj )
@@ -705,7 +709,9 @@ static void device_manager_destroy( struct object *obj )
while ((ptr = list_head( &manager->devices )))
{
struct device *device = LIST_ENTRY( ptr, struct device, entry );
@ -32,8 +32,8 @@ index 42f3e797ab9..a5928f520a9 100644
delete_device( device );
+ release_object( &device->obj );
}
}
while ((ptr = list_head( &manager->requests )))
--
2.12.2
2.20.1

View File

@ -1,44 +0,0 @@
From 8900fa2361ec0fc9b22fd071a1c5d8cd5b7ffdbf Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Andr=C3=A9=20Hentschel?= <nerv@dawncrow.de>
Date: Tue, 29 Jan 2019 08:37:52 +1100
Subject: [PATCH] urlmon: Use unescaped Urls for FTP actions
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=26445
---
dlls/urlmon/ftp.c | 12 +++++++++---
1 file changed, 9 insertions(+), 3 deletions(-)
diff --git a/dlls/urlmon/ftp.c b/dlls/urlmon/ftp.c
index aef4a6c..b438d7c 100644
--- a/dlls/urlmon/ftp.c
+++ b/dlls/urlmon/ftp.c
@@ -66,17 +66,23 @@ static HRESULT FtpProtocol_open_request(Protocol *prot, IUri *uri, DWORD request
HINTERNET internet_session, IInternetBindInfo *bind_info)
{
FtpProtocol *This = impl_from_Protocol(prot);
- BSTR url;
+ DWORD path_size = INTERNET_MAX_URL_LENGTH;
+ BSTR url, path;
HRESULT hres;
hres = IUri_GetAbsoluteUri(uri, &url);
if(FAILED(hres))
return hres;
+ path = heap_alloc(path_size);
+ hres = UrlUnescapeW((LPWSTR)url, path, &path_size, 0);
+ if(FAILED(hres))
+ return hres;
+ SysFreeString(url);
- This->base.request = InternetOpenUrlW(internet_session, url, NULL, 0,
+ This->base.request = InternetOpenUrlW(internet_session, path, NULL, 0,
request_flags|INTERNET_FLAG_EXISTING_CONNECT|INTERNET_FLAG_PASSIVE,
(DWORD_PTR)&This->base);
- SysFreeString(url);
+ SysFreeString(path);
if (!This->base.request && GetLastError() != ERROR_IO_PENDING) {
WARN("InternetOpenUrl failed: %d\n", GetLastError());
return INET_E_RESOURCE_NOT_FOUND;
--
1.9.1

View File

@ -1,81 +0,0 @@
From 70241b0a4b7eadff9b2baeced34186b59e3dc53a Mon Sep 17 00:00:00 2001
From: Alistair Leslie-Hughes <leslie_alistair@hotmail.com>
Date: Tue, 29 Jan 2019 09:04:27 +1100
Subject: [PATCH] urlmon/tests: Add FTP encoded url test
Signed-off-by: Alistair Leslie-Hughes <leslie_alistair@hotmail.com>
---
dlls/urlmon/tests/Makefile.in | 2 +-
dlls/urlmon/tests/url.c | 17 ++++++++++++++++-
2 files changed, 17 insertions(+), 2 deletions(-)
diff --git a/dlls/urlmon/tests/Makefile.in b/dlls/urlmon/tests/Makefile.in
index 2eef129..48afdc9 100644
--- a/dlls/urlmon/tests/Makefile.in
+++ b/dlls/urlmon/tests/Makefile.in
@@ -1,5 +1,5 @@
TESTDLL = urlmon.dll
-IMPORTS = urlmon wininet ole32 oleaut32 user32 advapi32
+IMPORTS = urlmon wininet ole32 oleaut32 user32 advapi32 shlwapi
C_SRCS = \
generated.c \
diff --git a/dlls/urlmon/tests/url.c b/dlls/urlmon/tests/url.c
index ada78c9..09e7d86 100644
--- a/dlls/urlmon/tests/url.c
+++ b/dlls/urlmon/tests/url.c
@@ -32,6 +32,7 @@
#include "urlmon.h"
#include "wininet.h"
#include "mshtml.h"
+#include "shlwapi.h"
#include "wine/test.h"
@@ -191,6 +192,7 @@ static BOOL async_switch = FALSE;
static BOOL strict_bsc_qi;
static DWORD bindtest_flags;
static const char *test_file;
+static const char *ftp_url;
static WCHAR file_url[INTERNET_MAX_URL_LENGTH], current_url[INTERNET_MAX_URL_LENGTH];
@@ -2905,7 +2907,10 @@ static void init_bind_test(int protocol, DWORD flags, DWORD t)
url_a = (flags & BINDTEST_INVALID_CN) ? "https://4.15.184.77/favicon.ico" : "https://test.winehq.org/tests/hello.html";
break;
case FTP_TEST:
- url_a = "ftp://ftp.winehq.org/welcome.msg";
+ if(!ftp_url)
+ url_a = "ftp://ftp.winehq.org/welcome.msg";
+ else
+ url_a = ftp_url;
break;
default:
url_a = "winetest:test";
@@ -2969,6 +2974,13 @@ static void test_BindToStorage(int protocol, DWORD flags, DWORD t)
if(FAILED(hres))
return;
+ if(protocol == FTP_TEST)
+ {
+ /* FTP url dont have any escape characters, so convert the url to what is expected */
+ DWORD size = 0;
+ UrlUnescapeW(current_url, NULL, &size, URL_UNESCAPE_INPLACE);
+ }
+
hres = IMoniker_QueryInterface(mon, &IID_IBinding, (void**)&bind);
ok(hres == E_NOINTERFACE, "IMoniker should not have IBinding interface\n");
if(SUCCEEDED(hres))
@@ -4144,6 +4156,9 @@ START_TEST(url)
trace("ftp test...\n");
test_BindToStorage(FTP_TEST, 0, TYMED_ISTREAM);
+ ftp_url = "ftp://ftp.winehq.org/welcome%2emsg";
+ test_BindToStorage(FTP_TEST, 0, TYMED_ISTREAM);
+
trace("test failures...\n");
test_BindToStorage_fail();
--
1.9.1

View File

@ -1 +0,0 @@
Fixes: [26445] urlmon: Use unescaped Urls for FTP actions

View File

@ -1,7 +1,7 @@
From ec2efdf0470dac6a513b0e4a01cc48745b8fa04f Mon Sep 17 00:00:00 2001
From 46332c4aabadfe412ff38a801d3dbf828a555f6e Mon Sep 17 00:00:00 2001
From: Paul Gofman <gofmanp@gmail.com>
Date: Mon, 25 Feb 2019 20:28:35 +0300
Subject: [PATCH 5/5] wined3d: Support indexed vertex blending.
Subject: [PATCH] wined3d: Support indexed vertex blending.
Signed-off-by: Paul Gofman <gofmanp@gmail.com>
---
@ -13,7 +13,7 @@ Signed-off-by: Paul Gofman <gofmanp@gmail.com>
5 files changed, 169 insertions(+), 30 deletions(-)
diff --git a/dlls/d3d9/tests/visual.c b/dlls/d3d9/tests/visual.c
index bd9f349746..beed647b6c 100644
index bd9f349746d..beed647b6c6 100644
--- a/dlls/d3d9/tests/visual.c
+++ b/dlls/d3d9/tests/visual.c
@@ -21607,7 +21607,7 @@ static void do_test_indexed_vertex_blending(IDirect3DDevice9 *device, const char
@ -44,7 +44,7 @@ index bd9f349746..beed647b6c 100644
hr = IDirect3DDevice9_SetSoftwareVertexProcessing(device, FALSE);
diff --git a/dlls/wined3d/glsl_shader.c b/dlls/wined3d/glsl_shader.c
index df4dfa0659..8791a714cc 100644
index 389045bdc82..1660e4d50c6 100644
--- a/dlls/wined3d/glsl_shader.c
+++ b/dlls/wined3d/glsl_shader.c
@@ -150,6 +150,9 @@ struct shader_glsl_priv
@ -317,10 +317,10 @@ index df4dfa0659..8791a714cc 100644
device->vertex_priv = vertex_priv;
device->fragment_priv = fragment_priv;
device->shader_priv = priv;
@@ -11436,6 +11543,14 @@ static void shader_glsl_free(struct wined3d_device *device)
@@ -11436,6 +11543,14 @@ static void shader_glsl_free(struct wined3d_device *device, struct wined3d_conte
string_buffer_free(&priv->shader_buffer);
priv->fragment_pipe->free_private(device);
priv->vertex_pipe->vp_free(device);
priv->fragment_pipe->free_private(device, context);
priv->vertex_pipe->vp_free(device, context);
+ if (priv->ubo_modelview != -1)
+ {
+ const struct wined3d_gl_info *gl_info = &device->adapter->gl_info;
@ -345,7 +345,7 @@ index df4dfa0659..8791a714cc 100644
caps->vertex_processing_caps = WINED3DVTXPCAPS_TEXGEN
| WINED3DVTXPCAPS_MATERIALSOURCE7
| WINED3DVTXPCAPS_VERTEXFOG
@@ -12051,7 +12170,8 @@ static void glsl_vertex_pipe_pixel_shader(struct wined3d_context *context,
@@ -12052,7 +12171,8 @@ static void glsl_vertex_pipe_pixel_shader(struct wined3d_context *context,
static void glsl_vertex_pipe_world(struct wined3d_context *context,
const struct wined3d_state *state, DWORD state_id)
{
@ -356,10 +356,10 @@ index df4dfa0659..8791a714cc 100644
static void glsl_vertex_pipe_vertexblend(struct wined3d_context *context,
diff --git a/dlls/wined3d/utils.c b/dlls/wined3d/utils.c
index fd8e944e3b..fbc44b78b9 100644
index bf03f470491..2557c79e17b 100644
--- a/dlls/wined3d/utils.c
+++ b/dlls/wined3d/utils.c
@@ -6331,6 +6331,7 @@ void wined3d_ffp_get_vs_settings(const struct wined3d_context *context,
@@ -6334,6 +6334,7 @@ void wined3d_ffp_get_vs_settings(const struct wined3d_context *context,
settings->flatshading = FALSE;
settings->swizzle_map = si->swizzle_map;
@ -368,7 +368,7 @@ index fd8e944e3b..fbc44b78b9 100644
int wined3d_ffp_vertex_program_key_compare(const void *key, const struct wine_rb_entry *entry)
diff --git a/dlls/wined3d/vertexdeclaration.c b/dlls/wined3d/vertexdeclaration.c
index cd8bb5e423..d37f3ce860 100644
index cd8bb5e4233..d37f3ce8606 100644
--- a/dlls/wined3d/vertexdeclaration.c
+++ b/dlls/wined3d/vertexdeclaration.c
@@ -119,6 +119,15 @@ static BOOL declaration_element_valid_ffp(const struct wined3d_vertex_element *e
@ -388,7 +388,7 @@ index cd8bb5e423..d37f3ce860 100644
switch(element->format)
{
diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h
index 5cbadfc2ed..7265c2d606 100644
index d5f89fb6b02..cdf9d157782 100644
--- a/dlls/wined3d/wined3d_private.h
+++ b/dlls/wined3d/wined3d_private.h
@@ -279,6 +279,7 @@ static inline enum complex_fixup get_complex_fixup(struct color_fixup_desc fixup
@ -399,7 +399,7 @@ index 5cbadfc2ed..7265c2d606 100644
#define MAX_RENDER_TARGETS 8
struct min_lookup
@@ -2852,7 +2853,8 @@ struct wined3d_ffp_vs_settings
@@ -2858,7 +2859,8 @@ struct wined3d_ffp_vs_settings
DWORD ortho_fog : 1;
DWORD flatshading : 1;
DWORD swizzle_map : 16; /* MAX_ATTRIBS, 16 */
@ -409,7 +409,7 @@ index 5cbadfc2ed..7265c2d606 100644
DWORD texgen[WINED3D_MAX_TEXTURES];
};
@@ -4748,6 +4750,13 @@ static inline void wined3d_not_from_cs(struct wined3d_cs *cs)
@@ -4754,6 +4756,13 @@ static inline void wined3d_not_from_cs(struct wined3d_cs *cs)
assert(cs->thread_id != GetCurrentThreadId());
}

View File

@ -1,7 +1,7 @@
From 8c0527ec9d3d1635b74d892aa21d45b86a1e5a18 Mon Sep 17 00:00:00 2001
From 0acb83f21a53fe47d9fa9c3ed5d2732ccce18ade Mon Sep 17 00:00:00 2001
From: Paul Gofman <gofmanp@gmail.com>
Date: Mon, 25 Feb 2019 13:17:01 +0300
Subject: [PATCH 1/5] wined3d: Use UBO for vertex shader float constants if
Subject: [PATCH] wined3d: Use UBO for vertex shader float constants if
supported.
Signed-off-by: Paul Gofman <gofmanp@gmail.com>
@ -17,7 +17,7 @@ Signed-off-by: Paul Gofman <gofmanp@gmail.com>
8 files changed, 147 insertions(+), 14 deletions(-)
diff --git a/dlls/d3d8/directx.c b/dlls/d3d8/directx.c
index f78ff3e5af..847cfd17bf 100644
index f78ff3e5af7..847cfd17bf6 100644
--- a/dlls/d3d8/directx.c
+++ b/dlls/d3d8/directx.c
@@ -420,7 +420,7 @@ BOOL d3d8_init(struct d3d8 *d3d8)
@ -30,7 +30,7 @@ index f78ff3e5af..847cfd17bf 100644
d3d8->IDirect3D8_iface.lpVtbl = &d3d8_vtbl;
d3d8->refcount = 1;
diff --git a/dlls/d3d9/directx.c b/dlls/d3d9/directx.c
index c507991aaa..7cdf5ddbb9 100644
index c507991aaa4..7cdf5ddbb9a 100644
--- a/dlls/d3d9/directx.c
+++ b/dlls/d3d9/directx.c
@@ -585,7 +585,7 @@ BOOL d3d9_init(struct d3d9 *d3d9, BOOL extended)
@ -43,10 +43,10 @@ index c507991aaa..7cdf5ddbb9 100644
if (!extended)
flags |= WINED3D_VIDMEM_ACCOUNTING;
diff --git a/dlls/wined3d/adapter_gl.c b/dlls/wined3d/adapter_gl.c
index 5a5a1612a5..fe85fab216 100644
index 1b8282be964..05f03170a7d 100644
--- a/dlls/wined3d/adapter_gl.c
+++ b/dlls/wined3d/adapter_gl.c
@@ -3091,6 +3091,9 @@ static void wined3d_adapter_init_limits(struct wined3d_gl_info *gl_info, struct
@@ -3084,6 +3084,9 @@ static void wined3d_adapter_init_limits(struct wined3d_gl_info *gl_info, struct
gl_info->limits.uniform_blocks[WINED3D_SHADER_TYPE_VERTEX] = min(gl_max, WINED3D_MAX_CBS);
TRACE("Max vertex uniform blocks: %u (%d).\n",
gl_info->limits.uniform_blocks[WINED3D_SHADER_TYPE_VERTEX], gl_max);
@ -57,7 +57,7 @@ index 5a5a1612a5..fe85fab216 100644
}
if (gl_info->supported[ARB_TESSELLATION_SHADER])
diff --git a/dlls/wined3d/glsl_shader.c b/dlls/wined3d/glsl_shader.c
index 84899be004..5dc5c98982 100644
index f88e2e92f09..b9042196493 100644
--- a/dlls/wined3d/glsl_shader.c
+++ b/dlls/wined3d/glsl_shader.c
@@ -138,6 +138,10 @@ struct shader_glsl_priv
@ -318,9 +318,9 @@ index 84899be004..5dc5c98982 100644
return WINED3D_OK;
fail:
@@ -11291,6 +11404,13 @@ static void shader_glsl_free(struct wined3d_device *device)
priv->fragment_pipe->free_private(device);
priv->vertex_pipe->vp_free(device);
@@ -11291,6 +11404,13 @@ static void shader_glsl_free(struct wined3d_device *device, struct wined3d_conte
priv->fragment_pipe->free_private(device, context);
priv->vertex_pipe->vp_free(device, context);
+ if (priv->ubo_vs_c != -1)
+ {
@ -333,7 +333,7 @@ index 84899be004..5dc5c98982 100644
device->shader_priv = NULL;
}
diff --git a/dlls/wined3d/shader.c b/dlls/wined3d/shader.c
index 2db4a3cbc2..e34b6548cd 100644
index 72f4f63695c..7eda21191d5 100644
--- a/dlls/wined3d/shader.c
+++ b/dlls/wined3d/shader.c
@@ -764,6 +764,8 @@ static BOOL shader_record_register_usage(struct wined3d_shader *shader, struct w
@ -346,7 +346,7 @@ index 2db4a3cbc2..e34b6548cd 100644
}
}
diff --git a/dlls/wined3d/state.c b/dlls/wined3d/state.c
index 3af60e1351..d84b42d2ea 100644
index 2e728d78619..94227209035 100644
--- a/dlls/wined3d/state.c
+++ b/dlls/wined3d/state.c
@@ -4392,6 +4392,11 @@ static void state_cb(struct wined3d_context *context, const struct wined3d_state
@ -362,7 +362,7 @@ index 3af60e1351..d84b42d2ea 100644
if (STATE_IS_GRAPHICS_CONSTANT_BUFFER(state_id))
shader_type = state_id - STATE_GRAPHICS_CONSTANT_BUFFER(0);
diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h
index 152a78cbf9..faf4be0ab1 100644
index bd71bdb7b07..99d6e242aba 100644
--- a/dlls/wined3d/wined3d_private.h
+++ b/dlls/wined3d/wined3d_private.h
@@ -1055,6 +1055,7 @@ struct wined3d_shader_reg_maps
@ -382,7 +382,7 @@ index 152a78cbf9..faf4be0ab1 100644
UINT arb_vs_float_constants;
UINT arb_vs_native_constants;
diff --git a/include/wine/wined3d.h b/include/wine/wined3d.h
index 6d977a6179..1a541bed46 100644
index 765a92dac2e..64c9473e774 100644
--- a/include/wine/wined3d.h
+++ b/include/wine/wined3d.h
@@ -1348,6 +1348,7 @@ enum wined3d_shader_type

View File

@ -1,4 +1,4 @@
From 3c9640222b7b6e5bfbb067911171761b4062143e Mon Sep 17 00:00:00 2001
From 4b387117f10718d3796709bb6851fd8c46898f25 Mon Sep 17 00:00:00 2001
From: "Erich E. Hoover" <erich.e.hoover@gmail.com>
Date: Thu, 16 Jan 2014 19:08:30 -0700
Subject: [PATCH] ws2_32: Add support for TF_REUSE_SOCKET to TransmitFile.
@ -12,10 +12,10 @@ Subject: [PATCH] ws2_32: Add support for TF_REUSE_SOCKET to TransmitFile.
5 files changed, 74 insertions(+), 10 deletions(-)
diff --git a/dlls/ws2_32/socket.c b/dlls/ws2_32/socket.c
index 07f812b2391..c1cc4c6e209 100644
index 9a720458a22..00c47151e16 100644
--- a/dlls/ws2_32/socket.c
+++ b/dlls/ws2_32/socket.c
@@ -3084,6 +3084,17 @@ static NTSTATUS WS2_transmitfile_base( int fd, struct ws2_transmitfile_async *ws
@@ -3092,6 +3092,17 @@ static NTSTATUS WS2_transmitfile_base( int fd, struct ws2_transmitfile_async *ws
if (status != STATUS_SUCCESS)
return status;
@ -33,7 +33,7 @@ index 07f812b2391..c1cc4c6e209 100644
if (wsa->flags & TF_DISCONNECT)
{
/* we can't use WS_closesocket because it modifies the last error */
@@ -3126,7 +3137,7 @@ static BOOL WINAPI WS2_TransmitFile( SOCKET s, HANDLE h, DWORD file_bytes, DWORD
@@ -3134,7 +3145,7 @@ static BOOL WINAPI WS2_TransmitFile( SOCKET s, HANDLE h, DWORD file_bytes, DWORD
LPOVERLAPPED overlapped, LPTRANSMIT_FILE_BUFFERS buffers,
DWORD flags )
{
@ -43,10 +43,10 @@ index 07f812b2391..c1cc4c6e209 100644
socklen_t uaddrlen = sizeof(uaddr);
struct ws2_transmitfile_async *wsa;
diff --git a/dlls/ws2_32/tests/sock.c b/dlls/ws2_32/tests/sock.c
index 134bb9625a6..c40e277687e 100644
index bcbc56bcb1e..ad80f1614e5 100644
--- a/dlls/ws2_32/tests/sock.c
+++ b/dlls/ws2_32/tests/sock.c
@@ -9069,7 +9069,6 @@ static void test_TransmitFile(void)
@@ -9099,7 +9099,6 @@ static void test_TransmitFile(void)
err, WSAENOTSOCK);
/* Test TransmitFile with a UDP datagram socket */
@ -67,10 +67,10 @@ index 789e1da8172..86ce4ffcf05 100644
#define FD_WINE_NONBLOCKING 0x20000000
#define FD_WINE_CONNECTED 0x40000000
diff --git a/server/protocol.def b/server/protocol.def
index 8afe8e11435..614ab91ae7d 100644
index a001556ca10..89487916d0b 100644
--- a/server/protocol.def
+++ b/server/protocol.def
@@ -1369,6 +1369,12 @@ enum server_fd_type
@@ -1378,6 +1378,12 @@ enum server_fd_type
@END
@ -84,7 +84,7 @@ index 8afe8e11435..614ab91ae7d 100644
@REQ(set_socket_event)
obj_handle_t handle; /* handle to the socket */
diff --git a/server/sock.c b/server/sock.c
index 48ef19b4fbd..d95e847fd6b 100644
index 44874fa55c4..fea7bd1f275 100644
--- a/server/sock.c
+++ b/server/sock.c
@@ -86,6 +86,7 @@
@ -106,7 +106,7 @@ index 48ef19b4fbd..d95e847fd6b 100644
@@ -155,7 +157,7 @@ static const struct object_ops sock_ops =
NULL, /* unlink_name */
no_open_file, /* open_file */
no_alloc_handle, /* alloc_handle */
no_kernel_obj_list, /* get_kernel_obj_list */
- fd_close_handle, /* close_handle */
+ sock_close_handle, /* close_handle */
sock_destroy /* destroy */
@ -194,5 +194,5 @@ index 48ef19b4fbd..d95e847fd6b 100644
DECL_HANDLER(set_socket_event)
{
--
2.19.1
2.20.1

View File

@ -1,2 +1,2 @@
# Fixes: [5048] Support for TransmitFile
Depends: server-Desktop_Refcount
#Depends: server-Desktop_Refcount

View File

@ -118,7 +118,7 @@ index 84f54f6..9ad4e87 100644
+ unsigned int index = 0;
+ obj_handle_t sock;
+
+ while ((sock = enumerate_handles(current->process, &sock_ops, &index, NULL)))
+ while ((sock = enumerate_handles(current->process, &sock_ops, &index)))
+ close_handle(current->process, sock);
+}
--

View File

@ -1,2 +1,2 @@
Fixes: [18670] Properly close sockets when WSACleanup is called
Depends: server-Desktop_Refcount
#Depends: server-Desktop_Refcount