diff --git a/README.md b/README.md index 229d2a5b..d055622a 100644 --- a/README.md +++ b/README.md @@ -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)) diff --git a/debian/changelog b/debian/changelog index 234a0f58..0c273d0b 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,7 @@ +wine-compholio (1.7.33) UNRELEASED; urgency=low + * Added patch to fix condition handling in RtlVerifyVersionInfo. + -- Sebastian Lackner 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. diff --git a/patches/Makefile b/patches/Makefile index 70b69892..892d8b11 100644 --- a/patches/Makefile +++ b/patches/Makefile @@ -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: diff --git a/patches/ntdll-RtlVerifyVersionInfo/0001-ntdll-Fix-condition-handling-in-RtlVerifyVersionInfo.patch b/patches/ntdll-RtlVerifyVersionInfo/0001-ntdll-Fix-condition-handling-in-RtlVerifyVersionInfo.patch new file mode 100644 index 00000000..028b3fdb --- /dev/null +++ b/patches/ntdll-RtlVerifyVersionInfo/0001-ntdll-Fix-condition-handling-in-RtlVerifyVersionInfo.patch @@ -0,0 +1,60 @@ +From d4fcd702f9d7eda8209511b5f6522be544b794c4 Mon Sep 17 00:00:00 2001 +From: Sebastian Lackner +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 + diff --git a/patches/ntdll-RtlVerifyVersionInfo/definition b/patches/ntdll-RtlVerifyVersionInfo/definition new file mode 100644 index 00000000..8127efca --- /dev/null +++ b/patches/ntdll-RtlVerifyVersionInfo/definition @@ -0,0 +1 @@ +Fixes: [36143] Fix condition handling in RtlVerifyVersionInfo