Added patch to fix condition handling in RtlVerifyVersionInfo.

This commit is contained in:
Sebastian Lackner 2014-11-30 18:20:45 +01:00
parent 1e1522ed25
commit 748696d2bd
5 changed files with 86 additions and 0 deletions

View File

@ -37,6 +37,11 @@ Wine. All those differences are also documented on the
Included bug fixes and improvements
===================================
**Bugfixes and features included in the next upcoming release [1]:**
* Fix condition handling in RtlVerifyVersionInfo ([Wine Bug #36143](https://bugs.winehq.org/show_bug.cgi?id=36143))
**Bugs fixed in Wine Staging 1.7.32 [108]:**
* ATL IOCS data should not be stored in GWLP_USERDATA ([Wine Bug #21767](https://bugs.winehq.org/show_bug.cgi?id=21767))

4
debian/changelog vendored
View File

@ -1,3 +1,7 @@
wine-compholio (1.7.33) UNRELEASED; urgency=low
* Added patch to fix condition handling in RtlVerifyVersionInfo.
-- Sebastian Lackner <sebastian@fds-team.de> Sun, 30 Nov 2014 18:19:00 +0100
wine-compholio (1.7.32) unstable; urgency=low
* Various optimizations of patchupdate.py.
* Update patch for SO_CONNECT_TIME and adding better tests.

View File

@ -70,6 +70,7 @@ PATCHLIST := \
ntdll-NtQuerySection.ok \
ntdll-NtSetLdtEntries.ok \
ntdll-Pipe_SpecialCharacters.ok \
ntdll-RtlVerifyVersionInfo.ok \
ntdll-ThreadTime.ok \
ntdll-User_Shared_Data.ok \
ntdll-WRITECOPY.ok \
@ -1063,6 +1064,21 @@ ntdll-Pipe_SpecialCharacters.ok:
echo '+ { "Michael Müller", "ntdll: Allow special characters in pipe names.", 1 },'; \
) > ntdll-Pipe_SpecialCharacters.ok
# Patchset ntdll-RtlVerifyVersionInfo
# |
# | This patchset fixes the following Wine bugs:
# | * [#36143] Fix condition handling in RtlVerifyVersionInfo
# |
# | Modified files:
# | * dlls/ntdll/version.c
# |
.INTERMEDIATE: ntdll-RtlVerifyVersionInfo.ok
ntdll-RtlVerifyVersionInfo.ok:
$(call APPLY_FILE,ntdll-RtlVerifyVersionInfo/0001-ntdll-Fix-condition-handling-in-RtlVerifyVersionInfo.patch)
@( \
echo '+ { "Sebastian Lackner", "ntdll: Fix condition handling in RtlVerifyVersionInfo.", 1 },'; \
) > ntdll-RtlVerifyVersionInfo.ok
# Patchset ntdll-ThreadTime
# |
# | This patchset fixes the following Wine bugs:

View File

@ -0,0 +1,60 @@
From d4fcd702f9d7eda8209511b5f6522be544b794c4 Mon Sep 17 00:00:00 2001
From: Sebastian Lackner <sebastian@fds-team.de>
Date: Sun, 30 Nov 2014 18:18:23 +0100
Subject: ntdll: Fix condition handling in RtlVerifyVersionInfo.
---
dlls/ntdll/version.c | 15 +++++----------
1 file changed, 5 insertions(+), 10 deletions(-)
diff --git a/dlls/ntdll/version.c b/dlls/ntdll/version.c
index a6340eb..fa40613 100644
--- a/dlls/ntdll/version.c
+++ b/dlls/ntdll/version.c
@@ -732,38 +732,33 @@ NTSTATUS WINAPI RtlVerifyVersionInfo( const RTL_OSVERSIONINFOEXW *info,
if(dwTypeMask & (VER_MAJORVERSION|VER_MINORVERSION|VER_SERVICEPACKMAJOR|VER_SERVICEPACKMINOR))
{
- unsigned char condition = 0;
+ unsigned char condition;
BOOLEAN do_next_check = TRUE;
if(dwTypeMask & VER_MAJORVERSION)
- condition = dwlConditionMask >> 1*3 & 0x07;
- else if(dwTypeMask & VER_MINORVERSION)
- condition = dwlConditionMask >> 0*3 & 0x07;
- else if(dwTypeMask & VER_SERVICEPACKMAJOR)
- condition = dwlConditionMask >> 5*3 & 0x07;
- else if(dwTypeMask & VER_SERVICEPACKMINOR)
- condition = dwlConditionMask >> 4*3 & 0x07;
-
- if(dwTypeMask & VER_MAJORVERSION)
{
+ condition = dwlConditionMask >> 1*3 & 0x07;
status = version_compare_values(ver.dwMajorVersion, info->dwMajorVersion, condition);
do_next_check = (ver.dwMajorVersion == info->dwMajorVersion) &&
((condition != VER_EQUAL) || (status == STATUS_SUCCESS));
}
if((dwTypeMask & VER_MINORVERSION) && do_next_check)
{
+ condition = dwlConditionMask >> 0*3 & 0x07;
status = version_compare_values(ver.dwMinorVersion, info->dwMinorVersion, condition);
do_next_check = (ver.dwMinorVersion == info->dwMinorVersion) &&
((condition != VER_EQUAL) || (status == STATUS_SUCCESS));
}
if((dwTypeMask & VER_SERVICEPACKMAJOR) && do_next_check)
{
+ condition = dwlConditionMask >> 5*3 & 0x07;
status = version_compare_values(ver.wServicePackMajor, info->wServicePackMajor, condition);
do_next_check = (ver.wServicePackMajor == info->wServicePackMajor) &&
((condition != VER_EQUAL) || (status == STATUS_SUCCESS));
}
if((dwTypeMask & VER_SERVICEPACKMINOR) && do_next_check)
{
+ condition = dwlConditionMask >> 4*3 & 0x07;
status = version_compare_values(ver.wServicePackMinor, info->wServicePackMinor, condition);
}
--
2.1.3

View File

@ -0,0 +1 @@
Fixes: [36143] Fix condition handling in RtlVerifyVersionInfo