Added ntdll-RtlFirstFreeAce patchset

This commit is contained in:
Alistair Leslie-Hughes 2021-03-04 12:06:54 +11:00
parent 404b698d44
commit 64efb6f0d3
4 changed files with 71 additions and 0 deletions

View File

@ -0,0 +1,25 @@
From 240b46c41f284b6ff96b990b9b719a18919fb6dd Mon Sep 17 00:00:00 2001
From: Alistair Leslie-Hughes <leslie_alistair@hotmail.com>
Date: Wed, 3 Mar 2021 08:56:39 +1100
Subject: [PATCH 1/2] ntdll: Check return parameter before use
---
dlls/ntdll/sec.c | 2 ++
1 file changed, 2 insertions(+)
diff --git a/dlls/ntdll/sec.c b/dlls/ntdll/sec.c
index eccfc82ce8c..5c1c9b1fbb0 100644
--- a/dlls/ntdll/sec.c
+++ b/dlls/ntdll/sec.c
@@ -1172,6 +1172,8 @@ NTSTATUS WINAPI RtlAddAce(
return STATUS_INVALID_PARAMETER;
if (!RtlFirstFreeAce(acl,&targetace))
return STATUS_INVALID_PARAMETER;
+ if (!targetace)
+ return STATUS_ALLOTTED_SPACE_EXCEEDED;
nrofaces=0;ace=acestart;
while (((BYTE *)ace - (BYTE *)acestart) < acelen) {
nrofaces++;
--
2.30.1

View File

@ -0,0 +1,28 @@
From 0d2d659fbfb73fe046626d256ca5ee2878d9288b Mon Sep 17 00:00:00 2001
From: Alistair Leslie-Hughes <leslie_alistair@hotmail.com>
Date: Mon, 8 Feb 2021 13:16:52 +1100
Subject: [PATCH 2/2] ntdll: RtlFirstFreeAce only return FALSE on error
---
dlls/ntdll/sec.c | 5 ++---
1 file changed, 2 insertions(+), 3 deletions(-)
diff --git a/dlls/ntdll/sec.c b/dlls/ntdll/sec.c
index 5c1c9b1fbb0..9cebcb4f58e 100644
--- a/dlls/ntdll/sec.c
+++ b/dlls/ntdll/sec.c
@@ -1149,9 +1149,8 @@ BOOLEAN WINAPI RtlFirstFreeAce(
return FALSE;
ace = (PACE_HEADER)(((BYTE*)ace)+ace->AceSize);
}
- if ((BYTE *)ace >= (BYTE *)acl + acl->AclSize)
- return FALSE;
- *x = ace;
+ if ((BYTE *)ace <= (BYTE *)acl + acl->AclSize)
+ *x = ace;
return TRUE;
}
--
2.30.1

View File

@ -0,0 +1 @@
Fixes: [50624] Waves Central 12.0.5 fails to start.

View File

@ -172,6 +172,7 @@ patch_enable_all ()
enable_ntdll_NtSetLdtEntries="$1"
enable_ntdll_Pipe_SpecialCharacters="$1"
enable_ntdll_ProcessQuotaLimits="$1"
enable_ntdll_RtlFirstFreeAce="$1"
enable_ntdll_RtlQueryPackageIdentity="$1"
enable_ntdll_RtlQueryProcessPlaceholderCompatibilityMode="$1"
enable_ntdll_RtlQueryRegistryValuesEx="$1"
@ -587,6 +588,9 @@ patch_enable ()
ntdll-ProcessQuotaLimits)
enable_ntdll_ProcessQuotaLimits="$2"
;;
ntdll-RtlFirstFreeAce)
enable_ntdll_RtlFirstFreeAce="$2"
;;
ntdll-RtlQueryPackageIdentity)
enable_ntdll_RtlQueryPackageIdentity="$2"
;;
@ -3140,6 +3144,19 @@ if test "$enable_ntdll_ProcessQuotaLimits" -eq 1; then
patch_apply ntdll-ProcessQuotaLimits/0001-ntdll-Add-fake-data-implementation-for-ProcessQuotaL.patch
fi
# Patchset ntdll-RtlFirstFreeAce
# |
# | This patchset fixes the following Wine bugs:
# | * [#50624] Waves Central 12.0.5 fails to start.
# |
# | Modified files:
# | * dlls/ntdll/sec.c
# |
if test "$enable_ntdll_RtlFirstFreeAce" -eq 1; then
patch_apply ntdll-RtlFirstFreeAce/0001-ntdll-Check-return-parameter-before-use.patch
patch_apply ntdll-RtlFirstFreeAce/0002-ntdll-RtlFirstFreeAce-only-return-FALSE-on-error.patch
fi
# Patchset ntdll-RtlQueryPackageIdentity
# |
# | Modified files: