Rebase against 2ee75bf9ade3e90f10ffe4236c8c95d817402392.

This commit is contained in:
Alistair Leslie-Hughes 2020-09-29 12:58:11 +10:00
parent 9acfa3b899
commit 639755741e
9 changed files with 116 additions and 109 deletions

View File

@ -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" <o.dierick@piezo-forte.be>
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

View File

@ -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?= <michael@fds-team.de>
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;

View File

@ -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 <sebastian@fds-team.de>
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);

View File

@ -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?= <michael@fds-team.de>
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 );

View File

@ -51,7 +51,7 @@ usage()
# Get the upstream commit sha
upstream_commit()
{
echo "9a6e5b23293fbad3bbdcd52007402a3b9a1cb99d"
echo "2ee75bf9ade3e90f10ffe4236c8c95d817402392"
}
# Show version information

View File

@ -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 <dmitry@baikal.ru>
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

View File

@ -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?= <michael@fds-team.de>
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 <shellapi.h>
#include <setupapi.h>
#include <ntsecapi.h>
@ -33,7 +33,7 @@ index 2946a17c7b3..b622f47def1 100644
#include <newdev.h>
#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

View File

@ -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 <sebastian@fds-team.de>
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

View File

@ -1 +1 @@
9a6e5b23293fbad3bbdcd52007402a3b9a1cb99d
2ee75bf9ade3e90f10ffe4236c8c95d817402392