Module: wine Branch: master Commit: 235e3e522e8776791e54541c7cdb2be1482424db URL: https://gitlab.winehq.org/wine/wine/-/commit/235e3e522e8776791e54541c7cdb2be...
Author: Sven Baars sbaars@codeweavers.com Date: Tue Jul 11 15:21:08 2023 +0200
ntdll: Test against the correct limit in get_extended_params().
---
dlls/ntdll/unix/virtual.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-)
diff --git a/dlls/ntdll/unix/virtual.c b/dlls/ntdll/unix/virtual.c index 21b4e9b4dba..392ac4d9966 100644 --- a/dlls/ntdll/unix/virtual.c +++ b/dlls/ntdll/unix/virtual.c @@ -4353,6 +4353,10 @@ static NTSTATUS get_extended_params( const MEM_EXTENDED_PARAMETER *parameters, U case MemExtendedParameterAddressRequirements: { MEM_ADDRESS_REQUIREMENTS *r = parameters[i].Pointer; + ULONG_PTR limit; + + if (is_wow64()) limit = (ULONG_PTR)get_wow_user_space_limit(); + else limit = (ULONG_PTR)user_space_limit;
if (r->Alignment) { @@ -4366,7 +4370,7 @@ static NTSTATUS get_extended_params( const MEM_EXTENDED_PARAMETER *parameters, U if (r->LowestStartingAddress) { *limit_low = (ULONG_PTR)r->LowestStartingAddress; - if (*limit_low >= (ULONG_PTR)user_space_limit || (*limit_low & granularity_mask)) + if (*limit_low >= limit || (*limit_low & granularity_mask)) { WARN( "Invalid limit %p.\n", r->LowestStartingAddress ); return STATUS_INVALID_PARAMETER; @@ -4375,7 +4379,7 @@ static NTSTATUS get_extended_params( const MEM_EXTENDED_PARAMETER *parameters, U if (r->HighestEndingAddress) { *limit_high = (ULONG_PTR)r->HighestEndingAddress; - if (*limit_high > (ULONG_PTR)user_space_limit || + if (*limit_high > limit || *limit_high <= *limit_low || ((*limit_high + 1) & (page_mask - 1))) {