diff --git a/debian/changelog b/debian/changelog index d9f527e3..a1e55b68 100644 --- a/debian/changelog +++ b/debian/changelog @@ -13,6 +13,8 @@ wine-staging (1.7.43) UNRELEASED; urgency=low * Added patch with stub for winsta.WinStationEnumerateW. * Added patch to implement support for ObjectTypeInformation class support in NtQueryObject. + * Added patch to fix error handling in OpenSCManagerW (fixes testfailure in + advapi32/service tests when named pipe messagemode is available). * Removed patch to use lockfree implementation for FD cache (accepted upstream). * Added patch to fix leak of async handle in pipe_server_flush. diff --git a/patches/advapi32-OpenSCManagerW/0001-advapi32-Fix-error-handling-in-OpenSCManagerW.patch b/patches/advapi32-OpenSCManagerW/0001-advapi32-Fix-error-handling-in-OpenSCManagerW.patch new file mode 100644 index 00000000..3743f541 --- /dev/null +++ b/patches/advapi32-OpenSCManagerW/0001-advapi32-Fix-error-handling-in-OpenSCManagerW.patch @@ -0,0 +1,28 @@ +From 0f3d7e07b53bd1a7c8735bb2c0fa3da0b75dcb96 Mon Sep 17 00:00:00 2001 +From: Sebastian Lackner +Date: Fri, 8 May 2015 21:53:30 +0200 +Subject: advapi32: Fix error handling in OpenSCManagerW. + +--- + dlls/advapi32/service.c | 5 +++-- + 1 file changed, 3 insertions(+), 2 deletions(-) + +diff --git a/dlls/advapi32/service.c b/dlls/advapi32/service.c +index 0eb0a47..111009d 100644 +--- a/dlls/advapi32/service.c ++++ b/dlls/advapi32/service.c +@@ -868,8 +868,9 @@ SC_HANDLE WINAPI OpenSCManagerW( LPCWSTR lpMachineName, LPCWSTR lpDatabaseName, + DWORD r; + + r = SERV_OpenSCManagerW(lpMachineName, lpDatabaseName, dwDesiredAccess, &handle); +- if (r!=ERROR_SUCCESS) +- SetLastError(r); ++ ++ /* last error could still be ERROR_MORE_DATA, so set error unconditionally */ ++ SetLastError(r); + return handle; + } + +-- +2.4.0 + diff --git a/patches/kernel32-Named_Pipe/definition b/patches/kernel32-Named_Pipe/definition index 1946d481..2eb2d8ae 100644 --- a/patches/kernel32-Named_Pipe/definition +++ b/patches/kernel32-Named_Pipe/definition @@ -1,3 +1,4 @@ Fixes: [16550] Fix for ConnectNamedPort return value in overlapped mode Fixes: [17195] Support for named pipe message mode (Linux only) Fixes: Improve ReadDataAvailable handling in FilePipeLocalInformation class +Depends: advapi32-OpenSCManagerW diff --git a/patches/patchinstall.sh b/patches/patchinstall.sh index 59ead691..6512a283 100755 --- a/patches/patchinstall.sh +++ b/patches/patchinstall.sh @@ -81,6 +81,7 @@ patch_enable_all () enable_Staging="$1" enable_advapi32_ImpersonateAnonymousToken="$1" enable_advapi32_LsaLookupSids="$1" + enable_advapi32_OpenSCManagerW="$1" enable_atl_AtlIPersistPropertyBag_Save="$1" enable_browseui_Progress_Dialog="$1" enable_category_stable="$1" @@ -301,6 +302,9 @@ patch_enable () advapi32-LsaLookupSids) enable_advapi32_LsaLookupSids="$2" ;; + advapi32-OpenSCManagerW) + enable_advapi32_OpenSCManagerW="$2" + ;; atl-AtlIPersistPropertyBag_Save) enable_atl_AtlIPersistPropertyBag_Save="$2" ;; @@ -1521,6 +1525,13 @@ if test "$enable_mountmgr_Null_Device" -eq 1; then enable_ntdll_Pipe_SpecialCharacters=1 fi +if test "$enable_kernel32_Named_Pipe" -eq 1; then + if test "$enable_advapi32_OpenSCManagerW" -gt 1; then + abort "Patchset advapi32-OpenSCManagerW disabled, but kernel32-Named_Pipe depends on that." + fi + enable_advapi32_OpenSCManagerW=1 +fi + if test "$enable_kernel32_CopyFileEx" -eq 1; then if test "$enable_kernel32_SetFileInformationByHandle" -gt 1; then abort "Patchset kernel32-SetFileInformationByHandle disabled, but kernel32-CopyFileEx depends on that." @@ -1830,6 +1841,18 @@ if test "$enable_advapi32_LsaLookupSids" -eq 1; then ) >> "$patchlist" fi +# Patchset advapi32-OpenSCManagerW +# | +# | Modified files: +# | * dlls/advapi32/service.c +# | +if test "$enable_advapi32_OpenSCManagerW" -eq 1; then + patch_apply advapi32-OpenSCManagerW/0001-advapi32-Fix-error-handling-in-OpenSCManagerW.patch + ( + echo '+ { "Sebastian Lackner", "advapi32: Fix error handling in OpenSCManagerW.", 1 },'; + ) >> "$patchlist" +fi + # Patchset atl-AtlIPersistPropertyBag_Save # | # | This patchset fixes the following Wine bugs: