diff --git a/patches/kernel32-SetProcessDEPPolicy/0002-kernel32-Implement-GetSystemDEPPolicy.patch b/patches/kernel32-SetProcessDEPPolicy/0002-kernel32-Implement-GetSystemDEPPolicy.patch index 1481c516..b94b54ea 100644 --- a/patches/kernel32-SetProcessDEPPolicy/0002-kernel32-Implement-GetSystemDEPPolicy.patch +++ b/patches/kernel32-SetProcessDEPPolicy/0002-kernel32-Implement-GetSystemDEPPolicy.patch @@ -1,4 +1,4 @@ -From e31513df269b2ba58f0dc11cc5494b9db1e05cd4 Mon Sep 17 00:00:00 2001 +From aedc3b18250733d5390e88ba451ee58d517eff3b Mon Sep 17 00:00:00 2001 From: "Olivier F. R. Dierick" Date: Tue, 19 Apr 2016 07:33:32 +0200 Subject: [PATCH] kernel32: Implement GetSystemDEPPolicy(). @@ -8,18 +8,18 @@ Subject: [PATCH] kernel32: Implement GetSystemDEPPolicy(). 1 file changed, 68 insertions(+), 2 deletions(-) diff --git a/dlls/kernel32/process.c b/dlls/kernel32/process.c -index cf97affd6faf..78f80c5210f0 100644 +index e8e1e61b354..639c39460d9 100644 --- a/dlls/kernel32/process.c +++ b/dlls/kernel32/process.c -@@ -51,6 +51,7 @@ - #include "winbase.h" +@@ -33,6 +33,7 @@ + #include "winnls.h" #include "wincon.h" #include "kernel_private.h" +#include "winreg.h" #include "psapi.h" #include "wine/exception.h" #include "wine/server.h" -@@ -671,8 +672,73 @@ DWORD WINAPI WTSGetActiveConsoleSessionId(void) +@@ -560,8 +561,73 @@ DWORD WINAPI WTSGetActiveConsoleSessionId(void) */ DEP_SYSTEM_POLICY_TYPE WINAPI GetSystemDEPPolicy(void) { @@ -96,5 +96,5 @@ index cf97affd6faf..78f80c5210f0 100644 /********************************************************************** -- -2.26.2 +2.28.0 diff --git a/patches/ntdll-HashLinks/0001-ntdll-Implement-HashLinks-field-in-LDR-module-data.patch b/patches/ntdll-HashLinks/0001-ntdll-Implement-HashLinks-field-in-LDR-module-data.patch index 5e51950b..09494f25 100644 --- a/patches/ntdll-HashLinks/0001-ntdll-Implement-HashLinks-field-in-LDR-module-data.patch +++ b/patches/ntdll-HashLinks/0001-ntdll-Implement-HashLinks-field-in-LDR-module-data.patch @@ -1,4 +1,4 @@ -From 0f8b2bb82ce32a1b5d384a6b1c970145de6bad57 Mon Sep 17 00:00:00 2001 +From da42137e7187fddc47862f435f3f238c687dc109 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Michael=20M=C3=BCller?= Date: Mon, 3 Apr 2017 05:30:27 +0200 Subject: [PATCH] ntdll: Implement HashLinks field in LDR module data. @@ -10,7 +10,7 @@ Subject: [PATCH] ntdll: Implement HashLinks field in LDR module data. 3 files changed, 141 insertions(+), 1 deletion(-) diff --git a/dlls/kernel32/tests/loader.c b/dlls/kernel32/tests/loader.c -index 33073820240..ab793b1e136 100644 +index ca6afcbe051..2b6f51d55ba 100644 --- a/dlls/kernel32/tests/loader.c +++ b/dlls/kernel32/tests/loader.c @@ -30,6 +30,7 @@ @@ -21,7 +21,7 @@ index 33073820240..ab793b1e136 100644 #include "wine/test.h" #include "delayloadhandler.h" -@@ -3970,6 +3971,79 @@ static void test_LoadPackagedLibrary(void) +@@ -3945,6 +3946,79 @@ static void test_LoadPackagedLibrary(void) h, GetLastError()); } @@ -101,19 +101,19 @@ index 33073820240..ab793b1e136 100644 START_TEST(loader) { int argc; -@@ -4042,6 +4116,7 @@ START_TEST(loader) +@@ -4017,6 +4091,7 @@ START_TEST(loader) test_InMemoryOrderModuleList(); test_LoadPackagedLibrary(); test_wow64_redirection(); + test_HashLinks(); - test_dll_file( "ntdll.dll", FALSE ); - test_dll_file( "kernel32.dll", TRUE ); - test_dll_file( "advapi32.dll", FALSE ); + test_dll_file( "ntdll.dll" ); + test_dll_file( "kernel32.dll" ); + test_dll_file( "advapi32.dll" ); diff --git a/dlls/ntdll/loader.c b/dlls/ntdll/loader.c -index ccaae0a5a25..37ee3b2cf23 100644 +index 55588774b29..06f4571a008 100644 --- a/dlls/ntdll/loader.c +++ b/dlls/ntdll/loader.c -@@ -123,6 +123,9 @@ struct file_id +@@ -124,6 +124,9 @@ struct file_id BYTE ObjectId[16]; }; @@ -123,7 +123,7 @@ index ccaae0a5a25..37ee3b2cf23 100644 /* internal representation of loaded modules */ typedef struct _wine_modref { -@@ -462,6 +465,52 @@ static void call_ldr_notifications( ULONG reason, LDR_DATA_TABLE_ENTRY *module ) +@@ -484,6 +487,52 @@ static void call_ldr_notifications( ULONG reason, LDR_DATA_TABLE_ENTRY *module ) } } @@ -176,7 +176,7 @@ index ccaae0a5a25..37ee3b2cf23 100644 /************************************************************************* * get_modref * -@@ -1203,7 +1252,12 @@ static WINE_MODREF *alloc_module( HMODULE hModule, const UNICODE_STRING *nt_name +@@ -1225,7 +1274,12 @@ static WINE_MODREF *alloc_module( HMODULE hModule, const UNICODE_STRING *nt_name &wm->ldr.InLoadOrderLinks); InsertTailList(&NtCurrentTeb()->Peb->LdrData->InMemoryOrderModuleList, &wm->ldr.InMemoryOrderLinks); @@ -189,7 +189,7 @@ index ccaae0a5a25..37ee3b2cf23 100644 if (!(nt->OptionalHeader.DllCharacteristics & IMAGE_DLLCHARACTERISTICS_NX_COMPAT)) { -@@ -1910,6 +1964,7 @@ static NTSTATUS build_module( LPCWSTR load_path, const UNICODE_STRING *nt_name, +@@ -1956,6 +2010,7 @@ static NTSTATUS build_module( LPCWSTR load_path, const UNICODE_STRING *nt_name, /* the module has only be inserted in the load & memory order lists */ RemoveEntryList(&wm->ldr.InLoadOrderLinks); RemoveEntryList(&wm->ldr.InMemoryOrderLinks); @@ -197,7 +197,7 @@ index ccaae0a5a25..37ee3b2cf23 100644 /* FIXME: there are several more dangling references * left. Including dlls loaded by this dll before the -@@ -3247,6 +3302,7 @@ static void free_modref( WINE_MODREF *wm ) +@@ -3330,6 +3385,7 @@ static void free_modref( WINE_MODREF *wm ) { RemoveEntryList(&wm->ldr.InLoadOrderLinks); RemoveEntryList(&wm->ldr.InMemoryOrderLinks); @@ -205,7 +205,7 @@ index ccaae0a5a25..37ee3b2cf23 100644 if (wm->ldr.InInitializationOrderLinks.Flink) RemoveEntryList(&wm->ldr.InInitializationOrderLinks); -@@ -3974,6 +4030,7 @@ static NTSTATUS process_init(void) +@@ -4091,6 +4147,7 @@ static NTSTATUS process_init(void) INITIAL_TEB stack; TEB *teb = NtCurrentTeb(); PEB *peb = teb->Peb; @@ -213,7 +213,7 @@ index ccaae0a5a25..37ee3b2cf23 100644 peb->LdrData = &ldr; peb->FastPebLock = &peb_lock; -@@ -4012,6 +4069,10 @@ static NTSTATUS process_init(void) +@@ -4130,6 +4187,10 @@ static NTSTATUS process_init(void) load_global_options(); version_init(); @@ -224,7 +224,7 @@ index ccaae0a5a25..37ee3b2cf23 100644 /* setup the load callback and create ntdll modref */ RtlInitUnicodeString( &nt_name, ntdllW ); NtQueryVirtualMemory( GetCurrentProcess(), process_init, MemoryBasicInformation, -@@ -4106,6 +4167,10 @@ static NTSTATUS process_init(void) +@@ -4223,6 +4284,10 @@ static NTSTATUS process_init(void) teb->Tib.StackBase = stack.StackBase; teb->Tib.StackLimit = stack.StackLimit; teb->DeallocationStack = stack.DeallocationStack; @@ -236,10 +236,10 @@ index ccaae0a5a25..37ee3b2cf23 100644 } diff --git a/include/winternl.h b/include/winternl.h -index b4621827454..d5f87c642be 100644 +index 62395bbce38..2511fa37c05 100644 --- a/include/winternl.h +++ b/include/winternl.h -@@ -2678,8 +2678,8 @@ typedef struct _LDR_DATA_TABLE_ENTRY +@@ -2680,8 +2680,8 @@ typedef struct _LDR_DATA_TABLE_ENTRY ULONG Flags; SHORT LoadCount; SHORT TlsIndex; diff --git a/patches/ntdll-Hide_Wine_Exports/0001-ntdll-Add-support-for-hiding-wine-version-informatio.patch b/patches/ntdll-Hide_Wine_Exports/0001-ntdll-Add-support-for-hiding-wine-version-informatio.patch index a56324d5..a7987234 100644 --- a/patches/ntdll-Hide_Wine_Exports/0001-ntdll-Add-support-for-hiding-wine-version-informatio.patch +++ b/patches/ntdll-Hide_Wine_Exports/0001-ntdll-Add-support-for-hiding-wine-version-informatio.patch @@ -1,4 +1,4 @@ -From 2fafcf0fbf764a830604ae4d69d5edf724701b8f Mon Sep 17 00:00:00 2001 +From 7bbbf2acdaa6229c58b42001fa01465e2e0cdbb5 Mon Sep 17 00:00:00 2001 From: Sebastian Lackner Date: Sat, 30 May 2015 02:23:15 +0200 Subject: [PATCH] ntdll: Add support for hiding wine version information from @@ -10,10 +10,10 @@ Subject: [PATCH] ntdll: Add support for hiding wine version information from 2 files changed, 103 insertions(+), 1 deletion(-) diff --git a/dlls/ntdll/loader.c b/dlls/ntdll/loader.c -index 54d56f4e148..3157bc21fdb 100644 +index bff0bda1bed..fc8c815fb39 100644 --- a/dlls/ntdll/loader.c +++ b/dlls/ntdll/loader.c -@@ -76,6 +76,9 @@ static const WCHAR system_path[] = +@@ -82,6 +82,9 @@ static const WCHAR system_path[] = static const WCHAR dotW[] = {'.',0}; @@ -23,7 +23,7 @@ index 54d56f4e148..3157bc21fdb 100644 static BOOL imports_fixup_done = FALSE; /* set once the imports have been fixed up, before attaching them */ static BOOL process_detaching = FALSE; /* set on process detach to avoid deadlocks with thread detach */ static int free_lib_count; /* recursion depth of LdrUnloadDll calls */ -@@ -92,6 +95,8 @@ struct dll_dir_entry +@@ -98,6 +101,8 @@ struct dll_dir_entry static struct list dll_dir_list = LIST_INIT( dll_dir_list ); /* extra dirs from LdrAddDllDirectory */ @@ -32,7 +32,7 @@ index 54d56f4e148..3157bc21fdb 100644 struct ldr_notification { struct list entry; -@@ -1704,6 +1709,96 @@ NTSTATUS WINAPI LdrUnlockLoaderLock( ULONG flags, ULONG_PTR magic ) +@@ -1809,6 +1814,96 @@ NTSTATUS WINAPI LdrUnlockLoaderLock( ULONG flags, ULONG_PTR magic ) } @@ -129,7 +129,7 @@ index 54d56f4e148..3157bc21fdb 100644 /****************************************************************** * LdrGetProcedureAddress (NTDLL.@) */ -@@ -1724,7 +1819,7 @@ NTSTATUS WINAPI LdrGetProcedureAddress(HMODULE module, const ANSI_STRING *name, +@@ -1829,7 +1924,7 @@ NTSTATUS WINAPI LdrGetProcedureAddress(HMODULE module, const ANSI_STRING *name, LPCWSTR load_path = NtCurrentTeb()->Peb->ProcessParameters->DllPath.Buffer; void *proc = name ? find_named_export( module, exports, exp_size, name->Buffer, -1, load_path ) : find_ordinal_export( module, exports, exp_size, ord - exports->Base, load_path ); @@ -138,7 +138,7 @@ index 54d56f4e148..3157bc21fdb 100644 { *address = proc; ret = STATUS_SUCCESS; -@@ -4009,6 +4104,8 @@ void __wine_process_init(void) +@@ -4261,6 +4356,8 @@ static NTSTATUS process_init(void) NtTerminateProcess( GetCurrentProcess(), status ); } @@ -148,12 +148,12 @@ index 54d56f4e148..3157bc21fdb 100644 if (NtCurrentTeb64()) { diff --git a/dlls/ntdll/ntdll_misc.h b/dlls/ntdll/ntdll_misc.h -index 63ceac42e94..18300cc4d9e 100644 +index 1f7226a3ac8..56d26bfe005 100644 --- a/dlls/ntdll/ntdll_misc.h +++ b/dlls/ntdll/ntdll_misc.h -@@ -126,6 +126,11 @@ void WINAPI LdrInitializeThunk(CONTEXT*,void**,ULONG_PTR,ULONG_PTR); - #define InterlockedCompareExchange64(dest,xchg,cmp) RtlInterlockedCompareExchange64(dest,xchg,cmp) - #endif +@@ -155,6 +155,11 @@ static inline TEB64 *NtCurrentTeb64(void) { return (TEB64 *)NtCurrentTeb()->GdiB + + NTSTATUS WINAPI RtlHashUnicodeString(PCUNICODE_STRING,BOOLEAN,ULONG,ULONG*); +/* version */ +extern const char * CDECL wine_get_version(void); diff --git a/patches/ntdll-WRITECOPY/0003-ntdll-Setup-a-temporary-signal-handler-during-proces.patch b/patches/ntdll-WRITECOPY/0003-ntdll-Setup-a-temporary-signal-handler-during-proces.patch index bc314c03..ac1cd6ab 100644 --- a/patches/ntdll-WRITECOPY/0003-ntdll-Setup-a-temporary-signal-handler-during-proces.patch +++ b/patches/ntdll-WRITECOPY/0003-ntdll-Setup-a-temporary-signal-handler-during-proces.patch @@ -1,31 +1,32 @@ -From 3ed31bd914d853f6e4b550db7ff0c68ab8918dad Mon Sep 17 00:00:00 2001 +From a65d5445eea1a5aa1108d5b214a37b37a8c82888 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Michael=20M=C3=BCller?= Date: Sat, 4 Oct 2014 02:53:22 +0200 Subject: [PATCH] ntdll: Setup a temporary signal handler during process startup to handle page faults. (v2) --- - dlls/ntdll/unix/loader.c | 1 + + dlls/ntdll/unix/loader.c | 2 ++ dlls/ntdll/unix/signal_arm.c | 6 ++++ dlls/ntdll/unix/signal_arm64.c | 7 +++++ dlls/ntdll/unix/signal_i386.c | 52 +++++++++++++++++++++++++++++++++ dlls/ntdll/unix/signal_x86_64.c | 6 ++++ dlls/ntdll/unix/unix_private.h | 1 + dlls/ntdll/unix/virtual.c | 2 +- - 7 files changed, 74 insertions(+), 1 deletion(-) + 7 files changed, 75 insertions(+), 1 deletion(-) diff --git a/dlls/ntdll/unix/loader.c b/dlls/ntdll/unix/loader.c -index e7a7c96a974..0ffbab757a3 100644 +index 6890a08428b..557d7254190 100644 --- a/dlls/ntdll/unix/loader.c +++ b/dlls/ntdll/unix/loader.c -@@ -1785,6 +1785,7 @@ void __wine_main( int argc, char *argv[], char *envp[] ) +@@ -1775,6 +1775,8 @@ void __wine_main( int argc, char *argv[], char *envp[] ) #endif virtual_init(); + signal_init_early(); - load_ntdll(); - ++ init_environment( argc, argv, envp ); + + #ifdef __APPLE__ diff --git a/dlls/ntdll/unix/signal_arm.c b/dlls/ntdll/unix/signal_arm.c index e8971d22dbd..ca291456284 100644 --- a/dlls/ntdll/unix/signal_arm.c @@ -149,10 +150,10 @@ index e11b2c70b59..1b45ca246d3 100644 /*********************************************************************** * init_thread_context diff --git a/dlls/ntdll/unix/unix_private.h b/dlls/ntdll/unix/unix_private.h -index 3d9dca3c51d..7b541dc6a31 100644 +index f99c13fe2ad..26f251b889a 100644 --- a/dlls/ntdll/unix/unix_private.h +++ b/dlls/ntdll/unix/unix_private.h -@@ -215,6 +215,7 @@ extern NTSTATUS signal_alloc_thread( TEB *teb ) DECLSPEC_HIDDEN; +@@ -210,6 +210,7 @@ extern NTSTATUS signal_alloc_thread( TEB *teb ) DECLSPEC_HIDDEN; extern void signal_free_thread( TEB *teb ) DECLSPEC_HIDDEN; extern void signal_init_thread( TEB *teb ) DECLSPEC_HIDDEN; extern void signal_init_process(void) DECLSPEC_HIDDEN; @@ -161,10 +162,10 @@ index 3d9dca3c51d..7b541dc6a31 100644 BOOL suspend, void *thunk, TEB *teb ) DECLSPEC_HIDDEN; extern void DECLSPEC_NORETURN signal_exit_thread( int status, void (*func)(int) ) DECLSPEC_HIDDEN; diff --git a/dlls/ntdll/unix/virtual.c b/dlls/ntdll/unix/virtual.c -index 94b3975a964..cf0c1598720 100644 +index f18e75c0842..0649b30e8b3 100644 --- a/dlls/ntdll/unix/virtual.c +++ b/dlls/ntdll/unix/virtual.c -@@ -2967,7 +2967,7 @@ NTSTATUS virtual_handle_fault( void *addr, DWORD err, void *stack ) +@@ -2917,7 +2917,7 @@ NTSTATUS virtual_handle_fault( void *addr, DWORD err, void *stack ) mutex_lock( &virtual_mutex ); /* no need for signal masking inside signal handler */ vprot = get_page_vprot( page ); diff --git a/patches/patchinstall.sh b/patches/patchinstall.sh index 6837e690..ffb9da02 100755 --- a/patches/patchinstall.sh +++ b/patches/patchinstall.sh @@ -51,7 +51,7 @@ usage() # Get the upstream commit sha upstream_commit() { - echo "9a6e5b23293fbad3bbdcd52007402a3b9a1cb99d" + echo "2ee75bf9ade3e90f10ffe4236c8c95d817402392" } # Show version information diff --git a/patches/widl-SLTG_Typelib_Support/0024-oleaut32-Add-support-for-decoding-SLTG-function-help.patch b/patches/widl-SLTG_Typelib_Support/0024-oleaut32-Add-support-for-decoding-SLTG-function-help.patch index f29e26a4..15c4c1fb 100644 --- a/patches/widl-SLTG_Typelib_Support/0024-oleaut32-Add-support-for-decoding-SLTG-function-help.patch +++ b/patches/widl-SLTG_Typelib_Support/0024-oleaut32-Add-support-for-decoding-SLTG-function-help.patch @@ -1,18 +1,18 @@ -From f86165f3d7289221abff169866659c8196c7f8dd Mon Sep 17 00:00:00 2001 +From 34a06e7077076e43a84eaa9877a94cdfbc750cc0 Mon Sep 17 00:00:00 2001 From: Dmitry Timoshkov Date: Tue, 26 Jan 2016 15:41:06 +0800 -Subject: [PATCH 24/26] oleaut32: Add support for decoding SLTG function help +Subject: [PATCH] oleaut32: Add support for decoding SLTG function help strings. --- - dlls/oleaut32/typelib.c | 23 +++++++++++++---------- - 1 file changed, 13 insertions(+), 10 deletions(-) + dlls/oleaut32/typelib.c | 24 ++++++++++++++---------- + 1 file changed, 14 insertions(+), 10 deletions(-) diff --git a/dlls/oleaut32/typelib.c b/dlls/oleaut32/typelib.c -index f652e0b..d08ee5c 100644 +index d171956bf46..25d2c304722 100644 --- a/dlls/oleaut32/typelib.c +++ b/dlls/oleaut32/typelib.c -@@ -4206,7 +4206,8 @@ static void SLTG_DoVars(char *pBlk, char *pFirstItem, ITypeInfoImpl *pTI, unsign +@@ -4237,7 +4237,8 @@ static void SLTG_DoVars(char *pBlk, char *pFirstItem, ITypeInfoImpl *pTI, unsign } static void SLTG_DoFuncs(char *pBlk, char *pFirstItem, ITypeInfoImpl *pTI, @@ -22,16 +22,17 @@ index f652e0b..d08ee5c 100644 { SLTG_Function *pFunc; unsigned short i; -@@ -4243,6 +4244,8 @@ static void SLTG_DoFuncs(char *pBlk, char *pFirstItem, ITypeInfoImpl *pTI, - pFuncDesc->funcdesc.cParams = pFunc->nacc >> 3; - pFuncDesc->funcdesc.cParamsOpt = (pFunc->retnextopt & 0x7e) >> 1; - pFuncDesc->funcdesc.oVft = (pFunc->vtblpos & ~1) * sizeof(void *) / pTI->pTypeLib->ptr_size; -+ if (pFunc->helpstring != 0xffff) -+ pFuncDesc->HelpString = decode_string(hlp_strings, pBlk + pFunc->helpstring, pNameTable - pBlk, pTI->pTypeLib); +@@ -4278,6 +4279,9 @@ static void SLTG_DoFuncs(char *pBlk, char *pFirstItem, ITypeInfoImpl *pTI, + else + pFuncDesc->funcdesc.oVft = (pFunc->vtblpos & ~1) * sizeof(void *) / pTI->pTypeLib->ptr_size; ++ if (pFunc->helpstring != 0xffff) ++ pFuncDesc->HelpString = decode_string(hlp_strings, pBlk + pFunc->helpstring, pNameTable - pBlk, pTI->pTypeLib); ++ if(pFunc->magic & SLTG_FUNCTION_FLAGS_PRESENT) pFuncDesc->funcdesc.wFuncFlags = pFunc->funcflags; -@@ -4330,7 +4333,7 @@ static void SLTG_ProcessCoClass(char *pBlk, ITypeInfoImpl *pTI, + +@@ -4364,7 +4368,7 @@ static void SLTG_ProcessCoClass(char *pBlk, ITypeInfoImpl *pTI, static void SLTG_ProcessInterface(char *pBlk, ITypeInfoImpl *pTI, char *pNameTable, SLTG_TypeInfoHeader *pTIHeader, @@ -40,7 +41,7 @@ index f652e0b..d08ee5c 100644 { char *pFirstItem; sltg_ref_lookup_t *ref_lookup = NULL; -@@ -4347,7 +4350,7 @@ static void SLTG_ProcessInterface(char *pBlk, ITypeInfoImpl *pTI, +@@ -4381,7 +4385,7 @@ static void SLTG_ProcessInterface(char *pBlk, ITypeInfoImpl *pTI, } if (pTITail->funcs_off != 0xffff) @@ -49,7 +50,7 @@ index f652e0b..d08ee5c 100644 heap_free(ref_lookup); -@@ -4392,7 +4395,7 @@ static void SLTG_ProcessAlias(char *pBlk, ITypeInfoImpl *pTI, +@@ -4426,7 +4430,7 @@ static void SLTG_ProcessAlias(char *pBlk, ITypeInfoImpl *pTI, static void SLTG_ProcessDispatch(char *pBlk, ITypeInfoImpl *pTI, char *pNameTable, SLTG_TypeInfoHeader *pTIHeader, @@ -58,7 +59,7 @@ index f652e0b..d08ee5c 100644 { sltg_ref_lookup_t *ref_lookup = NULL; if (pTIHeader->href_table != 0xffffffff) -@@ -4403,7 +4406,7 @@ static void SLTG_ProcessDispatch(char *pBlk, ITypeInfoImpl *pTI, +@@ -4437,7 +4441,7 @@ static void SLTG_ProcessDispatch(char *pBlk, ITypeInfoImpl *pTI, SLTG_DoVars(pBlk, pBlk + pTITail->vars_off, pTI, pTITail->cVars, pNameTable, ref_lookup); if (pTITail->funcs_off != 0xffff) @@ -67,7 +68,7 @@ index f652e0b..d08ee5c 100644 if (pTITail->impls_off != 0xffff) SLTG_DoImpls(pBlk + pTITail->impls_off, pTI, FALSE, ref_lookup); -@@ -4427,7 +4430,7 @@ static void SLTG_ProcessEnum(char *pBlk, ITypeInfoImpl *pTI, +@@ -4461,7 +4465,7 @@ static void SLTG_ProcessEnum(char *pBlk, ITypeInfoImpl *pTI, static void SLTG_ProcessModule(char *pBlk, ITypeInfoImpl *pTI, char *pNameTable, SLTG_TypeInfoHeader *pTIHeader, @@ -76,7 +77,7 @@ index f652e0b..d08ee5c 100644 { sltg_ref_lookup_t *ref_lookup = NULL; if (pTIHeader->href_table != 0xffffffff) -@@ -4438,7 +4441,7 @@ static void SLTG_ProcessModule(char *pBlk, ITypeInfoImpl *pTI, +@@ -4472,7 +4476,7 @@ static void SLTG_ProcessModule(char *pBlk, ITypeInfoImpl *pTI, SLTG_DoVars(pBlk, pBlk + pTITail->vars_off, pTI, pTITail->cVars, pNameTable, ref_lookup); if (pTITail->funcs_off != 0xffff) @@ -85,7 +86,7 @@ index f652e0b..d08ee5c 100644 heap_free(ref_lookup); if (TRACE_ON(typelib)) dump_TypeInfo(pTI); -@@ -4700,7 +4703,7 @@ static ITypeLib2* ITypeLib2_Constructor_SLTG(LPVOID pLib, DWORD dwTLBLength) +@@ -4734,7 +4738,7 @@ static ITypeLib2* ITypeLib2_Constructor_SLTG(LPVOID pLib, DWORD dwTLBLength) case TKIND_INTERFACE: SLTG_ProcessInterface((char *)(pMemHeader + 1), *ppTypeInfoImpl, pNameTable, @@ -94,7 +95,7 @@ index f652e0b..d08ee5c 100644 break; case TKIND_COCLASS: -@@ -4715,12 +4718,12 @@ static ITypeLib2* ITypeLib2_Constructor_SLTG(LPVOID pLib, DWORD dwTLBLength) +@@ -4749,12 +4753,12 @@ static ITypeLib2* ITypeLib2_Constructor_SLTG(LPVOID pLib, DWORD dwTLBLength) case TKIND_DISPATCH: SLTG_ProcessDispatch((char *)(pMemHeader + 1), *ppTypeInfoImpl, pNameTable, @@ -110,5 +111,5 @@ index f652e0b..d08ee5c 100644 default: -- -2.7.4 +2.28.0 diff --git a/patches/wineboot-ProxySettings/0001-wineboot-Initialize-proxy-settings-registry-key.patch b/patches/wineboot-ProxySettings/0001-wineboot-Initialize-proxy-settings-registry-key.patch index ee6f3177..34b86cf7 100644 --- a/patches/wineboot-ProxySettings/0001-wineboot-Initialize-proxy-settings-registry-key.patch +++ b/patches/wineboot-ProxySettings/0001-wineboot-Initialize-proxy-settings-registry-key.patch @@ -1,4 +1,4 @@ -From 47fc492aea5790880546171f7baeceb5fb4f96f4 Mon Sep 17 00:00:00 2001 +From 4e43757350f1104b73d6aef09fd277ef8a245412 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Michael=20M=C3=BCller?= Date: Mon, 26 Dec 2016 16:37:40 +0100 Subject: [PATCH] wineboot: Initialize proxy settings registry key. @@ -9,23 +9,23 @@ Subject: [PATCH] wineboot: Initialize proxy settings registry key. 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/programs/wineboot/Makefile.in b/programs/wineboot/Makefile.in -index 3921fa96444..9575b45beca 100644 +index 2552f69990a..769ad7ee511 100644 --- a/programs/wineboot/Makefile.in +++ b/programs/wineboot/Makefile.in @@ -1,7 +1,7 @@ MODULE = wineboot.exe APPMODE = -mconsole - IMPORTS = uuid advapi32 + IMPORTS = uuid advapi32 ws2_32 -DELAYIMPORTS = shell32 shlwapi version user32 setupapi newdev +DELAYIMPORTS = shell32 shlwapi version user32 setupapi newdev wininet EXTRADLLFLAGS = -mno-cygwin diff --git a/programs/wineboot/wineboot.c b/programs/wineboot/wineboot.c -index 2946a17c7b3..b622f47def1 100644 +index 119fef90c10..05d695a7d4a 100644 --- a/programs/wineboot/wineboot.c +++ b/programs/wineboot/wineboot.c -@@ -73,6 +73,7 @@ +@@ -78,6 +78,7 @@ #include #include #include @@ -33,7 +33,7 @@ index 2946a17c7b3..b622f47def1 100644 #include #include "resource.h" -@@ -744,6 +745,13 @@ static void create_volatile_environment_registry_key(void) +@@ -1032,6 +1033,13 @@ static void create_volatile_environment_registry_key(void) RegCloseKey( hkey ); } @@ -47,7 +47,7 @@ index 2946a17c7b3..b622f47def1 100644 static void create_etc_stub_files(void) { static const WCHAR drivers_etcW[] = {'\\','d','r','i','v','e','r','s','\\','e','t','c',0}; -@@ -1587,6 +1595,7 @@ int __cdecl main( int argc, char *argv[] ) +@@ -1877,6 +1885,7 @@ int __cdecl main( int argc, char *argv[] ) if (init || update) update_wineprefix( update ); create_volatile_environment_registry_key(); @@ -56,5 +56,5 @@ index 2946a17c7b3..b622f47def1 100644 ProcessRunKeys( HKEY_LOCAL_MACHINE, L"RunOnce", TRUE, TRUE ); -- -2.26.2 +2.28.0 diff --git a/patches/ws2_32-getaddrinfo/0001-ws2_32-Fix-handling-of-empty-string-in-WS_getaddrinf.patch b/patches/ws2_32-getaddrinfo/0001-ws2_32-Fix-handling-of-empty-string-in-WS_getaddrinf.patch index 743c7272..582cece8 100644 --- a/patches/ws2_32-getaddrinfo/0001-ws2_32-Fix-handling-of-empty-string-in-WS_getaddrinf.patch +++ b/patches/ws2_32-getaddrinfo/0001-ws2_32-Fix-handling-of-empty-string-in-WS_getaddrinf.patch @@ -1,18 +1,18 @@ -From 98db626566f8d4bcc0de8ad17fe0dabb685d69fe Mon Sep 17 00:00:00 2001 +From 381a5842063016c8cec8810f81baaa7e07b790ac Mon Sep 17 00:00:00 2001 From: Sebastian Lackner Date: Thu, 31 Aug 2017 01:15:05 +0200 Subject: [PATCH] ws2_32: Fix handling of empty string in WS_getaddrinfo. Fixes a regression introduced in a2053597cc326e2305c44e1c1a954c2e0ee2853e. --- - dlls/ws2_32/socket.c | 38 ++++++++++++++++++++++++++++++-------- - 1 file changed, 30 insertions(+), 8 deletions(-) + dlls/ws2_32/socket.c | 46 +++++++++++++++++++++++++++++++++++++------- + 1 file changed, 39 insertions(+), 7 deletions(-) diff --git a/dlls/ws2_32/socket.c b/dlls/ws2_32/socket.c -index 4d2afa946b7..ed1ca2f44b9 100644 +index 05423d4b90c..71aaf433d1b 100644 --- a/dlls/ws2_32/socket.c +++ b/dlls/ws2_32/socket.c -@@ -6673,6 +6673,22 @@ static int convert_eai_u2w(int unixret) { +@@ -6759,6 +6759,22 @@ static int convert_eai_u2w(int unixret) { return unixret; } @@ -35,52 +35,56 @@ index 4d2afa946b7..ed1ca2f44b9 100644 static char *get_fqdn(void) { char *ret; -@@ -6698,9 +6714,8 @@ int WINAPI WS_getaddrinfo(LPCSTR nodename, LPCSTR servname, const struct WS_addr +@@ -6784,7 +6800,7 @@ int WINAPI WS_getaddrinfo(LPCSTR nodename, LPCSTR servname, const struct WS_addr struct addrinfo *unixaires = NULL; int result; struct addrinfo unixhints, *punixhints = NULL; -- char *dot, *nodeV6 = NULL, *fqdn; -+ char *nodeV6 = NULL, *hostname, *fqdn; +- char *nodeV6 = NULL, *fqdn = NULL; ++ char *nodeV6 = NULL, *hostname, *fqdn = NULL; const char *node; -- size_t hostname_len = 0; *res = NULL; - if (!nodename && !servname) -@@ -6709,16 +6724,20 @@ int WINAPI WS_getaddrinfo(LPCSTR nodename, LPCSTR servname, const struct WS_addr +@@ -6794,13 +6810,20 @@ int WINAPI WS_getaddrinfo(LPCSTR nodename, LPCSTR servname, const struct WS_addr return WSAHOST_NOT_FOUND; } + hostname = get_hostname(); + if (!hostname) return WSA_NOT_ENOUGH_MEMORY; + - fqdn = get_fqdn(); -- if (!fqdn) return WSA_NOT_ENOUGH_MEMORY; -- dot = strchr(fqdn, '.'); -- if (dot) -- hostname_len = dot - fqdn; ++ fqdn = get_fqdn(); + if (!fqdn) + { + HeapFree(GetProcessHeap(), 0, hostname); + return WSA_NOT_ENOUGH_MEMORY; + } - ++ if (!nodename) node = NULL; else if (!nodename[0]) +- { +- if (!(fqdn = get_fqdn())) return WSA_NOT_ENOUGH_MEMORY; - node = fqdn; +- } + node = hostname; else { node = nodename; -@@ -6733,6 +6752,7 @@ int WINAPI WS_getaddrinfo(LPCSTR nodename, LPCSTR servname, const struct WS_addr +@@ -6813,7 +6836,13 @@ int WINAPI WS_getaddrinfo(LPCSTR nodename, LPCSTR servname, const struct WS_addr + if (node[0] == '[' && (close_bracket = strchr(node + 1, ']'))) + { nodeV6 = HeapAlloc(GetProcessHeap(), 0, close_bracket - node); - if (!nodeV6) - { +- if (!nodeV6) return WSA_NOT_ENOUGH_MEMORY; ++ if (!nodeV6) ++ { + HeapFree(GetProcessHeap(), 0, hostname); - HeapFree(GetProcessHeap(), 0, fqdn); - return WSA_NOT_ENOUGH_MEMORY; - } -@@ -6762,6 +6782,7 @@ int WINAPI WS_getaddrinfo(LPCSTR nodename, LPCSTR servname, const struct WS_addr ++ HeapFree(GetProcessHeap(), 0, fqdn); ++ return WSA_NOT_ENOUGH_MEMORY; ++ } ++ + lstrcpynA(nodeV6, node + 1, close_bracket - node); + node = nodeV6; + } +@@ -6840,6 +6869,7 @@ int WINAPI WS_getaddrinfo(LPCSTR nodename, LPCSTR servname, const struct WS_addr if (punixhints->ai_socktype < 0) { SetLastError(WSAESOCKTNOSUPPORT); @@ -88,17 +92,18 @@ index 4d2afa946b7..ed1ca2f44b9 100644 HeapFree(GetProcessHeap(), 0, fqdn); HeapFree(GetProcessHeap(), 0, nodeV6); return SOCKET_ERROR; -@@ -6787,7 +6808,7 @@ int WINAPI WS_getaddrinfo(LPCSTR nodename, LPCSTR servname, const struct WS_addr +@@ -6864,7 +6894,8 @@ int WINAPI WS_getaddrinfo(LPCSTR nodename, LPCSTR servname, const struct WS_addr + /* getaddrinfo(3) is thread safe, no need to wrap in CS */ result = getaddrinfo(node, servname, punixhints, &unixaires); - if (result && (!hints || !(hints->ai_flags & WS_AI_NUMERICHOST)) -- && node && (!strcmp(fqdn, node) || (!strncmp(fqdn, node, hostname_len) && !node[hostname_len]))) +- if (result && (!hints || !(hints->ai_flags & WS_AI_NUMERICHOST)) && node) ++ if (result && (!hints || !(hints->ai_flags & WS_AI_NUMERICHOST)) + && node && (!strcmp(node, hostname) || !strcmp(node, fqdn))) { - /* If it didn't work it means the host name IP is not in /etc/hosts, try again - * by sending a NULL host and avoid sending a NULL servname too because that -@@ -6796,6 +6817,7 @@ int WINAPI WS_getaddrinfo(LPCSTR nodename, LPCSTR servname, const struct WS_addr - result = getaddrinfo(NULL, servname ? servname : "0", punixhints, &unixaires); + if (!fqdn && !(fqdn = get_fqdn())) + { +@@ -6881,6 +6912,7 @@ int WINAPI WS_getaddrinfo(LPCSTR nodename, LPCSTR servname, const struct WS_addr + } } TRACE("%s, %s %p -> %p %d\n", debugstr_a(nodename), debugstr_a(servname), hints, res, result); + HeapFree(GetProcessHeap(), 0, hostname); @@ -106,5 +111,5 @@ index 4d2afa946b7..ed1ca2f44b9 100644 HeapFree(GetProcessHeap(), 0, nodeV6); -- -2.27.0 +2.28.0 diff --git a/staging/upstream-commit b/staging/upstream-commit index 56fb2b94..259bb856 100644 --- a/staging/upstream-commit +++ b/staging/upstream-commit @@ -1 +1 @@ -9a6e5b23293fbad3bbdcd52007402a3b9a1cb99d +2ee75bf9ade3e90f10ffe4236c8c95d817402392