You've already forked wine-staging
mirror of
https://gitlab.winehq.org/wine/wine-staging.git
synced 2025-04-13 14:42:51 -07:00
Compare commits
79 Commits
acl-rework
...
v1.7.41
Author | SHA1 | Date | |
---|---|---|---|
|
c282ffecac | ||
|
11b27f5d7f | ||
|
923966f191 | ||
|
f1064ee0bd | ||
|
743184f7be | ||
|
15041e6b96 | ||
|
cf4a1f5af2 | ||
|
b9a1a97057 | ||
|
69f3294d35 | ||
|
f2ecb762ea | ||
|
a2dd6b6ede | ||
|
4befe663b8 | ||
|
178d669519 | ||
|
04afcf114c | ||
|
d8cb439f29 | ||
|
d9bdc6ae51 | ||
|
572c6fe243 | ||
|
3a65a99375 | ||
|
5b313a54e2 | ||
|
04e3ce9865 | ||
|
96325cabed | ||
|
2bb0477ca0 | ||
|
bbbdc32ff4 | ||
|
24af7f9090 | ||
|
c9ec45a0e3 | ||
|
ea8db60185 | ||
|
44c159ca06 | ||
|
c382d2430b | ||
|
77bc095cb4 | ||
|
0412f2dcbc | ||
|
3f56243b9b | ||
|
f1b780f2e7 | ||
|
31639cf6d5 | ||
|
c5bbea55d2 | ||
|
d28a7ba29e | ||
|
13a3cadc66 | ||
|
2821e85d06 | ||
|
182d868560 | ||
|
8b06b71275 | ||
|
9138b6d929 | ||
|
55da87044b | ||
|
139ec6bfe7 | ||
|
c931ff9dad | ||
|
9e0bb28fcb | ||
|
e298b95f54 | ||
|
4ad22c8418 | ||
|
9f091b033c | ||
|
e5a4f11591 | ||
|
f925ee9336 | ||
|
174fd8ca69 | ||
|
da14f3201a | ||
|
70ca8ccdee | ||
|
a6bdf0d803 | ||
|
031d8707e6 | ||
|
e417298237 | ||
|
363bf09254 | ||
|
4e8ec61e11 | ||
|
e67a0a27b4 | ||
|
b06dab11cd | ||
|
0dc851870e | ||
|
bd6e9c6b12 | ||
|
9b05154f9e | ||
|
7a76ebf786 | ||
|
3b9b44454b | ||
|
655ba010d9 | ||
|
c6b84caa19 | ||
|
2aadb491e9 | ||
|
e6884fe334 | ||
|
7995c78fbf | ||
|
168c9879a0 | ||
|
99d383dca7 | ||
|
6a0153d46c | ||
|
cc9f3cfa0e | ||
|
006db23dab | ||
|
41c3e670d9 | ||
|
15a87f7353 | ||
|
15fc36c7d0 | ||
|
1592f18501 | ||
|
28b1fe7134 |
1
.gitignore
vendored
1
.gitignore
vendored
@@ -1,2 +1,3 @@
|
||||
debian/tools/wine
|
||||
*.pyc
|
||||
.patchupdate.cache
|
||||
|
82
README.md
82
README.md
@@ -1,25 +1,26 @@
|
||||
What is Wine Staging?
|
||||
=====================
|
||||
---------------------
|
||||
|
||||
**Warning: Do not report bugs at bugs.winehq.org when using this version!
|
||||
Please take a look [here](http://bugs.wine-staging.com) for more information
|
||||
about how to report bugs.**
|
||||
|
||||
**Wine Staging** (formerly wine-compholio) is a special wine version containing
|
||||
bug fixes and features that are not yet available in regular wine versions. The
|
||||
idea behind Wine Staging is to provide new features faster to end users and to
|
||||
bug fixes and features, which are not yet available in regular wine versions.
|
||||
The idea of Wine Staging is to provide new features faster to end users and to
|
||||
give developers the possibility to discuss and improve their patches before
|
||||
they are sent upstream. We also intend to create a community of wine developers
|
||||
to share experience and to make it easier for beginners to start hacking on
|
||||
wine.
|
||||
wine. More information about Wine Staging can also be found on our website
|
||||
[wine-staging.com](http://wine-staging.com).
|
||||
|
||||
Although we are reviewing all patches before adding them, you may encounter
|
||||
additional bugs, which are not present in regular wine. Make sure to report
|
||||
such issues in our bug tracker instead of winehq.org so that we can try to
|
||||
solve them in future versions. Thanks!
|
||||
Although we are reviewing and testing all patches before adding them, you may
|
||||
encounter additional bugs, which are not present in vanilla wine. Make sure to
|
||||
report such issues in our bug tracker instead of winehq.org so that we can try
|
||||
to solve them in future versions. Thanks!
|
||||
|
||||
How to install and use Wine Staging
|
||||
===================================
|
||||
-----------------------------------
|
||||
|
||||
Ready-to-use packages for Wine Staging are available for a variety
|
||||
of different Linux distributions directly for download. Just follow the
|
||||
@@ -36,69 +37,70 @@ Wine. All those differences are also documented on the
|
||||
|
||||
|
||||
Included bug fixes and improvements
|
||||
===================================
|
||||
-----------------------------------
|
||||
|
||||
**Bugfixes and features included in the next upcoming release [9]:**
|
||||
**Bug fixes and features in Wine Staging 1.7.41 [218]:**
|
||||
|
||||
* Add stub fltmgr.sys (filter manager driver) ([Wine Bug #23583](https://bugs.winehq.org/show_bug.cgi?id=23583))
|
||||
* Add stubs for Power[Set|Clear]Request
|
||||
* Avoid spam of FIXME messages for PsLookupProcessByProcessId stub ([Wine Bug #36821](https://bugs.winehq.org/show_bug.cgi?id=36821))
|
||||
* Don't return an error in WS_select when EINTR happens during timeout
|
||||
* Fix calculation of 3D sound source ([Wine Bug #38041](https://bugs.winehq.org/show_bug.cgi?id=38041))
|
||||
* Fix compatibility of Uplay with gnutls28 ([Wine Bug #38134](https://bugs.winehq.org/show_bug.cgi?id=38134))
|
||||
* Fix handling of ANSI NTLM credentials ([Wine Bug #37063](https://bugs.winehq.org/show_bug.cgi?id=37063))
|
||||
* Implement empty enumerator for IWiaDevMgr::EnumDeviceInfo ([Wine Bug #27775](https://bugs.winehq.org/show_bug.cgi?id=27775))
|
||||
* Software support for Environmental Audio Extensions (EAX)
|
||||
|
||||
|
||||
**Bugs fixed in Wine Staging 1.7.39 [205]:**
|
||||
*Note: The following list only contains features and bug fixes which are not
|
||||
yet available in vanilla Wine. They are removed from the list as soon as they
|
||||
are included upstream. The list also includes features and fixes from previous
|
||||
releases, take a look at the
|
||||
[changelog](https://github.com/wine-compholio/wine-staging/blob/master/debian/changelog)
|
||||
for more details.*
|
||||
|
||||
* Add Dynamic DST exceptions for Israel Standard Time ([Wine Bug #36374](https://bugs.winehq.org/show_bug.cgi?id=36374))
|
||||
* Add a ProfileList\<UserSID> registry subkey ([Wine Bug #15670](https://bugs.winehq.org/show_bug.cgi?id=15670))
|
||||
* Add default ACLs for user shell folders
|
||||
* Add implementation for CreateThreadpool ([Wine Bug #35192](https://bugs.winehq.org/show_bug.cgi?id=35192))
|
||||
* Add implementation for mfplat.MFTRegister ([Wine Bug #37811](https://bugs.winehq.org/show_bug.cgi?id=37811))
|
||||
* Add nvapi stubs required for GPU PhysX support
|
||||
* Add performance library registry keys needed by MS SQL Server Management Studio Express 2008 R2 ([Wine Bug #33661](https://bugs.winehq.org/show_bug.cgi?id=33661))
|
||||
* Add semi-stub for GetFileVersionInfoExA/W ([Wine Bug #38098](https://bugs.winehq.org/show_bug.cgi?id=38098))
|
||||
* Add semi-stub for GetFileVersionInfoSizeExA/W ([Wine Bug #38090](https://bugs.winehq.org/show_bug.cgi?id=38090))
|
||||
* Add stub fltmgr.sys (filter manager driver) ([Wine Bug #23583](https://bugs.winehq.org/show_bug.cgi?id=23583))
|
||||
* Add stub for D3DXComputeNormalMap
|
||||
* Add stub for D3DXComputeTangentFrameEx ([Wine Bug #31984](https://bugs.winehq.org/show_bug.cgi?id=31984))
|
||||
* Add stub for D3DXIntersect
|
||||
* Add stub for NtSetLdtEntries/ZwSetLdtEntries ([Wine Bug #26268](https://bugs.winehq.org/show_bug.cgi?id=26268))
|
||||
* Add stub for PowerCreateRequest
|
||||
* Add stub for WinSqmIsOptedIn ([Wine Bug #38388](https://bugs.winehq.org/show_bug.cgi?id=38388))
|
||||
* Add stub for gdiplus.GdipCreateEffect ([Wine Bug #32163](https://bugs.winehq.org/show_bug.cgi?id=32163))
|
||||
* Add stub for ntoskrnl.ExAcquireResourceExclusiveLite
|
||||
* Add stub for ntoskrnl.ExDeleteResourceLite
|
||||
* Add stub for ntoskrnl.ExReleaseResourceForThread
|
||||
* Add stub for ntoskrnl.KeWaitForMultipleObjects
|
||||
* Add stub for ntoskrnl.Mm{Map,Unmap}LockedPages
|
||||
* Add stub for ntoskrnl.PsRemoveLoadImageNotifyRoutine
|
||||
* Add stub for setupapi.SetupDiSelectBestCompatDrv ([Wine Bug #32088](https://bugs.winehq.org/show_bug.cgi?id=32088))
|
||||
* Add stub for wininet.ParseX509EncodedCertificateForListBoxEntry ([Wine Bug #29842](https://bugs.winehq.org/show_bug.cgi?id=29842))
|
||||
* Add stubs for D3DXCreateAnimationController interface
|
||||
* Add support for CopyFileEx progress callback ([Wine Bug #22692](https://bugs.winehq.org/show_bug.cgi?id=22692))
|
||||
* Add support for GetPropValue to PulseAudio backend
|
||||
* Add support for process specific debug channels
|
||||
* Add support for wbemprox Win32_SystemEnclosure table ([Wine Bug #34517](https://bugs.winehq.org/show_bug.cgi?id=34517))
|
||||
* Adobe Reader needs ITextSelection_fnGetDuplicate implementation
|
||||
* Allow selection of audio device for PulseAudio backend
|
||||
* Allow special characters in pipe names ([Wine Bug #28995](https://bugs.winehq.org/show_bug.cgi?id=28995))
|
||||
* Allow to cancel a file operation via progress callback ([Wine Bug #22690](https://bugs.winehq.org/show_bug.cgi?id=22690))
|
||||
* Allow to edit winecfg library override by double clicking
|
||||
* Allow to open files/directories without any access rights in order to query attributes
|
||||
* Allow to override number of quality levels for D3DMULTISAMPLE_NONMASKABLE. ([Wine Bug #12652](https://bugs.winehq.org/show_bug.cgi?id=12652))
|
||||
* Anno 1602 installer depends on Windows 98 behavior of SHFileOperationW ([Wine Bug #37916](https://bugs.winehq.org/show_bug.cgi?id=37916))
|
||||
* Audio stuttering and performance drops in multiple applications ([Wine Bug #30639](https://bugs.winehq.org/show_bug.cgi?id=30639))
|
||||
* Avoid crash when trying to bind mshtml event scripts to window ([Wine Bug #38419](https://bugs.winehq.org/show_bug.cgi?id=38419))
|
||||
* Avoid crashing when broken app tries to release surface although refcount is zero ([Wine Bug #18477](https://bugs.winehq.org/show_bug.cgi?id=18477))
|
||||
* Avoid race-conditions in NtReadFile() operations with write watches.
|
||||
* Avoid race-conditions of async WSARecv() operations with write watches.
|
||||
* Avoid race-conditions with write watches in WS2_async_accept.
|
||||
* Avoid unloading msctf library while textservices are activated ([Wine Bug #31579](https://bugs.winehq.org/show_bug.cgi?id=31579))
|
||||
* Avseq crashes when multisampling is enabled ([Wine Bug #31998](https://bugs.winehq.org/show_bug.cgi?id=31998))
|
||||
* Basic handling of write watches triggered while we're on the signal stack.
|
||||
* Basic support for CUDA
|
||||
* Black & White needs DXTn software decoding support ([Wine Bug #14939](https://bugs.winehq.org/show_bug.cgi?id=14939))
|
||||
* CPU-Z fails to start because GetLogicalProcessorInformationEx returns FALSE
|
||||
* ~~Child of Light expects FindConnectionPoint to succeed and increase the refcount~~ ([Wine Bug #36408](https://bugs.winehq.org/show_bug.cgi?id=36408))
|
||||
* Calculate msvcrt exponential math operations with higher precision ([Wine Bug #37149](https://bugs.winehq.org/show_bug.cgi?id=37149))
|
||||
* CreateProcess does not prioritize the working directory over the system search path ([Wine Bug #23934](https://bugs.winehq.org/show_bug.cgi?id=23934))
|
||||
* D3DCompileShader should filter specific warning messages ([Wine Bug #33770](https://bugs.winehq.org/show_bug.cgi?id=33770))
|
||||
* Do not append duplicate NULL characters when importing keys with regedit ([Wine Bug #37575](https://bugs.winehq.org/show_bug.cgi?id=37575))
|
||||
* Do not fail when a used context is passed to wglShareLists ([Wine Bug #11436](https://bugs.winehq.org/show_bug.cgi?id=11436))
|
||||
* EA Origin needs support for job objects ([Wine Bug #33723](https://bugs.winehq.org/show_bug.cgi?id=33723))
|
||||
* Emulate access to KI_USER_SHARED_DATA kernel page on x86_64 ([Wine Bug #33849](https://bugs.winehq.org/show_bug.cgi?id=33849))
|
||||
* Enforce that surfaces are flushed after ReleaseDC
|
||||
* Ensure NtProtectVirtualMemory and NtCreateSection are on separate pages ([Wine Bug #33162](https://bugs.winehq.org/show_bug.cgi?id=33162))
|
||||
@@ -111,7 +113,6 @@ Included bug fixes and improvements
|
||||
* Fix access violation when calling GetStringTypeW with NULL src. ([Wine Bug #37759](https://bugs.winehq.org/show_bug.cgi?id=37759))
|
||||
* Fix black screen on startup introduced by pixelformat changes. ([Wine Bug #35950](https://bugs.winehq.org/show_bug.cgi?id=35950))
|
||||
* Fix caps lock state issues with multiple processes ([Wine Bug #35907](https://bugs.winehq.org/show_bug.cgi?id=35907))
|
||||
* Fix check for end_frame in RtlUnwindEx on x86_64. ([Wine Bug #34254](https://bugs.winehq.org/show_bug.cgi?id=34254))
|
||||
* Fix comparison of punctuation characters in lstrcmp ([Wine Bug #10767](https://bugs.winehq.org/show_bug.cgi?id=10767))
|
||||
* Fix condition mask handling in RtlVerifyVersionInfo ([Wine Bug #36143](https://bugs.winehq.org/show_bug.cgi?id=36143))
|
||||
* Fix crash in Space Rangers2 caused by missing DXTn support ([Wine Bug #24983](https://bugs.winehq.org/show_bug.cgi?id=24983))
|
||||
@@ -119,21 +120,23 @@ Included bug fixes and improvements
|
||||
* Fix crash of Trine Demo on start ([Wine Bug #19231](https://bugs.winehq.org/show_bug.cgi?id=19231))
|
||||
* Fix crash of winedevice when relocation entry crosses page boundary ([Wine Bug #28254](https://bugs.winehq.org/show_bug.cgi?id=28254))
|
||||
* Fix cursor clip regression / broken raw input in multiple games ([Wine Bug #33479](https://bugs.winehq.org/show_bug.cgi?id=33479))
|
||||
* Fix device paths in HKLM\SYSTEM\MountedDevices ([Wine Bug #38235](https://bugs.winehq.org/show_bug.cgi?id=38235))
|
||||
* Fix flickering introduced by pixelformat changes. ([Wine Bug #35718](https://bugs.winehq.org/show_bug.cgi?id=35718))
|
||||
* Fix for ConnectNamedPort return value in overlapped mode ([Wine Bug #16550](https://bugs.winehq.org/show_bug.cgi?id=16550))
|
||||
* Fix for programs leaking wndproc slots ([Wine Bug #32451](https://bugs.winehq.org/show_bug.cgi?id=32451))
|
||||
* Fix graphical corruption in FarCry 3 with NVIDIA drivers ([Wine Bug #35062](https://bugs.winehq.org/show_bug.cgi?id=35062))
|
||||
* Fix gray screen on startup introduced by pixelformat changes. ([Wine Bug #35975](https://bugs.winehq.org/show_bug.cgi?id=35975))
|
||||
* Fix handling of ANSI NTLM credentials ([Wine Bug #37063](https://bugs.winehq.org/show_bug.cgi?id=37063))
|
||||
* Fix handling of empty section and key name for profile files. ([Wine Bug #8036](https://bugs.winehq.org/show_bug.cgi?id=8036))
|
||||
* Fix handling of invert_y in DrawTextExW ([Wine Bug #22109](https://bugs.winehq.org/show_bug.cgi?id=22109))
|
||||
* Fix handling of opening read-only files for FILE_DELETE_ON_CLOSE ([Wine Bug #38417](https://bugs.winehq.org/show_bug.cgi?id=38417))
|
||||
* Fix handling of window attributes for WS_EX_LAYERED | WS_EX_COMPOSITED ([Wine Bug #37876](https://bugs.winehq.org/show_bug.cgi?id=37876))
|
||||
* Fix issues with dragging layers between images in Adobe Photoshop 7.0 ([Wine Bug #12007](https://bugs.winehq.org/show_bug.cgi?id=12007))
|
||||
* Fix missing video introduced by pixelformat changes. ([Wine Bug #36900](https://bugs.winehq.org/show_bug.cgi?id=36900))
|
||||
* Fix multithreading issues with fullscreen clipping ([Wine Bug #38087](https://bugs.winehq.org/show_bug.cgi?id=38087))
|
||||
* Fix possible segfault in pulse_rd_loop of PulseAudio backend
|
||||
* Fix race-condition when threads are killed during shutdown
|
||||
* ~~Fix regression causing black screen on startup~~ ([Wine Bug #38248](https://bugs.winehq.org/show_bug.cgi?id=38248))
|
||||
* ~~Fix regression causing too dark/missing textures in several games~~ ([Wine Bug #38256](https://bugs.winehq.org/show_bug.cgi?id=38256))
|
||||
* Fix regression caused by blacklisting supported OpenGL extensions ([Wine Bug #38264](https://bugs.winehq.org/show_bug.cgi?id=38264))
|
||||
* Fix return value of ScrollWindowEx for invisible windows ([Wine Bug #37706](https://bugs.winehq.org/show_bug.cgi?id=37706))
|
||||
* Fix texture corruption in CSI: Fatal Conspiracy ([Wine Bug #33768](https://bugs.winehq.org/show_bug.cgi?id=33768))
|
||||
* Fix unintentional leaks with ntdll internals
|
||||
@@ -149,21 +152,23 @@ Included bug fixes and improvements
|
||||
* Graphical issues in Inquisitor ([Wine Bug #32490](https://bugs.winehq.org/show_bug.cgi?id=32490))
|
||||
* Hearthstone fails to start ([Wine Bug #36216](https://bugs.winehq.org/show_bug.cgi?id=36216))
|
||||
* IOCTL_DVD_READ_STRUCTURE expects the wrong size of output buffer for some requests ([Wine Bug #37767](https://bugs.winehq.org/show_bug.cgi?id=37767))
|
||||
* Ignore unsupported alpha channels in TIFF decoder ([Wine Bug #38027](https://bugs.winehq.org/show_bug.cgi?id=38027))
|
||||
* Ignore unsupported flags for CoInternetSetFeatureEnabled ([Wine Bug #35197](https://bugs.winehq.org/show_bug.cgi?id=35197))
|
||||
* Implement D3DXGetShaderOutputSemantics
|
||||
* Implement DDENUMSURFACES_CANBECREATED in IDirectDraw7::EnumSurfaces ([Wine Bug #17233](https://bugs.winehq.org/show_bug.cgi?id=17233))
|
||||
* Implement ID3DXEffect::FindNextValidTechnique ([Wine Bug #34101](https://bugs.winehq.org/show_bug.cgi?id=34101))
|
||||
* Implement IDXGIOutput::GetDesc
|
||||
* Implement SetFileInformationByHandle
|
||||
* ~~Implement SetupLogError[A|W] and Setup[Open|Close]Log~~
|
||||
* Implement a Microsoft Yahei replacement font ([Wine Bug #13829](https://bugs.winehq.org/show_bug.cgi?id=13829))
|
||||
* Implement additional stubs for vcomp dlls ([Wine Bug #31640](https://bugs.winehq.org/show_bug.cgi?id=31640))
|
||||
* Implement an Arial replacement font ([Wine Bug #32323](https://bugs.winehq.org/show_bug.cgi?id=32323))
|
||||
* Implement combase.WindowsSubstring function
|
||||
* Implement empty enumerator for IWiaDevMgr::EnumDeviceInfo ([Wine Bug #27775](https://bugs.winehq.org/show_bug.cgi?id=27775))
|
||||
* Implement exclusive mode in PulseAudio backend ([Wine Bug #37042](https://bugs.winehq.org/show_bug.cgi?id=37042))
|
||||
* Implement locking and synchronization of key states ([Wine Bug #31899](https://bugs.winehq.org/show_bug.cgi?id=31899))
|
||||
* Implement mscoree._CorValidateImage for mono runtime
|
||||
* Implement ntoskrnl driver testing framework.
|
||||
* Implement ntoskrnl.KeInitializeMutex
|
||||
* Implement proper handling of CLI .NET images in Wine library loader
|
||||
* Implement stub for ntoskrnl.IoGetAttachedDeviceReference
|
||||
* Implement stub for ntoskrnl.KeDelayExecutionThread.
|
||||
* Implement stubs for ntoskrnl.Ex{Acquire,Release}FastMutexUnsafe
|
||||
@@ -176,8 +181,6 @@ Included bug fixes and improvements
|
||||
* Improve stubs for AEV_{Get,Set}MasterVolumeLevel
|
||||
* Improve stubs for AEV_{Get,Set}Mute
|
||||
* Improvement for heap allocation performance
|
||||
* Increase wineconsole commandline buffer size ([Wine Bug #34814](https://bugs.winehq.org/show_bug.cgi?id=34814))
|
||||
* Invalidate key state cache globally after calling LL hooks ([Wine Bug #29871](https://bugs.winehq.org/show_bug.cgi?id=29871))
|
||||
* Jedi Knight: Dark Forces II crashes with winmm set to native ([Wine Bug #37983](https://bugs.winehq.org/show_bug.cgi?id=37983))
|
||||
* Lego Stunt Rally requires DXTn software de/encoding support ([Wine Bug #25486](https://bugs.winehq.org/show_bug.cgi?id=25486))
|
||||
* Lockfree algorithm for filedescriptor cache (improves file access speed)
|
||||
@@ -193,18 +196,23 @@ Included bug fixes and improvements
|
||||
* Prevent window managers from grouping all wine programs together ([Wine Bug #32699](https://bugs.winehq.org/show_bug.cgi?id=32699))
|
||||
* Process APC calls before starting process
|
||||
* Process Hacker 2.x needs ntoskrnl.ProbeForRead ([Wine Bug #38103](https://bugs.winehq.org/show_bug.cgi?id=38103))
|
||||
* Properly track handle count of wineserver objects
|
||||
* Properly handle closing sockets during a select call ([Wine Bug #38399](https://bugs.winehq.org/show_bug.cgi?id=38399))
|
||||
* Python PIP needs better NtQueryInformationJobObject stub
|
||||
* Recognize localhost as local machine in wbemprox
|
||||
* Reduced SetTimer minimum value from 10 ms to 5 ms (improves Silverlight framerates)
|
||||
* Reset device state in SysKeyboard*Impl_Acquire ([Wine Bug #11607](https://bugs.winehq.org/show_bug.cgi?id=11607))
|
||||
* Return an error when trying to open a terminated process ([Wine Bug #37087](https://bugs.winehq.org/show_bug.cgi?id=37087))
|
||||
* Return correct IMediaSeeking stream positions in quartz ([Wine Bug #23174](https://bugs.winehq.org/show_bug.cgi?id=23174))
|
||||
* Return correct device type for cd devices without medium
|
||||
* Return correct values for GetThreadTimes function ([Wine Bug #20230](https://bugs.winehq.org/show_bug.cgi?id=20230))
|
||||
* Return more context attributes in schan_InitializeSecurityContextW ([Wine Bug #37527](https://bugs.winehq.org/show_bug.cgi?id=37527))
|
||||
* SO_CONNECT_TIME returns the appropriate time
|
||||
* Scrolling causes mouse and screen to lock in Call to Power II ([Wine Bug #34559](https://bugs.winehq.org/show_bug.cgi?id=34559))
|
||||
* Send WM_PAINT event during dialog creation ([Wine Bug #35652](https://bugs.winehq.org/show_bug.cgi?id=35652))
|
||||
* Set last error when GetRawInputDeviceList fails ([Wine Bug #37667](https://bugs.winehq.org/show_bug.cgi?id=37667))
|
||||
* Show unmounted devices in winecfg and allow changing the unix path
|
||||
* Software support for Environmental Audio Extensions (EAX)
|
||||
* Super Mario 3: Mario Forever fails to load keyboard mapping from profile files. ([Wine Bug #18099](https://bugs.winehq.org/show_bug.cgi?id=18099))
|
||||
* Support for 8bpp grayscale TIFF images with 8bpp alpha channel ([Wine Bug #38027](https://bugs.winehq.org/show_bug.cgi?id=38027))
|
||||
* Support for AllocateAndGetTcpExTableFromStack ([Wine Bug #34372](https://bugs.winehq.org/show_bug.cgi?id=34372))
|
||||
* Support for BindImageEx ([Wine Bug #3591](https://bugs.winehq.org/show_bug.cgi?id=3591))
|
||||
* Support for CSMT (command stream) to increase graphic performance ([Wine Bug #11674](https://bugs.winehq.org/show_bug.cgi?id=11674))
|
||||
@@ -233,11 +241,11 @@ Included bug fixes and improvements
|
||||
* Support for PulseAudio backend for audio ([Wine Bug #10495](https://bugs.winehq.org/show_bug.cgi?id=10495))
|
||||
* Support for RtlDecompressBuffer ([Wine Bug #37449](https://bugs.winehq.org/show_bug.cgi?id=37449))
|
||||
* Support for SHCreateSessionKey ([Wine Bug #35630](https://bugs.winehq.org/show_bug.cgi?id=35630))
|
||||
* ~~Support for TOOLTIPS_GetTipText edge cases~~ ([Wine Bug #30648](https://bugs.winehq.org/show_bug.cgi?id=30648))
|
||||
* Support for TransmitFile ([Wine Bug #5048](https://bugs.winehq.org/show_bug.cgi?id=5048))
|
||||
* Support for WTSEnumerateProcessesW ([Wine Bug #29903](https://bugs.winehq.org/show_bug.cgi?id=29903))
|
||||
* Support for extra large and jumbo icon lists in shell32 ([Wine Bug #24721](https://bugs.winehq.org/show_bug.cgi?id=24721))
|
||||
* Support for inherited file ACLs ([Wine Bug #34406](https://bugs.winehq.org/show_bug.cgi?id=34406))
|
||||
* Support for linux priority levels for faster performance
|
||||
* Support for loader dll redirections
|
||||
* Support for named pipe message mode (Linux only) ([Wine Bug #17195](https://bugs.winehq.org/show_bug.cgi?id=17195))
|
||||
* Support for non-blocking SIO_ADDRESS_LIST_CHANGE requests ([Wine Bug #38062](https://bugs.winehq.org/show_bug.cgi?id=38062))
|
||||
|
55
debian/changelog
vendored
55
debian/changelog
vendored
@@ -1,4 +1,38 @@
|
||||
wine-staging (1.7.40) UNRELEASED; urgency=low
|
||||
wine-staging (1.7.41) unstable; urgency=low
|
||||
* Updated server-PeekMessage patchset to reset message filter in accept_hardware_message call (fixes Wine Staging Bug #211).
|
||||
* Updated ntdll-FileDispositionInformation patchset to block deleting mapped files (by Qian Hong, fixes Wine Staging Bug #228).
|
||||
* Various improvements to the ACL patchsets.
|
||||
* Disable DXVA2 controls in winecfg when support is not compiled in.
|
||||
* Added patch to enable/disable EAX support via winecfg.
|
||||
* Added patch with stub for setupapi.SetupDiSetDeviceInstallParamsW.
|
||||
* Added first part of patchset containing various improvements for LsaLookupSids.
|
||||
* Added patch to calculate msvcrt exponential math operations with higher precision.
|
||||
* Added patch to fix regression caused by blacklisting supported OpenGL extensions.
|
||||
* Added patch to reset device state in SysKeyboard*Impl_Acquire.
|
||||
* Added patch to properly handle closing sockets during a select call.
|
||||
* Added patch for support of process specific debug channels.
|
||||
* Added patch to recognize localhost as local machine in wbemprox.
|
||||
* Added patch to implement support for wbemprox Win32_SystemEnclosure table.
|
||||
* Added patch to fix handling of opening read-only files for FILE_DELETE_ON_CLOSE.
|
||||
* Added patch for implementation of mfplat.MFTRegister.
|
||||
* Added patch for stub of ntdll.WinSqmIsOptedIn.
|
||||
* Added patch for ProfileList\<UserSID> registry subkey.
|
||||
* Added patch to avoid crash when trying to bind mshtml event scripts to window.
|
||||
* Added tests for RtlIpv6AddressToString and RtlIpv6AddressToStringEx.
|
||||
* Removed patches to fix invalid memory access in get_registry_locale_info (accepted upstream).
|
||||
* Removed patches to avoid repeated FIXMEs in PsLookupProcessByProcessId stub (accepted upstream).
|
||||
* Removed patches to return more context attributes in schan_InitializeSecurityContextW (accepted upstream).
|
||||
* Removed patches to allow NULL pointer as keystate in ToUnicodeEx (accepted upstream).
|
||||
* Removed patches to avoid returning an error in WS_select when EINTR happens during timeout (accepted upstream).
|
||||
* Partially remove advapi32-Revert_DACL patches.
|
||||
* Removed additional patches for job object support (accepted upstream).
|
||||
* Removed patchset to invalidate the key state cache after calling LL hooks (accepted upstream).
|
||||
* Removed patches for PowerRequest stub functions (accepted upstream).
|
||||
* Removed patch to fix compatibility with gnutls28 (accepted upstream).
|
||||
* Removed patch to increase wineconsole commandline buffer size (fixed upstream).
|
||||
-- Sebastian Lackner <sebastian@fds-team.de> Sun, 19 Apr 2015 01:16:43 +0200
|
||||
|
||||
wine-staging (1.7.40) unstable; urgency=low
|
||||
* Update dsound fast mixer patchset to use integer math.
|
||||
* Various improvements to Debian packaging files, pull request #310.
|
||||
* Added patch with stubs for Power[Set|Clear]Request.
|
||||
@@ -10,6 +44,20 @@ wine-staging (1.7.40) UNRELEASED; urgency=low
|
||||
* Added patch to fix return value of WS_select in case of EINTR during timeout.
|
||||
* Added patch to fix calculation of 3D sound source.
|
||||
* Added patch for stub of fltmgr.sys (filter manager driver).
|
||||
* Added patch to return correct device type for cd devices without medium.
|
||||
* Added patch to fix device paths in HKLM\SYSTEM\MountedDevices.
|
||||
* Added patch to show unmounted devices in winecfg and allow changing the unix path.
|
||||
* Added patch for support of 8bpp grayscale TIFF images with 8bpp alpha channel (replaces previous stub).
|
||||
* Added patch to implement support for linux priority levels (by Joakim Hernberg, various modifications by Sebastian Lackner).
|
||||
* Added patch to implement mscoree._CorValidateImage for mono runtime.
|
||||
* Added patch to implement proper handling of CLI .NET images in Wine library loader.
|
||||
* Added patch to stub ntoskrnl.PsRemoveLoadImageNotifyRoutine
|
||||
* Added patch to fix invalid memory access in get_registry_locale_info.
|
||||
* Added patch to allow to open files/directories without any access rights in order to query attributes.
|
||||
* Added patch to implement DDENUMSURFACES_CANBECREATED in IDirectDraw7::EnumSurfaces and fix some bugs.
|
||||
* Added patch to ignore unsupported job object restrictions.
|
||||
* Added patch to allow NULL pointer as keystate argument in ToUnicodeEx.
|
||||
* Added patch with stub for setupapi.SetupDiSelectBestCompatDrv.
|
||||
* Removed patch to fix regression causing black screen on startup (accepted upstream).
|
||||
* Removed patch to fix edge cases in TOOLTIPS_GetTipText (fixed upstream).
|
||||
* Removed patch for IConnectionPoint/INetworkListManagerEvents stub interface (accepted upstream).
|
||||
@@ -17,7 +65,10 @@ wine-staging (1.7.40) UNRELEASED; urgency=low
|
||||
* Removed patch with tests for GetFinalPathNameByHandleA/W (accepted upstream).
|
||||
* Removed patch to emulate 'mov Eb, Gb' instruction on x86 processor architecture (accepted upstream).
|
||||
* Removed patches for Setup*Log() functions (accepted upstream).
|
||||
-- Sebastian Lackner <sebastian@fds-team.de> Mon, 23 Mar 2015 16:12:20 +0100
|
||||
* Removed tests for job objects (accepted upstream).
|
||||
* Removed patch to fix various bugs in RtlUnwindEx on x86_64 (accepted upstream).
|
||||
* Partially removed patches for job objects (accepted upstream).
|
||||
-- Sebastian Lackner <sebastian@fds-team.de> Sun, 05 Apr 2015 01:28:45 +0200
|
||||
|
||||
wine-staging (1.7.39) unstable; urgency=low
|
||||
* Fix a build failure on MacOS caused by using of strndup in the server-Inherited_ACLs patchset.
|
||||
|
41
debian/control
vendored
41
debian/control
vendored
@@ -7,7 +7,6 @@ Build-Depends: autotools-dev,
|
||||
autoconf,
|
||||
bison,
|
||||
bsdmainutils,
|
||||
coreutils,
|
||||
debhelper (>= 7),
|
||||
docbook-to-man,
|
||||
docbook-utils,
|
||||
@@ -17,7 +16,6 @@ Build-Depends: autotools-dev,
|
||||
gawk,
|
||||
gcc-4.5 | gcc-4.7 | ubuntu-desktop (<< 1.207),
|
||||
gettext,
|
||||
gzip,
|
||||
libacl1-dev,
|
||||
libasound2-dev,
|
||||
libcapi20-dev,
|
||||
@@ -63,12 +61,13 @@ Build-Depends: autotools-dev,
|
||||
libxxf86vm-dev,
|
||||
linux-kernel-headers,
|
||||
linux-libc-dev,
|
||||
patch,
|
||||
perl,
|
||||
prelink,
|
||||
quilt (>= 0.46-7~),
|
||||
sharutils,
|
||||
unixodbc-dev,
|
||||
x11proto-xinerama-dev
|
||||
Standards-Version: 3.9.2
|
||||
Standards-Version: 3.9.5
|
||||
|
||||
Package: wine-staging-i386
|
||||
Architecture: i386
|
||||
@@ -255,6 +254,40 @@ Description: special build of the popular Wine software
|
||||
This package includes debugging symbols useful for reporting crashes and other
|
||||
failures.
|
||||
|
||||
Package: wine-staging-compat
|
||||
Architecture: i386 amd64
|
||||
Depends: wine-staging, ${misc:Depends}
|
||||
Section: otherosfs
|
||||
Priority: optional
|
||||
Replaces: wine, wine1.4, wine1.5, wine1.6, wine1.7, wine-i386, wine1.4-i386,
|
||||
wine1.5-i386, wine1.6-i386, wine1.7-i386, ine-amd64, wine1.4-amd64,
|
||||
wine1.5-amd64, wine1.6-amd64, wine1.7-amd64
|
||||
Conflicts: wine, wine-i386, wine-amd64
|
||||
Provides: wine, wine1.4, wine1.5, wine1.6, wine1.7, wine-i386, wine1.4-i386,
|
||||
wine1.5-i386, wine1.6-i386, wine1.7-i386, wine-amd64 [amd64],
|
||||
wine1.4-amd64 [amd64], wine1.5-amd64 [amd64], wine1.6-amd64 [amd64],
|
||||
wine1.7-amd64 [amd64]
|
||||
Description: special build of the popular Wine software
|
||||
The Staging Edition is a special build of the popular Wine software
|
||||
with patches representing our current staging tree for Wine.
|
||||
.
|
||||
Microsoft Windows Compatibility Layer (Binary Emulator and Library)
|
||||
Wine is a compatibility layer for running Windows applications on Linux.
|
||||
Applications are run at full speed without the need of cpu emulation. Wine
|
||||
does not require Microsoft Windows, however it can use native system dll
|
||||
files in place of its own if they are available.
|
||||
.
|
||||
This package includes a program loader for running unmodified Windows
|
||||
executables as well as the Wine project's free version of the Windows API
|
||||
for running programs ported from Windows.
|
||||
.
|
||||
This package is based on a recent Wine beta. While many more applications
|
||||
will work, there may be some loss of functionality compared with the stable
|
||||
release provided by the regular wine package.
|
||||
.
|
||||
This compatibility package allows to use Wine Staging system-wide as
|
||||
the default Wine version.
|
||||
|
||||
Package: wine-compholio
|
||||
Architecture: i386 amd64
|
||||
Depends: wine-staging, ${misc:Depends}
|
||||
|
5
debian/rules
vendored
5
debian/rules
vendored
@@ -56,18 +56,23 @@ override_dh_install:
|
||||
|
||||
# Create compatibility symlinks
|
||||
mkdir -p debian/wine-compholio/opt/wine-compholio/bin
|
||||
mkdir -p debian/wine-staging-compat/usr/bin
|
||||
|
||||
for _file in $$(ls "debian/wine-staging/opt/wine-staging/bin"); do \
|
||||
ln -s "/opt/wine-staging/bin/$$_file" "debian/wine-compholio/opt/wine-compholio/bin/$$_file"; \
|
||||
ln -s "/opt/wine-staging/bin/$$_file" "debian/wine-staging-compat/usr/bin/$$_file"; \
|
||||
done
|
||||
|
||||
# Architecture specific compatibility symlinks
|
||||
ifeq ($(DEB_HOST_ARCH),amd64)
|
||||
for _file in wine wine-preloader wine64 wine64-preloader; do \
|
||||
ln -s "/opt/wine-staging/bin/$$_file" "debian/wine-compholio/opt/wine-compholio/bin/$$_file"; \
|
||||
ln -s "/opt/wine-staging/bin/$$_file" "debian/wine-staging-compat/usr/bin/$$_file"; \
|
||||
done
|
||||
else
|
||||
for _file in wine wine-preloader; do \
|
||||
ln -s "/opt/wine-staging/bin/$$_file" "debian/wine-compholio/opt/wine-compholio/bin/$$_file"; \
|
||||
ln -s "/opt/wine-staging/bin/$$_file" "debian/wine-staging-compat/usr/bin/$$_file"; \
|
||||
done
|
||||
endif
|
||||
|
||||
|
70
debian/tools/Makefile.in
vendored
70
debian/tools/Makefile.in
vendored
@@ -1,70 +0,0 @@
|
||||
#
|
||||
# This file is automatically generated, DO NOT EDIT!
|
||||
#
|
||||
|
||||
.NOTPARALLEL:
|
||||
|
||||
CURDIR ?= ${{.CURDIR}}
|
||||
PATCH := $(CURDIR)/../debian/tools/gitapply.sh
|
||||
APPLY = (cd "$(DESTDIR)" && $(PATCH))
|
||||
APPLY_FILE = @echo "Applying $(1)"; $(APPLY) < "$(CURDIR)/$(1)"
|
||||
|
||||
#
|
||||
# This Makefile understands the following targets:
|
||||
#
|
||||
# install (default): apply patches to directory provided by DESTDIR
|
||||
# install-git: as above, but use 'git am' to apply the patches
|
||||
# series: create a 'series' file containing the patch order
|
||||
# clean: delete autogenerated and temporary files
|
||||
#
|
||||
|
||||
PATCHLIST := \
|
||||
{patchlist}
|
||||
|
||||
.PHONY: install
|
||||
install: $(PATCHLIST)
|
||||
cat *.ok | sort | $(CURDIR)/../debian/tools/patchlist.sh | $(APPLY)
|
||||
cd $(DESTDIR) && autoreconf -f
|
||||
cd $(DESTDIR) && ./tools/make_requests
|
||||
|
||||
.PHONY: install-git
|
||||
install-git: PATCH := git am
|
||||
install-git: install
|
||||
|
||||
series: APPLY_FILE = @echo "$(1)" >> series
|
||||
series: $(PATCHLIST)
|
||||
@cat *.ok | sort | $(CURDIR)/../debian/tools/patchlist.sh > patchlist.diff
|
||||
@echo "patchlist.diff" >> series
|
||||
@( \
|
||||
echo ""; \
|
||||
echo "The 'series' file was created in current directory. Please note that"; \
|
||||
echo "'patchlist.diff' is autogenerated based on your selection of patches and not"; \
|
||||
echo "included in this repository - keep in mind to update it on every release."; \
|
||||
echo ""; \
|
||||
echo "Moreover, depending on which patches you have selected, you will have to run"; \
|
||||
echo "'autoreconf -f' and/or './tools/make_requests' after applying them."; \
|
||||
echo ""; \
|
||||
binary=0; \
|
||||
while IFS= read -r line; do \
|
||||
if grep -q "^GIT binary patch" "$$line"; then \
|
||||
binary=1; break; \
|
||||
fi \
|
||||
done < series; \
|
||||
if [ "$$binary" -ne 0 ]; then \
|
||||
echo "The following files contain binary patches and cannot be applied with the"; \
|
||||
echo "regular 'patch' commandline tool:"; \
|
||||
echo ""; \
|
||||
while IFS= read -r line; do \
|
||||
grep -q "^GIT binary patch" "$$line" && echo "$$line"; \
|
||||
done < series; \
|
||||
echo ""; \
|
||||
echo "Please use 'git apply' or '../debian/tools/gitapply.sh' from this repository."; \
|
||||
echo ""; \
|
||||
fi \
|
||||
)
|
||||
|
||||
.PHONY: clean
|
||||
clean:
|
||||
rm -f series patchlist.diff
|
||||
rm -f *.ok
|
||||
|
21
debian/tools/README.md.in
vendored
21
debian/tools/README.md.in
vendored
@@ -1,25 +1,26 @@
|
||||
What is Wine Staging?
|
||||
=====================
|
||||
---------------------
|
||||
|
||||
**Warning: Do not report bugs at bugs.winehq.org when using this version!
|
||||
Please take a look [here](http://bugs.wine-staging.com) for more information
|
||||
about how to report bugs.**
|
||||
|
||||
**Wine Staging** (formerly wine-compholio) is a special wine version containing
|
||||
bug fixes and features that are not yet available in regular wine versions. The
|
||||
idea behind Wine Staging is to provide new features faster to end users and to
|
||||
bug fixes and features, which are not yet available in regular wine versions.
|
||||
The idea of Wine Staging is to provide new features faster to end users and to
|
||||
give developers the possibility to discuss and improve their patches before
|
||||
they are sent upstream. We also intend to create a community of wine developers
|
||||
to share experience and to make it easier for beginners to start hacking on
|
||||
wine.
|
||||
wine. More information about Wine Staging can also be found on our website
|
||||
[wine-staging.com](http://wine-staging.com).
|
||||
|
||||
Although we are reviewing all patches before adding them, you may encounter
|
||||
additional bugs, which are not present in regular wine. Make sure to report
|
||||
such issues in our bug tracker instead of winehq.org so that we can try to
|
||||
solve them in future versions. Thanks!
|
||||
Although we are reviewing and testing all patches before adding them, you may
|
||||
encounter additional bugs, which are not present in vanilla wine. Make sure to
|
||||
report such issues in our bug tracker instead of winehq.org so that we can try
|
||||
to solve them in future versions. Thanks!
|
||||
|
||||
How to install and use Wine Staging
|
||||
===================================
|
||||
-----------------------------------
|
||||
|
||||
Ready-to-use packages for Wine Staging are available for a variety
|
||||
of different Linux distributions directly for download. Just follow the
|
||||
@@ -36,7 +37,7 @@ Wine. All those differences are also documented on the
|
||||
|
||||
|
||||
Included bug fixes and improvements
|
||||
===================================
|
||||
-----------------------------------
|
||||
|
||||
{fixes}
|
||||
|
||||
|
4
debian/tools/patchinstall.sh.in
vendored
4
debian/tools/patchinstall.sh.in
vendored
@@ -175,7 +175,7 @@ if test "$backend" = "patch"; then
|
||||
patch_apply_file ()
|
||||
{{
|
||||
echo "Applying $1"
|
||||
if ! "$patchdir/../debian/tools/gitapply.sh" $gitapply_args < "$1"; then
|
||||
if ! "$patchdir/gitapply.sh" $gitapply_args < "$1"; then
|
||||
abort "Failed to apply patch, aborting!"
|
||||
fi
|
||||
}}
|
||||
@@ -201,7 +201,7 @@ elif test "$backend" = "epatch"; then
|
||||
shortname="$(basename "$1")"
|
||||
if grep -q "^GIT binary patch" "$1"; then
|
||||
ebegin "Applying $shortname"
|
||||
"$patchdir/../debian/tools/gitapply.sh" $gitapply_args < "$1" || \
|
||||
"$patchdir/gitapply.sh" $gitapply_args < "$1" || \
|
||||
die "Failed Patch: $1!"
|
||||
eend
|
||||
|
||||
|
48
debian/tools/patchupdate.py
vendored
48
debian/tools/patchupdate.py
vendored
@@ -47,6 +47,8 @@ latest_wine_commit = None
|
||||
cached_patch_result = {}
|
||||
|
||||
class config(object):
|
||||
path_cache = ".patchupdate.cache"
|
||||
|
||||
path_patches = "patches"
|
||||
path_changelog = "debian/changelog"
|
||||
path_wine = "debian/tools/wine"
|
||||
@@ -115,8 +117,9 @@ def _load_dict(filename):
|
||||
|
||||
def _save_dict(filename, value):
|
||||
"""Save a Python dictionary object to a file."""
|
||||
with open(filename, "wb") as fp:
|
||||
with open("%s.new" % filename, "wb") as fp:
|
||||
pickle.dump(value, fp, pickle.HIGHEST_PROTOCOL)
|
||||
os.rename("%s.new" % filename, filename)
|
||||
|
||||
def _sha256(fp):
|
||||
"""Calculate sha256sum from a file descriptor."""
|
||||
@@ -320,7 +323,7 @@ def read_patchset(revision = None):
|
||||
if revision is None:
|
||||
once = True
|
||||
for bugid, bug in sorted(_winebugs_query(all_bugids).items()):
|
||||
if bug['bug_status'] not in ["UNCONFIRMED", "NEW", "REOPENED"]:
|
||||
if bug['bug_status'] not in ["UNCONFIRMED", "NEW", "ASSIGNED", "REOPENED"]:
|
||||
if once:
|
||||
print ""
|
||||
print "WARNING: The following bugs might require attention:"
|
||||
@@ -364,7 +367,7 @@ def contains_binary_patch(all_patches, indices, filename):
|
||||
return False
|
||||
|
||||
def get_wine_file(filename):
|
||||
"""Return the hash and optionally the content of a file."""
|
||||
"""Return the content of a file."""
|
||||
entry = "%s:%s" % (latest_wine_commit, filename)
|
||||
result = tempfile.NamedTemporaryFile()
|
||||
try:
|
||||
@@ -501,6 +504,7 @@ def generate_script(all_patches):
|
||||
modified_files[f].append(i)
|
||||
|
||||
# Check dependencies
|
||||
dependency_cache = _load_dict(config.path_cache)
|
||||
pool = multiprocessing.pool.ThreadPool(processes=4)
|
||||
try:
|
||||
for filename, indices in modified_files.iteritems():
|
||||
@@ -513,8 +517,28 @@ def generate_script(all_patches):
|
||||
continue
|
||||
|
||||
original_content = get_wine_file(filename)
|
||||
original_hash = _sha256(original_content)
|
||||
selected_patches = select_patches(all_patches, indices, filename)
|
||||
|
||||
# Generate a unique id based on the original content, the selected patches
|
||||
# and the dependency information. Since this information only has to be compared
|
||||
# we can throw it into a single hash.
|
||||
m = hashlib.sha256()
|
||||
m.update(original_hash)
|
||||
for i in indices:
|
||||
m.update("P%s" % selected_patches[i][0])
|
||||
for j in indices:
|
||||
if causal_time_smaller(all_patches[j].verify_time, all_patches[i].verify_time):
|
||||
m.update("D%s" % selected_patches[j][0])
|
||||
unique_hash = m.digest()
|
||||
|
||||
# Skip checks if it matches the information from the cache
|
||||
try:
|
||||
if dependency_cache[filename] == unique_hash:
|
||||
continue
|
||||
except KeyError:
|
||||
pass
|
||||
|
||||
# Show a progress bar while applying the patches - this task might take some time
|
||||
chunk_size = 20
|
||||
with progressbar.ProgressBar(desc=filename, total=2 ** len(indices) / chunk_size) as progress:
|
||||
@@ -532,7 +556,7 @@ def generate_script(all_patches):
|
||||
|
||||
try:
|
||||
original = original_content
|
||||
for i, patch in set_apply:
|
||||
for i, _ in set_apply:
|
||||
original = patchutils.apply_patch(original, selected_patches[i][1], fuzz=0)
|
||||
except patchutils.PatchApplyError:
|
||||
return False
|
||||
@@ -552,8 +576,13 @@ def generate_script(all_patches):
|
||||
raise PatchUpdaterError("Changes to file %s don't apply: %s" %
|
||||
(filename, ", ".join([all_patches[i].name for i in indices])))
|
||||
progress.update(k)
|
||||
|
||||
# Update the dependency cache
|
||||
dependency_cache[filename] = unique_hash
|
||||
|
||||
finally:
|
||||
pool.close()
|
||||
_save_dict(config.path_cache, dependency_cache)
|
||||
|
||||
# Generate code for helper functions
|
||||
lines = []
|
||||
@@ -676,13 +705,20 @@ def generate_markdown(all_patches, stable_patches, stable_compholio_version):
|
||||
# Generate information for current version
|
||||
lines = []
|
||||
if len(new_fixes):
|
||||
lines.append("**Bugfixes and features included in the next upcoming release [%d]:**" % len(new_fixes))
|
||||
lines.append("**Bug fixes and features included in the next upcoming release [%d]:**" % len(new_fixes))
|
||||
lines.append("")
|
||||
for mode, bugid, bugname in sorted(new_fixes, key=lambda x: x[2]):
|
||||
lines.append(_format_bug(mode, bugid, bugname))
|
||||
lines.append("")
|
||||
lines.append("")
|
||||
lines.append("**Bugs fixed in Wine Staging %s [%d]:**" % (stable_compholio_version, len(old_fixes)))
|
||||
lines.append("**Bug fixes and features in Wine Staging %s [%d]:**" % (stable_compholio_version, len(old_fixes)))
|
||||
lines.append("")
|
||||
lines.append("*Note: The following list only contains features and bug fixes which are not")
|
||||
lines.append("yet available in vanilla Wine. They are removed from the list as soon as they")
|
||||
lines.append("are included upstream. The list also includes features and fixes from previous")
|
||||
lines.append("releases, take a look at the")
|
||||
lines.append("[changelog](https://github.com/wine-compholio/wine-staging/blob/master/debian/changelog)")
|
||||
lines.append("for more details.*")
|
||||
lines.append("")
|
||||
for mode, bugid, bugname in sorted(old_fixes, key=lambda x: x[2]):
|
||||
lines.append(_format_bug(mode, bugid, bugname))
|
||||
|
11
debian/tools/progressbar.py
vendored
11
debian/tools/progressbar.py
vendored
@@ -29,9 +29,14 @@ import termios
|
||||
def _sig_winch(signum=None, frame=None):
|
||||
"""Signal handler for SIGWINCH."""
|
||||
global _term_width
|
||||
h, w, hp, wp = struct.unpack('HHHH', fcntl.ioctl(sys.stdout.fileno(),
|
||||
termios.TIOCGWINSZ, struct.pack('HHHH', 0, 0, 0, 0)))
|
||||
_term_width = w
|
||||
try:
|
||||
h, w, hp, wp = struct.unpack('HHHH', fcntl.ioctl(sys.stdout.fileno(),
|
||||
termios.TIOCGWINSZ, struct.pack('HHHH', 0, 0, 0, 0)))
|
||||
_term_width = w
|
||||
except IOError:
|
||||
# ignore 'IOError: [Errno 25] Inappropriate ioctl for device',
|
||||
# which can occur when resizing the window while the output is redirected
|
||||
pass
|
||||
|
||||
try:
|
||||
_sig_winch()
|
||||
|
3
debian/wine-staging-amd64.lintian-overrides
vendored
Normal file
3
debian/wine-staging-amd64.lintian-overrides
vendored
Normal file
@@ -0,0 +1,3 @@
|
||||
# Wine preloader needs static linking to reserve memory and work properly, see
|
||||
# the comments at loader/preloader.c for a fuller explanation
|
||||
wine-staging-amd64 binary: statically-linked-binary opt/wine-staging/bin/wine64-preloader
|
3
debian/wine-staging-i386.lintian-overrides
vendored
Normal file
3
debian/wine-staging-i386.lintian-overrides
vendored
Normal file
@@ -0,0 +1,3 @@
|
||||
# Wine preloader needs static linking to reserve memory and work properly, see
|
||||
# the comments at loader/preloader.c for a fuller explanation
|
||||
wine-staging-i386 binary: statically-linked-binary opt/wine-staging/bin/wine-preloader
|
@@ -0,0 +1,31 @@
|
||||
From be28c746d013c16fa6c2e50f5f9debc45d39d81b Mon Sep 17 00:00:00 2001
|
||||
From: Qian Hong <qhong@codeweavers.com>
|
||||
Date: Tue, 7 Apr 2015 13:18:31 +0800
|
||||
Subject: advapi32: Initialize buffer length to zero in LsaLookupSids to
|
||||
prevent crash. (try 2)
|
||||
|
||||
Superseded 110588-110594
|
||||
|
||||
Try 2:
|
||||
- Use RtlInitUnicodeStringEx to simplify code when possible. Same for
|
||||
other patches in this series. (Thanks Nikolay)
|
||||
---
|
||||
dlls/advapi32/lsa.c | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/dlls/advapi32/lsa.c b/dlls/advapi32/lsa.c
|
||||
index 2a8b791..69c29c5 100644
|
||||
--- a/dlls/advapi32/lsa.c
|
||||
+++ b/dlls/advapi32/lsa.c
|
||||
@@ -502,7 +502,7 @@ NTSTATUS WINAPI LsaLookupSids(
|
||||
{
|
||||
(*Names)[i].Use = SidTypeUnknown;
|
||||
(*Names)[i].DomainIndex = -1;
|
||||
- (*Names)[i].Name.Buffer = NULL;
|
||||
+ RtlInitUnicodeStringEx(&(*Names)[i].Name, NULL);
|
||||
|
||||
memset(&(*ReferencedDomains)->Domains[i], 0, sizeof(LSA_TRUST_INFORMATION));
|
||||
|
||||
--
|
||||
2.3.5
|
||||
|
@@ -0,0 +1,47 @@
|
||||
From 246cb6b72666dcb77fb2f553d318d7dabbe8811d Mon Sep 17 00:00:00 2001
|
||||
From: Qian Hong <qhong@codeweavers.com>
|
||||
Date: Tue, 7 Apr 2015 13:18:47 +0800
|
||||
Subject: advapi32: Prepend a hidden LSA_TRUST_INFORMATION in LsaLookupSids to
|
||||
avoid crash when Domains[-1] incorrectly accessed by application. (try 2)
|
||||
|
||||
---
|
||||
dlls/advapi32/lsa.c | 10 +++++++---
|
||||
1 file changed, 7 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/dlls/advapi32/lsa.c b/dlls/advapi32/lsa.c
|
||||
index 69c29c5..dfe25b3 100644
|
||||
--- a/dlls/advapi32/lsa.c
|
||||
+++ b/dlls/advapi32/lsa.c
|
||||
@@ -488,14 +488,17 @@ NTSTATUS WINAPI LsaLookupSids(
|
||||
if (!(*Names = heap_alloc(name_fullsize))) return STATUS_NO_MEMORY;
|
||||
/* maximum count of stored domain infos is Count, allocate it like that cause really needed
|
||||
count could only be computed after sid data is retrieved */
|
||||
- domain_fullsize = sizeof(LSA_REFERENCED_DOMAIN_LIST) + sizeof(LSA_TRUST_INFORMATION)*Count;
|
||||
+ domain_fullsize = sizeof(LSA_REFERENCED_DOMAIN_LIST) + sizeof(LSA_TRUST_INFORMATION) * (Count + 1);
|
||||
if (!(*ReferencedDomains = heap_alloc(domain_fullsize)))
|
||||
{
|
||||
heap_free(*Names);
|
||||
return STATUS_NO_MEMORY;
|
||||
}
|
||||
(*ReferencedDomains)->Entries = 0;
|
||||
- (*ReferencedDomains)->Domains = (LSA_TRUST_INFORMATION*)((char*)*ReferencedDomains + sizeof(LSA_REFERENCED_DOMAIN_LIST));
|
||||
+ (*ReferencedDomains)->Domains = (LSA_TRUST_INFORMATION*)((char*)*ReferencedDomains +
|
||||
+ sizeof(LSA_REFERENCED_DOMAIN_LIST) + sizeof(LSA_TRUST_INFORMATION));
|
||||
+ (*ReferencedDomains)->Domains[-1].Sid = NULL;
|
||||
+ RtlInitUnicodeStringEx(&(*ReferencedDomains)->Domains[-1].Name, NULL);
|
||||
|
||||
/* Get full names data length and full length needed to store domain name and SID */
|
||||
for (i = 0; i < Count; i++)
|
||||
@@ -555,7 +558,8 @@ NTSTATUS WINAPI LsaLookupSids(
|
||||
|
||||
*ReferencedDomains = heap_realloc(*ReferencedDomains, domain_fullsize);
|
||||
/* fix pointer after reallocation */
|
||||
- (*ReferencedDomains)->Domains = (LSA_TRUST_INFORMATION*)((char*)*ReferencedDomains + sizeof(LSA_REFERENCED_DOMAIN_LIST));
|
||||
+ (*ReferencedDomains)->Domains = (LSA_TRUST_INFORMATION*)((char*)*ReferencedDomains +
|
||||
+ sizeof(LSA_REFERENCED_DOMAIN_LIST) + sizeof(LSA_TRUST_INFORMATION));
|
||||
domain_data = (char*)(*ReferencedDomains)->Domains + sizeof(LSA_TRUST_INFORMATION)*Count;
|
||||
|
||||
mapped = 0;
|
||||
--
|
||||
2.3.5
|
||||
|
@@ -0,0 +1,39 @@
|
||||
From ce254ac3659e0c040136341d035629f99ec6d1ea Mon Sep 17 00:00:00 2001
|
||||
From: Qian Hong <qhong@codeweavers.com>
|
||||
Date: Tue, 7 Apr 2015 13:19:06 +0800
|
||||
Subject: advapi32: Prepend a hidden LSA_TRUST_INFORMATION in LsaLookupNames2
|
||||
to avoid crash when Domains[-1] incorrectly accessed by application. (try 2)
|
||||
|
||||
---
|
||||
dlls/advapi32/lsa.c | 10 +++++++---
|
||||
1 file changed, 7 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/dlls/advapi32/lsa.c b/dlls/advapi32/lsa.c
|
||||
index dfe25b3..258b8ca 100644
|
||||
--- a/dlls/advapi32/lsa.c
|
||||
+++ b/dlls/advapi32/lsa.c
|
||||
@@ -404,14 +404,18 @@ NTSTATUS WINAPI LsaLookupNames2( LSA_HANDLE policy, ULONG flags, ULONG count,
|
||||
sid = (SID *)(*sids + count);
|
||||
|
||||
/* use maximum domain count */
|
||||
- if (!(*domains = heap_alloc(sizeof(LSA_REFERENCED_DOMAIN_LIST) + sizeof(LSA_TRUST_INFORMATION)*count +
|
||||
- sid_size_total + domainname_size_total*sizeof(WCHAR))))
|
||||
+ if (!(*domains = heap_alloc(sizeof(LSA_REFERENCED_DOMAIN_LIST) + sizeof(LSA_TRUST_INFORMATION) * (count + 1) +
|
||||
+ sid_size_total + domainname_size_total * sizeof(WCHAR))))
|
||||
{
|
||||
heap_free(*sids);
|
||||
return STATUS_NO_MEMORY;
|
||||
}
|
||||
(*domains)->Entries = 0;
|
||||
- (*domains)->Domains = (LSA_TRUST_INFORMATION*)((char*)*domains + sizeof(LSA_REFERENCED_DOMAIN_LIST));
|
||||
+ (*domains)->Domains = (LSA_TRUST_INFORMATION*)((char*)*domains +
|
||||
+ sizeof(LSA_REFERENCED_DOMAIN_LIST) + sizeof(LSA_TRUST_INFORMATION));
|
||||
+ (*domains)->Domains[-1].Sid = NULL;
|
||||
+ RtlInitUnicodeStringEx(&(*domains)->Domains[-1].Name, NULL);
|
||||
+
|
||||
domain_data = (char*)(*domains)->Domains + sizeof(LSA_TRUST_INFORMATION)*count;
|
||||
|
||||
domain.Buffer = heap_alloc(domain_size_max*sizeof(WCHAR));
|
||||
--
|
||||
2.3.5
|
||||
|
@@ -0,0 +1,67 @@
|
||||
From 9a19e77a0334f91e370e73099066484f20b24321 Mon Sep 17 00:00:00 2001
|
||||
From: Qian Hong <qhong@codeweavers.com>
|
||||
Date: Tue, 7 Apr 2015 11:23:34 +0800
|
||||
Subject: advapi32: Fallback to Sid string when LookupAccountSid fails.
|
||||
|
||||
---
|
||||
dlls/advapi32/lsa.c | 30 ++++++++++++++++++++++++++++++
|
||||
1 file changed, 30 insertions(+)
|
||||
|
||||
diff --git a/dlls/advapi32/lsa.c b/dlls/advapi32/lsa.c
|
||||
index 258b8ca..2b2c6b6 100644
|
||||
--- a/dlls/advapi32/lsa.c
|
||||
+++ b/dlls/advapi32/lsa.c
|
||||
@@ -29,6 +29,7 @@
|
||||
#include "winbase.h"
|
||||
#include "winreg.h"
|
||||
#include "winternl.h"
|
||||
+#include "sddl.h"
|
||||
#include "advapi32_misc.h"
|
||||
|
||||
#include "wine/debug.h"
|
||||
@@ -554,6 +555,21 @@ NTSTATUS WINAPI LsaLookupSids(
|
||||
heap_free(name);
|
||||
}
|
||||
}
|
||||
+ else
|
||||
+ {
|
||||
+ WCHAR *strsid = NULL;
|
||||
+
|
||||
+ if (ConvertSidToStringSidW(Sids[i], &strsid))
|
||||
+ {
|
||||
+ name_size = strlenW(strsid) + 1;
|
||||
+
|
||||
+ (*Names)[i].Name.Length = (name_size - 1) * sizeof(WCHAR);
|
||||
+ (*Names)[i].Name.MaximumLength = name_size * sizeof(WCHAR);
|
||||
+ name_fullsize += (*Names)[i].Name.MaximumLength;
|
||||
+
|
||||
+ LocalFree(strsid);
|
||||
+ }
|
||||
+ }
|
||||
}
|
||||
|
||||
/* now we have full length needed for both */
|
||||
@@ -593,6 +609,20 @@ NTSTATUS WINAPI LsaLookupSids(
|
||||
heap_free(domain.Buffer);
|
||||
}
|
||||
}
|
||||
+ else
|
||||
+ {
|
||||
+ WCHAR *strsid = NULL;
|
||||
+
|
||||
+ if (ConvertSidToStringSidW(Sids[i], &strsid))
|
||||
+ {
|
||||
+ name_size = strlenW(strsid) + 1;
|
||||
+
|
||||
+ (*Names)[i].Name.Buffer = name_buffer;
|
||||
+ memcpy((*Names)[i].Name.Buffer, strsid, name_size * sizeof(WCHAR));
|
||||
+
|
||||
+ LocalFree(strsid);
|
||||
+ }
|
||||
+ }
|
||||
|
||||
name_buffer += name_size;
|
||||
}
|
||||
--
|
||||
2.3.5
|
||||
|
@@ -1,216 +0,0 @@
|
||||
From 8ce7a8b0f7ea6a94ae8327b4a3d07a10c12a2c9e Mon Sep 17 00:00:00 2001
|
||||
From: Sebastian Lackner <sebastian@fds-team.de>
|
||||
Date: Fri, 27 Mar 2015 15:32:04 +0100
|
||||
Subject: Revert "advapi32: Add DACL inheritance support in SetSecurityInfo."
|
||||
|
||||
This reverts commit f974d726720eff4fcd7371bca95e6cdcc4b4a848.
|
||||
---
|
||||
dlls/advapi32/security.c | 130 +----------------------------------------
|
||||
dlls/advapi32/tests/security.c | 23 ++++----
|
||||
2 files changed, 14 insertions(+), 139 deletions(-)
|
||||
|
||||
diff --git a/dlls/advapi32/security.c b/dlls/advapi32/security.c
|
||||
index 71a8c92..e8cdcc5 100644
|
||||
--- a/dlls/advapi32/security.c
|
||||
+++ b/dlls/advapi32/security.c
|
||||
@@ -4052,8 +4052,6 @@ DWORD WINAPI SetNamedSecurityInfoW(LPWSTR pObjectName,
|
||||
}
|
||||
break;
|
||||
case SE_FILE_OBJECT:
|
||||
- if (SecurityInfo & DACL_SECURITY_INFORMATION)
|
||||
- access |= READ_CONTROL;
|
||||
if (!(err = get_security_file( pObjectName, access, &handle )))
|
||||
{
|
||||
err = SetSecurityInfo( handle, ObjectType, SecurityInfo, psidOwner, psidGroup, pDacl, pSacl );
|
||||
@@ -5731,7 +5729,6 @@ DWORD WINAPI SetSecurityInfo(HANDLE handle, SE_OBJECT_TYPE ObjectType,
|
||||
PSID psidGroup, PACL pDacl, PACL pSacl)
|
||||
{
|
||||
SECURITY_DESCRIPTOR sd;
|
||||
- PACL dacl = pDacl;
|
||||
NTSTATUS status;
|
||||
|
||||
if (!InitializeSecurityDescriptor(&sd, SECURITY_DESCRIPTOR_REVISION))
|
||||
@@ -5742,130 +5739,7 @@ DWORD WINAPI SetSecurityInfo(HANDLE handle, SE_OBJECT_TYPE ObjectType,
|
||||
if (SecurityInfo & GROUP_SECURITY_INFORMATION)
|
||||
SetSecurityDescriptorGroup(&sd, psidGroup, FALSE);
|
||||
if (SecurityInfo & DACL_SECURITY_INFORMATION)
|
||||
- {
|
||||
- if (ObjectType == SE_FILE_OBJECT)
|
||||
- {
|
||||
- SECURITY_DESCRIPTOR_CONTROL control;
|
||||
- PSECURITY_DESCRIPTOR psd;
|
||||
- OBJECT_NAME_INFORMATION *name_info;
|
||||
- DWORD size, rev;
|
||||
-
|
||||
- status = NtQuerySecurityObject(handle, SecurityInfo, NULL, 0, &size);
|
||||
- if (status != STATUS_BUFFER_TOO_SMALL)
|
||||
- return RtlNtStatusToDosError(status);
|
||||
-
|
||||
- psd = heap_alloc(size);
|
||||
- if (!psd)
|
||||
- return ERROR_NOT_ENOUGH_MEMORY;
|
||||
-
|
||||
- status = NtQuerySecurityObject(handle, SecurityInfo, psd, size, &size);
|
||||
- if (status)
|
||||
- {
|
||||
- heap_free(psd);
|
||||
- return RtlNtStatusToDosError(status);
|
||||
- }
|
||||
-
|
||||
- status = RtlGetControlSecurityDescriptor(psd, &control, &rev);
|
||||
- heap_free(psd);
|
||||
- if (status)
|
||||
- return RtlNtStatusToDosError(status);
|
||||
- /* TODO: copy some control flags to new sd */
|
||||
-
|
||||
- /* inherit parent directory DACL */
|
||||
- if (!(control & SE_DACL_PROTECTED))
|
||||
- {
|
||||
- status = NtQueryObject(handle, ObjectNameInformation, NULL, 0, &size);
|
||||
- if (status != STATUS_INFO_LENGTH_MISMATCH)
|
||||
- return RtlNtStatusToDosError(status);
|
||||
-
|
||||
- name_info = heap_alloc(size);
|
||||
- if (!name_info)
|
||||
- return ERROR_NOT_ENOUGH_MEMORY;
|
||||
-
|
||||
- status = NtQueryObject(handle, ObjectNameInformation, name_info, size, NULL);
|
||||
- if (status)
|
||||
- {
|
||||
- heap_free(name_info);
|
||||
- return RtlNtStatusToDosError(status);
|
||||
- }
|
||||
-
|
||||
- for (name_info->Name.Length-=2; name_info->Name.Length>0; name_info->Name.Length-=2)
|
||||
- if (name_info->Name.Buffer[name_info->Name.Length/2-1]=='\\' ||
|
||||
- name_info->Name.Buffer[name_info->Name.Length/2-1]=='/')
|
||||
- break;
|
||||
- if (name_info->Name.Length)
|
||||
- {
|
||||
- OBJECT_ATTRIBUTES attr;
|
||||
- IO_STATUS_BLOCK io;
|
||||
- HANDLE parent;
|
||||
- PSECURITY_DESCRIPTOR parent_sd;
|
||||
- ACL *parent_dacl;
|
||||
- DWORD err = ERROR_ACCESS_DENIED;
|
||||
-
|
||||
- name_info->Name.Buffer[name_info->Name.Length/2] = 0;
|
||||
-
|
||||
- attr.Length = sizeof(attr);
|
||||
- attr.RootDirectory = 0;
|
||||
- attr.Attributes = 0;
|
||||
- attr.ObjectName = &name_info->Name;
|
||||
- attr.SecurityDescriptor = NULL;
|
||||
- status = NtOpenFile(&parent, READ_CONTROL, &attr, &io,
|
||||
- FILE_SHARE_READ|FILE_SHARE_WRITE|FILE_SHARE_DELETE,
|
||||
- FILE_OPEN_FOR_BACKUP_INTENT);
|
||||
- heap_free(name_info);
|
||||
- if (!status)
|
||||
- {
|
||||
- err = GetSecurityInfo(parent, SE_FILE_OBJECT, DACL_SECURITY_INFORMATION,
|
||||
- NULL, NULL, &parent_dacl, NULL, &parent_sd);
|
||||
- CloseHandle(parent);
|
||||
- }
|
||||
-
|
||||
- if (!err)
|
||||
- {
|
||||
- int i;
|
||||
-
|
||||
- dacl = heap_alloc_zero(pDacl->AclSize+parent_dacl->AclSize);
|
||||
- if (!dacl)
|
||||
- {
|
||||
- LocalFree(parent_sd);
|
||||
- return ERROR_NOT_ENOUGH_MEMORY;
|
||||
- }
|
||||
- memcpy(dacl, pDacl, pDacl->AclSize);
|
||||
- dacl->AclSize = pDacl->AclSize+parent_dacl->AclSize;
|
||||
-
|
||||
- for (i=0; i<parent_dacl->AceCount; i++)
|
||||
- {
|
||||
- ACE_HEADER *ace;
|
||||
-
|
||||
- if (!GetAce(parent_dacl, i, (void*)&ace))
|
||||
- continue;
|
||||
- if (!(ace->AceFlags & (OBJECT_INHERIT_ACE|CONTAINER_INHERIT_ACE)))
|
||||
- continue;
|
||||
- if ((ace->AceFlags & (OBJECT_INHERIT_ACE|CONTAINER_INHERIT_ACE)) !=
|
||||
- (OBJECT_INHERIT_ACE|CONTAINER_INHERIT_ACE))
|
||||
- {
|
||||
- FIXME("unsupported flags: %x\n", ace->AceFlags);
|
||||
- continue;
|
||||
- }
|
||||
-
|
||||
- if (ace->AceFlags & NO_PROPAGATE_INHERIT_ACE)
|
||||
- ace->AceFlags &= ~(OBJECT_INHERIT_ACE|CONTAINER_INHERIT_ACE|NO_PROPAGATE_INHERIT_ACE);
|
||||
- ace->AceFlags &= ~INHERIT_ONLY_ACE;
|
||||
- ace->AceFlags |= INHERITED_ACE;
|
||||
-
|
||||
- if(!AddAce(dacl, ACL_REVISION, MAXDWORD, ace, ace->AceSize))
|
||||
- WARN("error adding inherited ACE\n");
|
||||
- }
|
||||
- LocalFree(parent_sd);
|
||||
- }
|
||||
- }
|
||||
- else
|
||||
- heap_free(name_info);
|
||||
- }
|
||||
- }
|
||||
-
|
||||
- SetSecurityDescriptorDacl(&sd, TRUE, dacl, FALSE);
|
||||
- }
|
||||
+ SetSecurityDescriptorDacl(&sd, TRUE, pDacl, FALSE);
|
||||
if (SecurityInfo & SACL_SECURITY_INFORMATION)
|
||||
SetSecurityDescriptorSacl(&sd, TRUE, pSacl, FALSE);
|
||||
|
||||
@@ -5879,8 +5753,6 @@ DWORD WINAPI SetSecurityInfo(HANDLE handle, SE_OBJECT_TYPE ObjectType,
|
||||
status = NtSetSecurityObject(handle, SecurityInfo, &sd);
|
||||
break;
|
||||
}
|
||||
- if (dacl != pDacl)
|
||||
- heap_free(dacl);
|
||||
return RtlNtStatusToDosError(status);
|
||||
}
|
||||
|
||||
diff --git a/dlls/advapi32/tests/security.c b/dlls/advapi32/tests/security.c
|
||||
index 15c3b1d..6d3f9ac 100644
|
||||
--- a/dlls/advapi32/tests/security.c
|
||||
+++ b/dlls/advapi32/tests/security.c
|
||||
@@ -3417,22 +3417,25 @@ static void test_GetNamedSecurityInfoA(void)
|
||||
|
||||
error = pGetNamedSecurityInfoA(tmpfile, SE_FILE_OBJECT, DACL_SECURITY_INFORMATION,
|
||||
NULL, NULL, &pDacl, NULL, &pSD);
|
||||
- ok(!error, "GetNamedSecurityInfo failed with error %d\n", error);
|
||||
+ todo_wine ok(!error, "GetNamedSecurityInfo failed with error %d\n", error);
|
||||
|
||||
- bret = pGetAclInformation(pDacl, &acl_size, sizeof(acl_size), AclSizeInformation);
|
||||
- ok(bret, "GetAclInformation failed\n");
|
||||
- if (acl_size.AceCount > 0)
|
||||
+ if (!error)
|
||||
{
|
||||
- bret = pGetAce(pDacl, 0, (VOID **)&ace);
|
||||
- ok(bret, "Failed to get ACE.\n");
|
||||
- todo_wine ok(((ACE_HEADER *)ace)->AceFlags & INHERITED_ACE,
|
||||
- "ACE has unexpected flags: 0x%x\n", ((ACE_HEADER *)ace)->AceFlags);
|
||||
+ bret = pGetAclInformation(pDacl, &acl_size, sizeof(acl_size), AclSizeInformation);
|
||||
+ ok(bret, "GetAclInformation failed\n");
|
||||
+ if (acl_size.AceCount > 0)
|
||||
+ {
|
||||
+ bret = pGetAce(pDacl, 0, (VOID **)&ace);
|
||||
+ ok(bret, "Failed to get ACE.\n");
|
||||
+ ok(((ACE_HEADER *)ace)->AceFlags & INHERITED_ACE,
|
||||
+ "ACE has unexpected flags: 0x%x\n", ((ACE_HEADER *)ace)->AceFlags);
|
||||
+ }
|
||||
+ LocalFree(pSD);
|
||||
}
|
||||
- LocalFree(pSD);
|
||||
|
||||
h = CreateFileA(tmpfile, GENERIC_READ, FILE_SHARE_DELETE|FILE_SHARE_WRITE|FILE_SHARE_READ,
|
||||
NULL, OPEN_EXISTING, 0, NULL);
|
||||
- ok(h != INVALID_HANDLE_VALUE, "CreateFile error %d\n", GetLastError());
|
||||
+ todo_wine ok(h != INVALID_HANDLE_VALUE, "CreateFile error %d\n", GetLastError());
|
||||
CloseHandle(h);
|
||||
|
||||
/* NtSetSecurityObject doesn't inherit DACL entries */
|
||||
--
|
||||
2.3.3
|
||||
|
@@ -1,74 +0,0 @@
|
||||
From 0a8954d7ed5e57340ab6b6234fb3bdfe498fb69e Mon Sep 17 00:00:00 2001
|
||||
From: Sebastian Lackner <sebastian@fds-team.de>
|
||||
Date: Fri, 27 Mar 2015 15:32:17 +0100
|
||||
Subject: Revert "advapi32/tests: Add test for mapping DACL to permission."
|
||||
|
||||
This reverts commit a4b12eb9f937202848b229ed15f2c7d1823b41da.
|
||||
---
|
||||
dlls/advapi32/tests/security.c | 35 ++---------------------------------
|
||||
1 file changed, 2 insertions(+), 33 deletions(-)
|
||||
|
||||
diff --git a/dlls/advapi32/tests/security.c b/dlls/advapi32/tests/security.c
|
||||
index 6d3f9ac..dbe52b0 100644
|
||||
--- a/dlls/advapi32/tests/security.c
|
||||
+++ b/dlls/advapi32/tests/security.c
|
||||
@@ -3405,6 +3405,7 @@ static void test_GetNamedSecurityInfoA(void)
|
||||
"Administators Group ACE has unexpected mask (0x%x != 0x1f01ff)\n", ace->Mask);
|
||||
}
|
||||
LocalFree(pSD);
|
||||
+ HeapFree(GetProcessHeap(), 0, user);
|
||||
|
||||
/* show that setting empty DACL is not removing all file permissions */
|
||||
pDacl = HeapAlloc(GetProcessHeap(), 0, sizeof(ACL));
|
||||
@@ -3441,7 +3442,7 @@ static void test_GetNamedSecurityInfoA(void)
|
||||
/* NtSetSecurityObject doesn't inherit DACL entries */
|
||||
pSD = sd+sizeof(void*)-((ULONG_PTR)sd)%sizeof(void*);
|
||||
InitializeSecurityDescriptor(pSD, SECURITY_DESCRIPTOR_REVISION);
|
||||
- pDacl = HeapAlloc(GetProcessHeap(), 0, 100);
|
||||
+ pDacl = HeapAlloc(GetProcessHeap(), 0, sizeof(ACL));
|
||||
bret = InitializeAcl(pDacl, sizeof(ACL), ACL_REVISION);
|
||||
ok(bret, "Failed to initialize ACL.\n");
|
||||
bret = SetSecurityDescriptorDacl(pSD, TRUE, pDacl, FALSE);
|
||||
@@ -3472,39 +3473,7 @@ static void test_GetNamedSecurityInfoA(void)
|
||||
NULL, OPEN_EXISTING, 0, NULL);
|
||||
ok(h == INVALID_HANDLE_VALUE, "CreateFile error %d\n", GetLastError());
|
||||
CloseHandle(h);
|
||||
-
|
||||
- /* test if DACL is properly mapped to permission */
|
||||
- bret = InitializeAcl(pDacl, 100, ACL_REVISION);
|
||||
- ok(bret, "Failed to initialize ACL.\n");
|
||||
- bret = pAddAccessAllowedAceEx(pDacl, ACL_REVISION, 0, GENERIC_ALL, user_sid);
|
||||
- ok(bret, "Failed to add Current User to ACL.\n");
|
||||
- bret = pAddAccessDeniedAceEx(pDacl, ACL_REVISION, 0, GENERIC_ALL, user_sid);
|
||||
- ok(bret, "Failed to add Current User to ACL.\n");
|
||||
- bret = SetSecurityDescriptorDacl(pSD, TRUE, pDacl, FALSE);
|
||||
- ok(bret, "Failed to add ACL to security desciptor.\n");
|
||||
- status = pNtSetSecurityObject(hTemp, DACL_SECURITY_INFORMATION, pSD);
|
||||
- ok(status == ERROR_SUCCESS, "NtSetSecurityObject returned %x\n", status);
|
||||
-
|
||||
- h = CreateFileA(tmpfile, GENERIC_READ, FILE_SHARE_DELETE|FILE_SHARE_WRITE|FILE_SHARE_READ,
|
||||
- NULL, OPEN_EXISTING, 0, NULL);
|
||||
- todo_wine ok(h != INVALID_HANDLE_VALUE, "CreateFile error %d\n", GetLastError());
|
||||
-
|
||||
- bret = InitializeAcl(pDacl, 100, ACL_REVISION);
|
||||
- ok(bret, "Failed to initialize ACL.\n");
|
||||
- bret = pAddAccessDeniedAceEx(pDacl, ACL_REVISION, 0, GENERIC_ALL, user_sid);
|
||||
- ok(bret, "Failed to add Current User to ACL.\n");
|
||||
- bret = pAddAccessAllowedAceEx(pDacl, ACL_REVISION, 0, GENERIC_ALL, user_sid);
|
||||
- ok(bret, "Failed to add Current User to ACL.\n");
|
||||
- bret = SetSecurityDescriptorDacl(pSD, TRUE, pDacl, FALSE);
|
||||
- ok(bret, "Failed to add ACL to security desciptor.\n");
|
||||
- status = pNtSetSecurityObject(hTemp, DACL_SECURITY_INFORMATION, pSD);
|
||||
- ok(status == ERROR_SUCCESS, "NtSetSecurityObject returned %x\n", status);
|
||||
-
|
||||
- h = CreateFileA(tmpfile, GENERIC_READ, FILE_SHARE_DELETE|FILE_SHARE_WRITE|FILE_SHARE_READ,
|
||||
- NULL, OPEN_EXISTING, 0, NULL);
|
||||
- ok(h == INVALID_HANDLE_VALUE, "CreateFile error %d\n", GetLastError());
|
||||
HeapFree(GetProcessHeap(), 0, pDacl);
|
||||
- HeapFree(GetProcessHeap(), 0, user);
|
||||
CloseHandle(hTemp);
|
||||
|
||||
/* Test querying the ownership of a built-in registry key */
|
||||
--
|
||||
2.3.3
|
||||
|
@@ -1,142 +0,0 @@
|
||||
From 99244514ca0c26e263e14d7fdf095083e4686166 Mon Sep 17 00:00:00 2001
|
||||
From: Sebastian Lackner <sebastian@fds-team.de>
|
||||
Date: Fri, 27 Mar 2015 15:32:32 +0100
|
||||
Subject: Revert "advapi32: Add SetNamedSecurityInfo test with empty DACL."
|
||||
|
||||
This reverts commit 02c4f5bd275d70d1dcb48bf95775efa376b50c22.
|
||||
---
|
||||
dlls/advapi32/tests/security.c | 79 +++---------------------------------------
|
||||
1 file changed, 4 insertions(+), 75 deletions(-)
|
||||
|
||||
diff --git a/dlls/advapi32/tests/security.c b/dlls/advapi32/tests/security.c
|
||||
index dbe52b0..e3c1659 100644
|
||||
--- a/dlls/advapi32/tests/security.c
|
||||
+++ b/dlls/advapi32/tests/security.c
|
||||
@@ -147,7 +147,6 @@ static BOOL (WINAPI *pCreateRestrictedToken)(HANDLE, DWORD, DWORD, PSID_AND_ATTR
|
||||
PLUID_AND_ATTRIBUTES, DWORD, PSID_AND_ATTRIBUTES, PHANDLE);
|
||||
static BOOL (WINAPI *pGetAclInformation)(PACL,LPVOID,DWORD,ACL_INFORMATION_CLASS);
|
||||
static BOOL (WINAPI *pGetAce)(PACL,DWORD,LPVOID*);
|
||||
-static NTSTATUS (WINAPI *pNtSetSecurityObject)(HANDLE,SECURITY_INFORMATION,PSECURITY_DESCRIPTOR);
|
||||
|
||||
static HMODULE hmod;
|
||||
static int myARGC;
|
||||
@@ -174,7 +173,6 @@ static void init(void)
|
||||
hntdll = GetModuleHandleA("ntdll.dll");
|
||||
pNtQueryObject = (void *)GetProcAddress( hntdll, "NtQueryObject" );
|
||||
pNtAccessCheck = (void *)GetProcAddress( hntdll, "NtAccessCheck" );
|
||||
- pNtSetSecurityObject = (void *)GetProcAddress(hntdll, "NtSetSecurityObject");
|
||||
|
||||
hmod = GetModuleHandleA("advapi32.dll");
|
||||
pAddAccessAllowedAceEx = (void *)GetProcAddress(hmod, "AddAccessAllowedAceEx");
|
||||
@@ -3231,7 +3229,7 @@ static void test_GetNamedSecurityInfoA(void)
|
||||
char invalid_path[] = "/an invalid file path";
|
||||
int users_ace_id = -1, admins_ace_id = -1, i;
|
||||
char software_key[] = "MACHINE\\Software";
|
||||
- char sd[SECURITY_DESCRIPTOR_MIN_LENGTH+sizeof(void*)];
|
||||
+ char sd[SECURITY_DESCRIPTOR_MIN_LENGTH];
|
||||
SECURITY_DESCRIPTOR_CONTROL control;
|
||||
ACL_SIZE_INFORMATION acl_size;
|
||||
CHAR windows_dir[MAX_PATH];
|
||||
@@ -3243,12 +3241,11 @@ static void test_GetNamedSecurityInfoA(void)
|
||||
BOOL owner_defaulted;
|
||||
BOOL group_defaulted;
|
||||
BOOL dacl_defaulted;
|
||||
- HANDLE token, hTemp, h;
|
||||
+ HANDLE token, hTemp;
|
||||
PSID owner, group;
|
||||
BOOL dacl_present;
|
||||
PACL pDacl;
|
||||
BYTE flags;
|
||||
- NTSTATUS status;
|
||||
|
||||
if (!pSetNamedSecurityInfoA || !pGetNamedSecurityInfoA || !pCreateWellKnownSid)
|
||||
{
|
||||
@@ -3353,8 +3350,8 @@ static void test_GetNamedSecurityInfoA(void)
|
||||
bret = SetSecurityDescriptorDacl(pSD, TRUE, pDacl, FALSE);
|
||||
ok(bret, "Failed to add ACL to security desciptor.\n");
|
||||
GetTempFileNameA(".", "foo", 0, tmpfile);
|
||||
- hTemp = CreateFileA(tmpfile, WRITE_DAC|GENERIC_WRITE, FILE_SHARE_DELETE|FILE_SHARE_READ,
|
||||
- NULL, OPEN_EXISTING, FILE_FLAG_DELETE_ON_CLOSE, NULL);
|
||||
+ hTemp = CreateFileA(tmpfile, GENERIC_WRITE, FILE_SHARE_READ, NULL, OPEN_EXISTING,
|
||||
+ FILE_FLAG_DELETE_ON_CLOSE, NULL);
|
||||
SetLastError(0xdeadbeef);
|
||||
error = pSetNamedSecurityInfoA(tmpfile, SE_FILE_OBJECT, DACL_SECURITY_INFORMATION, NULL,
|
||||
NULL, pDacl, NULL);
|
||||
@@ -3406,74 +3403,6 @@ static void test_GetNamedSecurityInfoA(void)
|
||||
}
|
||||
LocalFree(pSD);
|
||||
HeapFree(GetProcessHeap(), 0, user);
|
||||
-
|
||||
- /* show that setting empty DACL is not removing all file permissions */
|
||||
- pDacl = HeapAlloc(GetProcessHeap(), 0, sizeof(ACL));
|
||||
- bret = InitializeAcl(pDacl, sizeof(ACL), ACL_REVISION);
|
||||
- ok(bret, "Failed to initialize ACL.\n");
|
||||
- error = pSetNamedSecurityInfoA(tmpfile, SE_FILE_OBJECT, DACL_SECURITY_INFORMATION,
|
||||
- NULL, NULL, pDacl, NULL);
|
||||
- ok(!error, "SetNamedSecurityInfoA failed with error %d\n", error);
|
||||
- HeapFree(GetProcessHeap(), 0, pDacl);
|
||||
-
|
||||
- error = pGetNamedSecurityInfoA(tmpfile, SE_FILE_OBJECT, DACL_SECURITY_INFORMATION,
|
||||
- NULL, NULL, &pDacl, NULL, &pSD);
|
||||
- todo_wine ok(!error, "GetNamedSecurityInfo failed with error %d\n", error);
|
||||
-
|
||||
- if (!error)
|
||||
- {
|
||||
- bret = pGetAclInformation(pDacl, &acl_size, sizeof(acl_size), AclSizeInformation);
|
||||
- ok(bret, "GetAclInformation failed\n");
|
||||
- if (acl_size.AceCount > 0)
|
||||
- {
|
||||
- bret = pGetAce(pDacl, 0, (VOID **)&ace);
|
||||
- ok(bret, "Failed to get ACE.\n");
|
||||
- ok(((ACE_HEADER *)ace)->AceFlags & INHERITED_ACE,
|
||||
- "ACE has unexpected flags: 0x%x\n", ((ACE_HEADER *)ace)->AceFlags);
|
||||
- }
|
||||
- LocalFree(pSD);
|
||||
- }
|
||||
-
|
||||
- h = CreateFileA(tmpfile, GENERIC_READ, FILE_SHARE_DELETE|FILE_SHARE_WRITE|FILE_SHARE_READ,
|
||||
- NULL, OPEN_EXISTING, 0, NULL);
|
||||
- todo_wine ok(h != INVALID_HANDLE_VALUE, "CreateFile error %d\n", GetLastError());
|
||||
- CloseHandle(h);
|
||||
-
|
||||
- /* NtSetSecurityObject doesn't inherit DACL entries */
|
||||
- pSD = sd+sizeof(void*)-((ULONG_PTR)sd)%sizeof(void*);
|
||||
- InitializeSecurityDescriptor(pSD, SECURITY_DESCRIPTOR_REVISION);
|
||||
- pDacl = HeapAlloc(GetProcessHeap(), 0, sizeof(ACL));
|
||||
- bret = InitializeAcl(pDacl, sizeof(ACL), ACL_REVISION);
|
||||
- ok(bret, "Failed to initialize ACL.\n");
|
||||
- bret = SetSecurityDescriptorDacl(pSD, TRUE, pDacl, FALSE);
|
||||
- ok(bret, "Failed to add ACL to security desciptor.\n");
|
||||
- status = pNtSetSecurityObject(hTemp, DACL_SECURITY_INFORMATION, pSD);
|
||||
- ok(status == ERROR_SUCCESS, "NtSetSecurityObject returned %x\n", status);
|
||||
-
|
||||
- h = CreateFileA(tmpfile, GENERIC_READ, FILE_SHARE_DELETE|FILE_SHARE_WRITE|FILE_SHARE_READ,
|
||||
- NULL, OPEN_EXISTING, 0, NULL);
|
||||
- ok(h == INVALID_HANDLE_VALUE, "CreateFile error %d\n", GetLastError());
|
||||
- CloseHandle(h);
|
||||
-
|
||||
- pSetSecurityDescriptorControl(pSD, SE_DACL_AUTO_INHERIT_REQ, SE_DACL_AUTO_INHERIT_REQ);
|
||||
- status = pNtSetSecurityObject(hTemp, DACL_SECURITY_INFORMATION, pSD);
|
||||
- ok(status == ERROR_SUCCESS, "NtSetSecurityObject returned %x\n", status);
|
||||
-
|
||||
- h = CreateFileA(tmpfile, GENERIC_READ, FILE_SHARE_DELETE|FILE_SHARE_WRITE|FILE_SHARE_READ,
|
||||
- NULL, OPEN_EXISTING, 0, NULL);
|
||||
- ok(h == INVALID_HANDLE_VALUE, "CreateFile error %d\n", GetLastError());
|
||||
- CloseHandle(h);
|
||||
-
|
||||
- pSetSecurityDescriptorControl(pSD, SE_DACL_AUTO_INHERIT_REQ|SE_DACL_AUTO_INHERITED,
|
||||
- SE_DACL_AUTO_INHERIT_REQ|SE_DACL_AUTO_INHERITED);
|
||||
- status = pNtSetSecurityObject(hTemp, DACL_SECURITY_INFORMATION, pSD);
|
||||
- ok(status == ERROR_SUCCESS, "NtSetSecurityObject returned %x\n", status);
|
||||
-
|
||||
- h = CreateFileA(tmpfile, GENERIC_READ, FILE_SHARE_DELETE|FILE_SHARE_WRITE|FILE_SHARE_READ,
|
||||
- NULL, OPEN_EXISTING, 0, NULL);
|
||||
- ok(h == INVALID_HANDLE_VALUE, "CreateFile error %d\n", GetLastError());
|
||||
- CloseHandle(h);
|
||||
- HeapFree(GetProcessHeap(), 0, pDacl);
|
||||
CloseHandle(hTemp);
|
||||
|
||||
/* Test querying the ownership of a built-in registry key */
|
||||
--
|
||||
2.3.3
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user