diff --git a/patches/ntdll-Manifest_Range/0001-ntdll-Support-ISOLATIONAWARE_MANIFEST_RESOURCE_ID-ra.patch b/patches/ntdll-Manifest_Range/0001-ntdll-Support-ISOLATIONAWARE_MANIFEST_RESOURCE_ID-ra.patch new file mode 100644 index 00000000..284d53cd --- /dev/null +++ b/patches/ntdll-Manifest_Range/0001-ntdll-Support-ISOLATIONAWARE_MANIFEST_RESOURCE_ID-ra.patch @@ -0,0 +1,43 @@ +From 6e76ba9655c02041be67b3466dbdb62a2c9ecc10 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Andr=C3=A9=20Hentschel?= +Date: Tue, 13 Nov 2018 11:07:46 +1100 +Subject: [PATCH] ntdll: Support ISOLATIONAWARE_MANIFEST_RESOURCE_ID range + +Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=18889 +--- + dlls/ntdll/actctx.c | 12 ++++++++++-- + 1 file changed, 10 insertions(+), 2 deletions(-) + +diff --git a/dlls/ntdll/actctx.c b/dlls/ntdll/actctx.c +index 08b6c50..4366051 100644 +--- a/dlls/ntdll/actctx.c ++++ b/dlls/ntdll/actctx.c +@@ -57,6 +57,8 @@ WINE_DEFAULT_DEBUG_CHANNEL(actctx); + /* we don't want to include winuser.h */ + #define RT_MANIFEST ((ULONG_PTR)24) + #define CREATEPROCESS_MANIFEST_RESOURCE_ID ((ULONG_PTR)1) ++#define MINIMUM_RESERVED_MANIFEST_RESOURCE_ID ((ULONG_PTR)1) ++#define MAXIMUM_RESERVED_MANIFEST_RESOURCE_ID ((ULONG_PTR)16) + + /* from oaidl.h */ + typedef enum tagLIBFLAGS { +@@ -3291,8 +3293,14 @@ static NTSTATUS lookup_assembly(struct actctx_loader* acl, + status = open_nt_file( &file, &nameW ); + if (!status) + { +- status = get_manifest_in_pe_file( acl, ai, nameW.Buffer, directory, FALSE, file, +- (LPCWSTR)CREATEPROCESS_MANIFEST_RESOURCE_ID, 0 ); ++ INT rid; ++ for (rid = MINIMUM_RESERVED_MANIFEST_RESOURCE_ID; ++ rid <= MAXIMUM_RESERVED_MANIFEST_RESOURCE_ID; rid++) ++ { ++ status = get_manifest_in_pe_file( acl, ai, nameW.Buffer, directory, FALSE, file, ++ (LPCWSTR)(ULONG_PTR)rid, 0 ); ++ if (status == STATUS_SUCCESS) break; ++ } + NtClose( file ); + if (status == STATUS_SUCCESS) + break; +-- +1.9.1 + diff --git a/patches/ntdll-Manifest_Range/definition b/patches/ntdll-Manifest_Range/definition new file mode 100644 index 00000000..5e7d9ac2 --- /dev/null +++ b/patches/ntdll-Manifest_Range/definition @@ -0,0 +1 @@ +Fixes: [18889] ntdll: Support ISOLATIONAWARE_MANIFEST_RESOURCE_ID range diff --git a/patches/patchinstall.sh b/patches/patchinstall.sh index 8aa3596d..6438aa20 100755 --- a/patches/patchinstall.sh +++ b/patches/patchinstall.sh @@ -207,6 +207,7 @@ patch_enable_all () enable_ntdll_LdrGetDllHandle="$1" enable_ntdll_LdrInitializeThunk="$1" enable_ntdll_Loader_Machine_Type="$1" + enable_ntdll_Manifest_Range="$1" enable_ntdll_NtAccessCheck="$1" enable_ntdll_NtContinue="$1" enable_ntdll_NtDevicePath="$1" @@ -786,6 +787,9 @@ patch_enable () ntdll-Loader_Machine_Type) enable_ntdll_Loader_Machine_Type="$2" ;; + ntdll-Manifest_Range) + enable_ntdll_Manifest_Range="$2" + ;; ntdll-NtAccessCheck) enable_ntdll_NtAccessCheck="$2" ;; @@ -4753,6 +4757,21 @@ if test "$enable_ntdll_LdrInitializeThunk" -eq 1; then ) >> "$patchlist" fi +# Patchset ntdll-Manifest_Range +# | +# | This patchset fixes the following Wine bugs: +# | * [#18889] ntdll: Support ISOLATIONAWARE_MANIFEST_RESOURCE_ID range +# | +# | Modified files: +# | * dlls/ntdll/actctx.c +# | +if test "$enable_ntdll_Manifest_Range" -eq 1; then + patch_apply ntdll-Manifest_Range/0001-ntdll-Support-ISOLATIONAWARE_MANIFEST_RESOURCE_ID-ra.patch + ( + printf '%s\n' '+ { "André Hentschel", "ntdll: Support ISOLATIONAWARE_MANIFEST_RESOURCE_ID range.", 1 },'; + ) >> "$patchlist" +fi + # Patchset ntdll-NtAccessCheck # | # | Modified files: