You've already forked wine-staging
mirror of
https://gitlab.winehq.org/wine/wine-staging.git
synced 2025-09-12 18:50:20 -07:00
Compare commits
169 Commits
v1.7.37
...
acl-rework
Author | SHA1 | Date | |
---|---|---|---|
|
e01e628f6e | ||
|
a5dbd95e4c | ||
|
12a7d34650 | ||
|
5309fe6cb0 | ||
|
7fb4b8cfc8 | ||
|
c9380eed86 | ||
|
5e5cad6246 | ||
|
41f41a7c98 | ||
|
9cfd7972d9 | ||
|
cd5078fa95 | ||
|
1c34dbeba4 | ||
|
315fc252ca | ||
|
cc21d373b5 | ||
|
f3032f5a57 | ||
|
f7fb8e8959 | ||
|
fc151aaec0 | ||
|
1f66697807 | ||
|
8afbb3aecc | ||
|
b5a7498b86 | ||
|
97aaaaa663 | ||
|
e20c4d5a6f | ||
|
9e89bb327a | ||
|
db326ba242 | ||
|
47dc5f2527 | ||
|
4bfbd720eb | ||
|
44094b9175 | ||
|
79b46b851a | ||
|
883c4fd47e | ||
|
d7d3868b7f | ||
|
d620e52840 | ||
|
f069c35bca | ||
|
9741ce797e | ||
|
1044ff2981 | ||
|
d37f4a9e2d | ||
|
d8651610cc | ||
|
525b5f5dd3 | ||
|
8c880d262f | ||
|
d1451cd34f | ||
|
b0cf640a90 | ||
|
8751f075a1 | ||
|
2f3d51e7f4 | ||
|
d7d95ca4b6 | ||
|
e2c1e62662 | ||
|
c5f0106cd6 | ||
|
483cf18923 | ||
|
dab39259ab | ||
|
5ee34a9309 | ||
|
468a035b3e | ||
|
486c1d6f46 | ||
|
0958d303e9 | ||
|
a526f3eb07 | ||
|
42b6978464 | ||
|
5fe90fc2e8 | ||
|
1c4a8d2f9a | ||
|
6308175bc4 | ||
|
7a53f1fbc5 | ||
|
014ef86645 | ||
|
2dd6d5e049 | ||
|
0486bc809f | ||
|
de8e8a4079 | ||
|
20286952db | ||
|
17a3d8c2ea | ||
|
9fd51f90ef | ||
|
d807c55e94 | ||
|
88f4c9ec57 | ||
|
aa51a47238 | ||
|
ec4e719cd6 | ||
|
547d1a988d | ||
|
d57ae8c150 | ||
|
0c660b9e3a | ||
|
ea89242465 | ||
|
f1f051f491 | ||
|
de15f131bc | ||
|
48b14fe20b | ||
|
dfd778f392 | ||
|
74f4207916 | ||
|
4bfaa67fea | ||
|
70c01d5385 | ||
|
e759eff059 | ||
|
c9e146259d | ||
|
3c7f5898c0 | ||
|
5b7dc79ea0 | ||
|
8c17307f95 | ||
|
513ca1f4ba | ||
|
28ddd8d7d5 | ||
|
4b41a20552 | ||
|
82b52e11c3 | ||
|
538f3aaaea | ||
|
ffdcf51981 | ||
|
a812ef647e | ||
|
0b477b3ef1 | ||
|
da0ea43746 | ||
|
8afa18829a | ||
|
fa3bf612ea | ||
|
521e8aa38c | ||
|
c1ee00741d | ||
|
9127b8c30a | ||
|
41cad2ab96 | ||
|
6d2bd768c8 | ||
|
17eccd79dc | ||
|
def2378b7a | ||
|
9e39b598ad | ||
|
05cb27bb21 | ||
|
89e58b5105 | ||
|
0f1cce7ba2 | ||
|
2cba978c4d | ||
|
150c6dce28 | ||
|
ef97a06e99 | ||
|
48c5b12ec2 | ||
|
3c1f26970c | ||
|
20e97e50b3 | ||
|
e3616aa15c | ||
|
e7b99e4558 | ||
|
c02bdae45d | ||
|
4a8df258cd | ||
|
6b31c6f9e2 | ||
|
274fe74055 | ||
|
db827ac766 | ||
|
4d3a96536e | ||
|
cb7f47b637 | ||
|
6038eeee95 | ||
|
ce2930fb30 | ||
|
e86c1653d8 | ||
|
3efff4cb88 | ||
|
985f04d9ba | ||
|
6cf3424356 | ||
|
67e8c4d0a9 | ||
|
6c1e7ddfb2 | ||
|
99bf902a97 | ||
|
c9d3b931f7 | ||
|
d4871a1b6e | ||
|
1564f9cd05 | ||
|
aac61f746b | ||
|
348fe1182f | ||
|
96bb4ddd1d | ||
|
ec8049fcf5 | ||
|
e7b9fc8d16 | ||
|
8cc25d0fe4 | ||
|
cd62b5bedc | ||
|
9e9b76a6a9 | ||
|
5d4b0f6a7b | ||
|
a9622970cd | ||
|
2672abd9e0 | ||
|
9146caa7ae | ||
|
480bab002e | ||
|
2de8f84fb0 | ||
|
e01d563654 | ||
|
cc1368ba9e | ||
|
a63ea08036 | ||
|
b4c665d65a | ||
|
870feed3e2 | ||
|
ec1b9737d0 | ||
|
6b6bb2edce | ||
|
98c6f8974b | ||
|
f133ccbf40 | ||
|
b74ea4b14d | ||
|
7d2b751466 | ||
|
dd12b420e8 | ||
|
d25e78cefb | ||
|
8f64b37ee2 | ||
|
11fe964c46 | ||
|
8b3e8d11a8 | ||
|
eaefcc8a3f | ||
|
a412b6082a | ||
|
50b6ba8394 | ||
|
c1eea67020 | ||
|
f11e82495a | ||
|
5261bd8a89 | ||
|
b7777f405b |
66
README.md
66
README.md
@@ -38,12 +38,24 @@ Wine. All those differences are also documented on the
|
||||
Included bug fixes and improvements
|
||||
===================================
|
||||
|
||||
**Bugs fixed in Wine Staging 1.7.37 [182]:**
|
||||
**Bugfixes and features included in the next upcoming release [9]:**
|
||||
|
||||
* 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]:**
|
||||
|
||||
* Add Dynamic DST exceptions for Israel Standard Time ([Wine Bug #36374](https://bugs.winehq.org/show_bug.cgi?id=36374))
|
||||
* Add default ACLs for user shell folders
|
||||
* Add implementation for CreateThreadpool ([Wine Bug #35192](https://bugs.winehq.org/show_bug.cgi?id=35192))
|
||||
* Add library override instead of closing winecfg when pressing ENTER over the combobox ([Wine Bug #12804](https://bugs.winehq.org/show_bug.cgi?id=12804))
|
||||
* 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))
|
||||
@@ -52,47 +64,58 @@ Included bug fixes and improvements
|
||||
* 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 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 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
|
||||
* 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 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 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))
|
||||
* Call DriverUnload function when unloading a device driver.
|
||||
* Child of Light expects FindConnectionPoint to succeed and increase the refcount ([Wine Bug #36408](https://bugs.winehq.org/show_bug.cgi?id=36408))
|
||||
* 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))
|
||||
* 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 access stack below ESP when restoring thread context.
|
||||
* 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))
|
||||
* Ensure X11 input events are handled even without explicit message loop ([Wine Bug #8854](https://bugs.winehq.org/show_bug.cgi?id=8854))
|
||||
* Exception during start of fr-043 caused by missing DXTn support ([Wine Bug #37391](https://bugs.winehq.org/show_bug.cgi?id=37391))
|
||||
* Expose PKEY_AudioEndpoint_PhysicalSpeakers device property in PulseAudio driver
|
||||
* FEAR 1 installer expects basic_string_wchar_dtor to return NULL ([Wine Bug #37358](https://bugs.winehq.org/show_bug.cgi?id=37358))
|
||||
* Fallback to global key state for threads without a queue ([Wine Bug #27238](https://bugs.winehq.org/show_bug.cgi?id=27238))
|
||||
* Fix NULL dereference in ICSeqCompressFrameStart ([Wine Bug #27595](https://bugs.winehq.org/show_bug.cgi?id=27595))
|
||||
* Fix access violation when calling GetStringTypeW with NULL src. ([Wine Bug #37759](https://bugs.winehq.org/show_bug.cgi?id=37759))
|
||||
* Fix arguments for OSMesaMakeCurrent when using 16 bit formats
|
||||
* 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))
|
||||
* Fix crash in clip_cursor_notify caused by uninitialized TLS ([Wine Bug #36915](https://bugs.winehq.org/show_bug.cgi?id=36915))
|
||||
* 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))
|
||||
@@ -104,19 +127,23 @@ Included bug fixes and improvements
|
||||
* 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 window attributes for WS_EX_LAYERED | WS_EX_COMPOSITED ([Wine Bug #37876](https://bugs.winehq.org/show_bug.cgi?id=37876))
|
||||
* Fix init of LONGLONG variable with a negative value in TGA decoder
|
||||
* 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 mouse jittering in Planetside 2 ([Wine Bug #32913](https://bugs.winehq.org/show_bug.cgi?id=32913))
|
||||
* Fix parameters for ConvertToIndexedBlendedMesh stub ([Wine Bug #36449](https://bugs.winehq.org/show_bug.cgi?id=36449))
|
||||
* 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 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
|
||||
* Fix wined3d performance drop introduced by pixelformat changes. ([Wine Bug #35655](https://bugs.winehq.org/show_bug.cgi?id=35655))
|
||||
* Fix wrong colors in Wolfenstein (2009) ([Wine Bug #34692](https://bugs.winehq.org/show_bug.cgi?id=34692))
|
||||
* Fix wrong defition of ntoskrnl.IoReleaseCancelSpinLock function.
|
||||
* Fix wrong version of ID3DXEffect interface for d3dx9_24
|
||||
* Fix wrong version of ID3DXEffect interface for d3dx9_25 ([Wine Bug #25138](https://bugs.winehq.org/show_bug.cgi?id=25138))
|
||||
* Games For Windows Live 1.x expects a valid linker version in the PE header ([Wine Bug #28768](https://bugs.winehq.org/show_bug.cgi?id=28768))
|
||||
* GetMessage should remove already seen messages with higher priority ([Wine Bug #28884](https://bugs.winehq.org/show_bug.cgi?id=28884))
|
||||
* GetMonitorInfo returns the same name for all monitors ([Wine Bug #37709](https://bugs.winehq.org/show_bug.cgi?id=37709))
|
||||
* GetSecurityInfo returns NULL DACL for process object ([Wine Bug #15980](https://bugs.winehq.org/show_bug.cgi?id=15980))
|
||||
* Graphical issues in Inquisitor ([Wine Bug #32490](https://bugs.winehq.org/show_bug.cgi?id=32490))
|
||||
@@ -127,10 +154,14 @@ Included bug fixes and improvements
|
||||
* Implement D3DXGetShaderOutputSemantics
|
||||
* 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 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 ntoskrnl driver testing framework.
|
||||
* Implement ntoskrnl.KeInitializeMutex
|
||||
* Implement stub for ntoskrnl.IoGetAttachedDeviceReference
|
||||
@@ -141,14 +172,17 @@ Included bug fixes and improvements
|
||||
* Implement threadpool wait objects
|
||||
* Implement threadpool work items ([Wine Bug #32531](https://bugs.winehq.org/show_bug.cgi?id=32531))
|
||||
* Improve stub for AEV_GetVolumeRange ([Wine Bug #35658](https://bugs.winehq.org/show_bug.cgi?id=35658))
|
||||
* Improve stub for ID3DXEffectImpl_CloneEffect
|
||||
* 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))
|
||||
* Limit cross thread access to ImmSet* functions ([Wine Bug #35361](https://bugs.winehq.org/show_bug.cgi?id=35361))
|
||||
* Lockfree algorithm for filedescriptor cache (improves file access speed)
|
||||
* MSVCRT crashes when NULL is passed as string to atof or strtod ([Wine Bug #32550](https://bugs.winehq.org/show_bug.cgi?id=32550))
|
||||
* MSYS2 expects correct handling of WRITECOPY memory protection ([Wine Bug #35561](https://bugs.winehq.org/show_bug.cgi?id=35561))
|
||||
* Make it possible to change media center / tablet pc status ([Wine Bug #18732](https://bugs.winehq.org/show_bug.cgi?id=18732))
|
||||
* MediaCoder needs CUDA for video encoding ([Wine Bug #37664](https://bugs.winehq.org/show_bug.cgi?id=37664))
|
||||
* Multiple applications need EnumDisplayDevicesW implementation ([Wine Bug #34978](https://bugs.winehq.org/show_bug.cgi?id=34978))
|
||||
@@ -157,6 +191,10 @@ Included bug fixes and improvements
|
||||
* Other Pipelight-specific enhancements
|
||||
* Port Royale doesn't display ocean correctly ([Wine Bug #17913](https://bugs.winehq.org/show_bug.cgi?id=17913))
|
||||
* 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
|
||||
* Python PIP needs better NtQueryInformationJobObject stub
|
||||
* Reduced SetTimer minimum value from 10 ms to 5 ms (improves Silverlight framerates)
|
||||
* 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))
|
||||
@@ -166,7 +204,6 @@ Included bug fixes and improvements
|
||||
* 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))
|
||||
* Silverlight needs support for file ACLs ([Wine Bug #31858](https://bugs.winehq.org/show_bug.cgi?id=31858))
|
||||
* 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 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))
|
||||
@@ -178,7 +215,7 @@ Included bug fixes and improvements
|
||||
* Support for DOS hidden/system file attributes ([Wine Bug #9158](https://bugs.winehq.org/show_bug.cgi?id=9158))
|
||||
* Support for Dynamic DST (daylight saving time) information in registry
|
||||
* Support for GdipCreateRegionRgnData ([Wine Bug #34843](https://bugs.winehq.org/show_bug.cgi?id=34843))
|
||||
* Support for GetFinalPathNameByHandle ([Wine Bug #36073](https://bugs.winehq.org/show_bug.cgi?id=36073))
|
||||
* Support for GetFinalPathNameByHandle ([Wine Bug #34851](https://bugs.winehq.org/show_bug.cgi?id=34851))
|
||||
* Support for GetSystemTimes ([Wine Bug #19813](https://bugs.winehq.org/show_bug.cgi?id=19813))
|
||||
* Support for GetVolumePathName
|
||||
* Support for H264 DXVA2 GPU video decoding through vaapi
|
||||
@@ -196,8 +233,7 @@ 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 SLGetWindowsInformationDWORD ([Wine Bug #36709](https://bugs.winehq.org/show_bug.cgi?id=36709))
|
||||
* Support for TOOLTIPS_GetTipText edge cases ([Wine Bug #30648](https://bugs.winehq.org/show_bug.cgi?id=30648))
|
||||
* ~~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))
|
||||
@@ -208,6 +244,7 @@ Included bug fixes and improvements
|
||||
* Support for pasting HTML from Unix applications ([Wine Bug #7372](https://bugs.winehq.org/show_bug.cgi?id=7372))
|
||||
* Support for process ACLs ([Wine Bug #22006](https://bugs.winehq.org/show_bug.cgi?id=22006))
|
||||
* Support for setcap on wine-preloader ([Wine Bug #26256](https://bugs.winehq.org/show_bug.cgi?id=26256))
|
||||
* Support for shell32 file operation progress dialog
|
||||
* Support for stored file ACLs ([Wine Bug #33576](https://bugs.winehq.org/show_bug.cgi?id=33576))
|
||||
* Try harder to get the host name address in getaddrinfo() ([Wine Bug #29609](https://bugs.winehq.org/show_bug.cgi?id=29609))
|
||||
* Tumblebugs 2 requires DXTn software encoding support ([Wine Bug #29586](https://bugs.winehq.org/show_bug.cgi?id=29586))
|
||||
@@ -221,5 +258,4 @@ Included bug fixes and improvements
|
||||
* eRacer Demo doesn't correctly display text ([Wine Bug #29598](https://bugs.winehq.org/show_bug.cgi?id=29598))
|
||||
* ntdll is missing WinSqm[Start|End]Session implementation ([Wine Bug #31971](https://bugs.winehq.org/show_bug.cgi?id=31971))
|
||||
* wglDescribePixelFormat should return max index for NULL descriptor ([Wine Bug #6176](https://bugs.winehq.org/show_bug.cgi?id=6176))
|
||||
* wininet should allow Accept-Encoding header for HTTP/1.0 ([Wine Bug #37046](https://bugs.winehq.org/show_bug.cgi?id=37046))
|
||||
|
||||
|
121
debian/changelog
vendored
121
debian/changelog
vendored
@@ -1,3 +1,124 @@
|
||||
wine-staging (1.7.40) UNRELEASED; 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.
|
||||
* Added patch to avoid spam of FIXME messages for PsLookupProcessByProcessId stub.
|
||||
* Added patch to implement empty enumerator for IWiaDevMgr::EnumDeviceInfo.
|
||||
* Added patch to fix handling of ANSI NTLM credentials.
|
||||
* Added patch to fix compatibility of Uplay with gnutls28.
|
||||
* Added patches for Environmental Audio Extensions (EAX), pull request #311 from Mark Harmstone.
|
||||
* 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).
|
||||
* 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).
|
||||
* Removed patch to fix race-condition when closing browseui IProcessDialog (accepted upstream).
|
||||
* 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
|
||||
|
||||
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.
|
||||
* Update patchset for ntdll-RtlUnwindEx to fix an issue with dwarf handling (fixes Wine Staging Bug #170).
|
||||
* Updated patchset for dinput-Events to be compatible with more games (fixes Wine Staging Bug #149).
|
||||
* Added patch for tests of RtlIpv6StringToAddress, RtlIpv{4,6}StringToAddressEx (by Mark Jansen).
|
||||
* Added patch to fix multithreading issues with fullscreen clipping.
|
||||
* Added patch with tests for VerQueryValueA (by Mark Jansen).
|
||||
* Added patch to implement proper locking of keystate and synchronization with desktop thread.
|
||||
* Added patch to implement better stub function for NtQueryInformationJobObject.
|
||||
* Added patch to avoid crash in d3d9 tests by skipping when texture/surface creation fails.
|
||||
* Added patch to fix wrong version of ID3DXEffect interface for d3dx9_24.
|
||||
* Added patch to fix wrong version of ID3DXEffect interface for d3dx9_25.
|
||||
* Added patch to allow to query for d3dx9_26 specific ID3DXEffect interface.
|
||||
* Added patch to modify GetMessage to return already seen messages with higher priority.
|
||||
* Added patch to silence repeated 'Unhandled blend factor 0' FIXME messages.
|
||||
* Added patch for stub of PowerCreateRequest.
|
||||
* Added patch to invalidate key state cache globally after calling LL hooks.
|
||||
* Added patch to fix Wine Staging Bug #162 - Caesar III demo installer crashes.
|
||||
* Added patch to fix wrong return values of RtlFindActivationContextSectionString for NULL data (by Mark Jansen).
|
||||
* Added patch to implement _ismbckata and _mbctohira, moreover fix wrong return value of _ismbckata.
|
||||
* Added patch to improve stub for ID3DXEffectImpl_CloneEffect.
|
||||
* Added patch with additional tests for server-PeekMessage.
|
||||
* Added patch to only zero the buffer up 32767 bytes in GetTempPathW.
|
||||
* Added patches to implement shared memory wineserver communication for various user32 functions.
|
||||
* Added patch to implement combase.WindowsSubstring function.
|
||||
* Added patch with stub for wininet.ParseX509EncodedCertificateForListBoxEntry.
|
||||
* Added patch to allow to edit winecfg library override by double clicking.
|
||||
* Added patch to fix regression causing too dark/missing textures in several games.
|
||||
* Added patch to fix regression causing black screen on startup.
|
||||
* Added patch to implement SetupLogError[A|W] and Setup[Open|Close]Log.
|
||||
* Added patches to get rid of wineserver call for GetActiveWindow, GetFocus, GetCapture.
|
||||
* Removed patch to avoid hardcoded values for sizeof(GUID) (accepted upstream).
|
||||
* Removed patches for SLGetWindowsInformationDWORD (accepted upstream).
|
||||
* Removed patches for _ismbckata and _mbctohira (fixed upstream).
|
||||
* Removed patches to fix wrong return values of RtlFindActivationContextSectionString for NULL data (accepted upstream).
|
||||
* Removed patch for server-PeekMessage tests (accepted upstream).
|
||||
* Removed patch to only zero the buffer up 32767 bytes in GetTempPathW (accepted upstream).
|
||||
* Removed first patch of series ws2_32_WriteWatches (accepted upstream).
|
||||
-- Sebastian Lackner <sebastian@fds-team.de> Sun, 22 Mar 2015 04:05:46 +0100
|
||||
|
||||
wine-staging (1.7.38) unstable; urgency=low
|
||||
* Various improvements to patchupdate.py.
|
||||
* Various improvements to dxva2 vaapi support.
|
||||
* Long overdue update to the TransmitFile patches.
|
||||
* Disabled patchset for reg.exe cleanup (partially accepted upstream).
|
||||
* Added patch to report the correct refresh rates for some NVIDIA cards.
|
||||
* Added patch to mark DllCanUnloadNow and DllGetClassObject as private (by Amine Khaldi, wine-patched/pull/3).
|
||||
* Added patch to skip Wine specific __wine_check_for_events calls in ReactOS (by Amine Khaldi, wine-patched/pull/4).
|
||||
* Added patch to declare pDirectInputCreateEx in a MSVC compatible way (by Amine Khaldi, wine-patched/pull/5).
|
||||
* Added patch to complete and properly pack DNS_HEADER structure (by Amine Khaldi, wine-patched/pull/6).
|
||||
* Added patch to fix race-condition when threads are killed during shutdown.
|
||||
* Added patch to avoid deadlock by using _exit() in NtTerminateProcess.
|
||||
* Added patch to fallback to global key state for threads without a queue.
|
||||
* Added patch to implement SetFileInformationByHandle.
|
||||
* Added patch for CopyFileEx progress callback and cancellation support.
|
||||
* Added first set of patches for job objects (by Andrew Cook).
|
||||
* Added patch for stub of gdiplus.GdipCreateEffect.
|
||||
* Added patches for ntoskrnl.ProbeFor{Read,Write}.
|
||||
* Added patch for support of shell32 file operation progress dialog.
|
||||
* Added patch for basic implementation of job objects.
|
||||
* Added patch to display animations for SHFileOperation progress dialog.
|
||||
* Added patch to enforce that surfaces are flushed after ReleaseDC.
|
||||
* Added patch to implement IProgressDialog::SetAnimation.
|
||||
* Added patch in order to allow to override number of quality levels for D3DMULTISAMPLE_NONMASKABLE.
|
||||
* Added patch for job object completion support.
|
||||
* Added patch to properly track handle count of wineserver objects.
|
||||
* Added patch to implement JOB_OBJECT_LIMIT_KILL_ON_JOB_CLOSE.
|
||||
* Added patch to implement PROGDLG_AUTOTIME for IProgressDialog.
|
||||
* Added patch to implement support for NULL job handles in IsProcessInJob.
|
||||
* Added patch to implement support for waiting on job object.
|
||||
* Added patch to fix crash in clip_cursor_notify caused by uninitialized TLS.
|
||||
* Added patches to make various functions in d3d8 / ddraw hotpatchable (required for fraps).
|
||||
* Added patch to make GetLogicalProcessorInformationEx a stub which returns TRUE.
|
||||
* Added patches to fix race-condition when closing browseui IProcessDialog.
|
||||
* Added patch to avoid unloading msctf library while textservices are activated.
|
||||
* Added patch to correct DDSCAPS2 and DDSURFACEDESC2 structure (by Amine Khaldi, wine-patched/pull/7).
|
||||
* Added patch to fix crash when trying to switch back to a 16-bit stack.
|
||||
* Added patches to improve performance by reusing old async IO structure if possible.
|
||||
* Added patch to increase wineconsole commandline buffer size.
|
||||
* Added patch to replace hardcoded values with sizeof(GUID) for d3dxof.
|
||||
* Added patch to implement cuModuleLoad wrapper function.
|
||||
* Added patch to process APC calls before starting process.
|
||||
* Removed patch to properly call DriverUnload when unloading device drivers (accepted upstream).
|
||||
* Removed patch to allow Accept-Encoding for HTTP/1.0 in wininet (accepted upstream).
|
||||
* Removed patch to declare pDirectInputCreateEx in a MSVC compatible way (accepted upstream).
|
||||
* Removed patch to limit cross thread access to ImmSet* functions (accepted upstream).
|
||||
* Removed patch to fix arguments for OSMesaMakeCurrent when using 16 bit formats (accepted upstream).
|
||||
* Removed patch to fix memory leak in ApplicationAssociationRegistration_QueryCurrentDefault (accepted upstream).
|
||||
* Removed patch to complete and properly pack DNS_HEADER structure (accepted upstream).
|
||||
* Removed patch to avoid accessing stack below ESP when restoring thread context (accepted upstream).
|
||||
* Removed patch to fix mouse jittering in Planetside 2 (accepted upstream).
|
||||
* Removed patch to handle write watches while we're on the signal stack (accepted upstream).
|
||||
* Removed patch with tests for NtQueryLicenseKey (accepted upstream).
|
||||
* Removed patch to fix crash when trying to switch back to a 16-bit stack (accepted upstream).
|
||||
* Removed patch to fix definition of SECTION_BASIC_INFORMATION and SECTION_IMAGE_INFORMATION (accepted upstream).
|
||||
* Removed patch to add library override instead of closing winecfg when pressing ENTER (accepted upstream).
|
||||
* Removed patch to fix init of LONGLONG variable with a negative value in TGA decoder (accepted upstream).
|
||||
* Removed patch to fix parameters for ConvertToIndexedBlendedMesh stub (accepted upstream).
|
||||
-- Sebastian Lackner <sebastian@fds-team.de> Sat, 07 Mar 2015 23:09:11 +0100
|
||||
|
||||
wine-staging (1.7.37) unstable; urgency=low
|
||||
* Fix a TRACE line in the iphlpapi-TCP_Table patchset.
|
||||
* Fix an issue in the d3dx9_36-GetShaderSemantics patchset.
|
||||
|
0
debian/conffiles
vendored
0
debian/conffiles
vendored
41
debian/control
vendored
41
debian/control
vendored
@@ -96,6 +96,7 @@ Recommends: libcapi20-3,
|
||||
libtiff5 | libtiff4,
|
||||
libtxc-dxtn-s2tc0,
|
||||
libv4l-0,
|
||||
libva-drm1,
|
||||
libva-x11-1,
|
||||
libxcomposite1,
|
||||
libxcursor1,
|
||||
@@ -110,7 +111,8 @@ Recommends: libcapi20-3,
|
||||
libgsm1
|
||||
Section: otherosfs
|
||||
Priority: optional
|
||||
Description: The Staging Edition is a special build of the popular Wine software
|
||||
Description: special build of the popular Wine software
|
||||
The Staging Edition is a special build of the popular Wine software
|
||||
with patches representing my current staging tree for Wine.
|
||||
.
|
||||
Microsoft Windows Compatibility Layer (Binary Emulator and Library)
|
||||
@@ -121,9 +123,9 @@ Description: The Staging Edition is a special build of the popular Wine software
|
||||
.
|
||||
This package provides support for loading 32-bit x86 Windows applications
|
||||
.
|
||||
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 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.
|
||||
|
||||
Package: wine-staging-amd64
|
||||
Architecture: amd64
|
||||
@@ -151,6 +153,7 @@ Recommends: libcapi20-3,
|
||||
libtiff5 | libtiff4,
|
||||
libtxc-dxtn-s2tc0,
|
||||
libv4l-0,
|
||||
libva-drm1,
|
||||
libva-x11-1,
|
||||
libxcomposite1,
|
||||
libxcursor1,
|
||||
@@ -165,7 +168,8 @@ Recommends: libcapi20-3,
|
||||
libgsm1
|
||||
Section: otherosfs
|
||||
Priority: optional
|
||||
Description: The Staging Edition is a special build of the popular Wine software
|
||||
Description: special build of the popular Wine software
|
||||
The Staging Edition is a special build of the popular Wine software
|
||||
with patches representing my current staging tree for Wine.
|
||||
.
|
||||
Microsoft Windows Compatibility Layer (Binary Emulator and Library)
|
||||
@@ -176,9 +180,9 @@ Description: The Staging Edition is a special build of the popular Wine software
|
||||
.
|
||||
This package provides support for loading 64-bit x86 Windows applications
|
||||
.
|
||||
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 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.
|
||||
|
||||
Package: wine-staging
|
||||
Architecture: i386 amd64
|
||||
@@ -189,7 +193,8 @@ Depends: ${misc:Depends}, ${shlibs:Depends},
|
||||
wine-staging-amd64 (= ${binary:Version}) [amd64],
|
||||
Section: otherosfs
|
||||
Priority: optional
|
||||
Description: The Staging Edition is a special build of the popular Wine software
|
||||
Description: special build of the popular Wine software
|
||||
The Staging Edition is a special build of the popular Wine software
|
||||
with patches representing my current staging tree for Wine.
|
||||
.
|
||||
Microsoft Windows Compatibility Layer (Binary Emulator and Library)
|
||||
@@ -198,13 +203,13 @@ Description: The Staging Edition is a special build of the popular Wine software
|
||||
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 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 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.
|
||||
|
||||
Package: wine-staging-dev
|
||||
Architecture: i386 amd64
|
||||
@@ -215,7 +220,8 @@ Depends: libc6-dev,
|
||||
wine-staging-amd64 (= ${binary:Version}) [amd64],
|
||||
Section: libdevel
|
||||
Priority: optional
|
||||
Description: The Staging Edition is a special build of the popular Wine software
|
||||
Description: special build of the popular Wine software
|
||||
The Staging Edition is a special build of the popular Wine software
|
||||
with patches representing my current staging tree for Wine.
|
||||
.
|
||||
Microsoft Windows Compatibility Layer (Binary Emulator and Library)
|
||||
@@ -236,7 +242,8 @@ Depends: ${shlibs:Depends},
|
||||
wine-staging-amd64 (= ${binary:Version}) [amd64],
|
||||
Section: debug
|
||||
Priority: optional
|
||||
Description: The Staging Edition is a special build of the popular Wine software
|
||||
Description: special build of the popular Wine software
|
||||
The Staging Edition is a special build of the popular Wine software
|
||||
with patches representing my current staging tree for Wine.
|
||||
.
|
||||
Microsoft Windows Compatibility Layer (Binary Emulator and Library)
|
||||
|
226
debian/copyright
vendored
Normal file
226
debian/copyright
vendored
Normal file
@@ -0,0 +1,226 @@
|
||||
Format: http://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
|
||||
Upstream-Name: Wine Staging
|
||||
Source: http://www.winehq.com/ and http://www.wine-staging.com/
|
||||
|
||||
Files: *
|
||||
Copyright: 1993-2015, the Wine project authors
|
||||
2014-2015, the Wine Staging project authors
|
||||
License: LGPL-2.1
|
||||
|
||||
Files: patches/fonts-Missing_Fonts/0001-fonts-Add-Liberation-Sans-as-an-Arial-replacement.patch
|
||||
Copyright: 2007, Red Hat
|
||||
License: LiberationFontLicense
|
||||
|
||||
Files: patches/fonts-Missing_Fonts/0002-fonts-Add-WenQuanYi-Micro-Hei-as-a-Microsoft-Yahei-r.patch
|
||||
Copyright: 2008-2009, WenQuanYi Board of Trustees
|
||||
2007, Google Corporation
|
||||
2003-2004, Electronic Font Open Laboratory
|
||||
1990-2003, Wada Laboratory, the University of Tokyo
|
||||
License: Apache-2 or GPL-3+ with font embedding exceptions
|
||||
|
||||
Files: patches/fonts-Missing_Fonts/0003-fonts-Add-Courier-Prime-as-a-Courier-New-replacement
|
||||
Copyright: 2013, Quote-Unquote Apps
|
||||
License: OFL1.1
|
||||
|
||||
License: LGPL-2.1
|
||||
This software is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Lesser General Public
|
||||
License as published by the Free Software Foundation; either
|
||||
version 2.1 of the License, or (at your option) any later version.
|
||||
.
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
Lesser General Public License for more details.
|
||||
.
|
||||
On Debian systems, the complete text of the GNU Library General Public
|
||||
License can be found in /usr/share/common-licenses/LGPL-2.1 file.
|
||||
|
||||
License: LiberationFontLicense
|
||||
LICENSE AGREEMENT AND LIMITED PRODUCT WARRANTY
|
||||
LIBERATION FONT SOFTWARE
|
||||
.
|
||||
This agreement governs the use of the Software and any updates to the Software,
|
||||
regardless of the delivery mechanism. Subject to the following terms, Red Hat,
|
||||
Inc. ("Red Hat") grants to the user ("Client") a license to this work pursuant
|
||||
to the GNU General Public License v.2 with the exceptions set forth below and
|
||||
such other terms as our set forth in this End User License Agreement.
|
||||
.
|
||||
1.The Software and License Exception. LIBERATION font software (the "Software")
|
||||
consists of TrueType-OpenType formatted font software for rendering LIBERATION
|
||||
typefaces in sans serif, serif, and monospaced character styles. You are licensed
|
||||
to use, modify, copy, and distribute the Software pursuant to the GNU General
|
||||
Public License v.2 with the following exceptions:
|
||||
(a)As a special exception, if you create a document which uses this font, and
|
||||
embed this font or unaltered portions of this font into the document, this font
|
||||
does not by itself cause the resulting document to be covered by the GNU General
|
||||
Public License. This exception does not however invalidate any other reasons why
|
||||
the document might be covered by the GNU General Public License. If you modify
|
||||
this font, you may extend this exception to your version of the font, but you
|
||||
are not obligated to do so. If you do not wish to do so, delete this exception
|
||||
statement from your version.
|
||||
(b)As a further exception, any distribution of the object code of the Software
|
||||
in a physical product must provide you the right to access and modify the source
|
||||
code for the Software and to reinstall that modified version of the Software in
|
||||
object code form on the same physical product on which you received it.
|
||||
2.Intellectual Property Rights. The Software and each of its components,
|
||||
including the source code, documentation, appearance, structure and organization
|
||||
are owned by Red Hat and others and are protected under copyright and other laws.
|
||||
Title to the Software and any component, or to any copy, modification, or merged
|
||||
portion shall remain with the aforementioned, subject to the applicable license.
|
||||
The "LIBERATION" trademark is a trademark of Red Hat, Inc. in the U.S. and other
|
||||
countries. This agreement does not permit Client to distribute modified versions
|
||||
of the Software using Red Hat's trademarks. If Client makes a redistribution of
|
||||
a modified version of the Software, then Client must modify the files names to
|
||||
remove any reference to the Red Hat trademarks and must not use the Red Hat
|
||||
trademarks in any way to reference or promote the modified Software.
|
||||
3.Limited Warranty. To the maximum extent permitted under applicable law, the
|
||||
Software is provided and licensed "as is" without warranty of any kind,
|
||||
expressed or implied, including the implied warranties of merchantability,
|
||||
non-infringement or fitness for a particular purpose. Red Hat does not warrant
|
||||
that the functions contained in the Software will meet Client's requirements or
|
||||
that the operation of the Software will be entirely error free or appear
|
||||
precisely as described in the accompanying documentation.
|
||||
4.Limitation of Remedies and Liability. To the maximum extent permitted by
|
||||
applicable law, Red Hat or any Red Hat authorized dealer will not be liable to
|
||||
Client for any incidental or consequential damages, including lost profits or
|
||||
lost savings arising out of the use or inability to use the Software, even if
|
||||
Red Hat or such dealer has been advised of the possibility of such damages.
|
||||
5.General. If any provision of this agreement is held to be unenforceable, that
|
||||
shall not affect the enforceability of the remaining provisions. This agreement
|
||||
shall be governed by the laws of the State of North Carolina and of the United
|
||||
States, without regard to any conflict of laws provisions, except that the
|
||||
United Nations Convention on the International Sale of Goods shall not apply.
|
||||
Copyright © 2007 Red Hat, Inc. All rights reserved. LIBERATION is a trademark
|
||||
of Red Hat, Inc.
|
||||
|
||||
License: GPL-3+ with font embedding exceptions
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
.
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
.
|
||||
As a special exception, if you create a document which uses this font,
|
||||
and embed this font or unaltered portions of this font into the
|
||||
document, this font does not by itself cause the resulting document to
|
||||
be covered by the GNU General Public License. This exception does not
|
||||
however invalidate any other reasons why the document might be covered
|
||||
by the GNU General Public License. If you modify this font, you may
|
||||
extend this exception to your version of the font, but you are not
|
||||
obligated to do so. If you do not wish to do so, delete this exception
|
||||
statement from your version.
|
||||
.
|
||||
On Debian systems, the complete text of the GNU General Public License
|
||||
version 3 can be found in /usr/share/common-licenses/GPL-3 file.
|
||||
|
||||
License: OFL1.1
|
||||
Copyright (c) 2013, Quote-Unquote Apps (http://quoteunquoteapps.com),
|
||||
with Reserved Font Name Courier Prime.
|
||||
.
|
||||
This Font Software is licensed under the SIL Open Font License, Version 1.1.
|
||||
This license is copied below, and is also available with a FAQ at:
|
||||
http://scripts.sil.org/OFL
|
||||
.
|
||||
PREAMBLE
|
||||
The goals of the Open Font License (OFL) are to stimulate worldwide
|
||||
development of collaborative font projects, to support the font creation
|
||||
efforts of academic and linguistic communities, and to provide a free and
|
||||
open framework in which fonts may be shared and improved in partnership
|
||||
with others.
|
||||
.
|
||||
The OFL allows the licensed fonts to be used, studied, modified and
|
||||
redistributed freely as long as they are not sold by themselves. The
|
||||
fonts, including any derivative works, can be bundled, embedded,
|
||||
redistributed and/or sold with any software provided that any reserved
|
||||
names are not used by derivative works. The fonts and derivatives,
|
||||
however, cannot be released under any other type of license. The
|
||||
requirement for fonts to remain under this license does not apply
|
||||
to any document created using the fonts or their derivatives.
|
||||
.
|
||||
DEFINITIONS
|
||||
"Font Software" refers to the set of files released by the Copyright
|
||||
Holder(s) under this license and clearly marked as such. This may
|
||||
include source files, build scripts and documentation.
|
||||
.
|
||||
"Reserved Font Name" refers to any names specified as such after the
|
||||
copyright statement(s).
|
||||
.
|
||||
"Original Version" refers to the collection of Font Software components as
|
||||
distributed by the Copyright Holder(s).
|
||||
.
|
||||
"Modified Version" refers to any derivative made by adding to, deleting,
|
||||
or substituting -- in part or in whole -- any of the components of the
|
||||
Original Version, by changing formats or by porting the Font Software to a
|
||||
new environment.
|
||||
.
|
||||
"Author" refers to any designer, engineer, programmer, technical
|
||||
writer or other person who contributed to the Font Software.
|
||||
.
|
||||
PERMISSION & CONDITIONS
|
||||
Permission is hereby granted, free of charge, to any person obtaining
|
||||
a copy of the Font Software, to use, study, copy, merge, embed, modify,
|
||||
redistribute, and sell modified and unmodified copies of the Font
|
||||
Software, subject to the following conditions:
|
||||
.
|
||||
1) Neither the Font Software nor any of its individual components,
|
||||
in Original or Modified Versions, may be sold by itself.
|
||||
.
|
||||
2) Original or Modified Versions of the Font Software may be bundled,
|
||||
redistributed and/or sold with any software, provided that each copy
|
||||
contains the above copyright notice and this license. These can be
|
||||
included either as stand-alone text files, human-readable headers or
|
||||
in the appropriate machine-readable metadata fields within text or
|
||||
binary files as long as those fields can be easily viewed by the user.
|
||||
.
|
||||
3) No Modified Version of the Font Software may use the Reserved Font
|
||||
Name(s) unless explicit written permission is granted by the corresponding
|
||||
Copyright Holder. This restriction only applies to the primary font name as
|
||||
presented to the users.
|
||||
.
|
||||
4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
|
||||
Software shall not be used to promote, endorse or advertise any
|
||||
Modified Version, except to acknowledge the contribution(s) of the
|
||||
Copyright Holder(s) and the Author(s) or with their explicit written
|
||||
permission.
|
||||
.
|
||||
5) The Font Software, modified or unmodified, in part or in whole,
|
||||
must be distributed entirely under this license, and must not be
|
||||
distributed under any other license. The requirement for fonts to
|
||||
remain under this license does not apply to any document created
|
||||
using the Font Software.
|
||||
.
|
||||
TERMINATION
|
||||
This license becomes null and void if any of the above conditions are
|
||||
not met.
|
||||
.
|
||||
DISCLAIMER
|
||||
THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
|
||||
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
|
||||
OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
|
||||
COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
||||
INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
|
||||
DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
|
||||
OTHER DEALINGS IN THE FONT SOFTWARE.
|
||||
|
||||
License: Apache-2
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
.
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
.
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
.
|
||||
On Debian systems, the complete text of the Apache License 2.0 can be
|
||||
found in /usr/share/common-licenses/Apache-2.0 file.
|
1
debian/source/format
vendored
Normal file
1
debian/source/format
vendored
Normal file
@@ -0,0 +1 @@
|
||||
3.0 (native)
|
7
debian/tools/patchinstall.sh.in
vendored
7
debian/tools/patchinstall.sh.in
vendored
@@ -71,7 +71,7 @@ enable=1
|
||||
|
||||
# Find location of patches
|
||||
patchdir="$(dirname "$(readlink -f "$0")")"
|
||||
if ! test -f "$patchdir/patchinstall.sh"; then
|
||||
if test ! -f "$patchdir/patchinstall.sh"; then
|
||||
if test -f ./patchinstall.sh; then
|
||||
patchdir="$(pwd)"
|
||||
else
|
||||
@@ -191,7 +191,8 @@ elif test "$backend" = "epatch"; then
|
||||
|
||||
if ! command -v epatch >/dev/null 2>&1 || \
|
||||
! command -v ebegin >/dev/null 2>&1 || \
|
||||
! command -v eend >/dev/null 2>&1; then
|
||||
! command -v eend >/dev/null 2>&1 || \
|
||||
! command -v die >/dev/null 2>&1; then
|
||||
abort "Shell functions epatch/ebegin/eend not found. You have to source this script from your ebuild."
|
||||
fi
|
||||
|
||||
@@ -294,8 +295,8 @@ if test "$enable_patchlist" -eq 1; then
|
||||
|
||||
# Generate a temporary patch containing the patchlist and apply it
|
||||
patch_data=$(cat "$patchlist" | sort)
|
||||
patch_lines=$(echo "$patch_data" | wc -l)
|
||||
if test ! -z "$patch_data"; then
|
||||
patch_lines=$(echo "$patch_data" | wc -l)
|
||||
patch_lines=$((${{patch_lines}}+21))
|
||||
cat > "$patchlist" <<EOF
|
||||
From: Wine Staging Team <webmaster@fds-team.de>
|
||||
|
226
debian/tools/patchupdate.py
vendored
226
debian/tools/patchupdate.py
vendored
@@ -21,6 +21,8 @@
|
||||
|
||||
import binascii
|
||||
import cPickle as pickle
|
||||
import contextlib
|
||||
import fnmatch
|
||||
import hashlib
|
||||
import itertools
|
||||
import math
|
||||
@@ -35,6 +37,8 @@ import subprocess
|
||||
import sys
|
||||
import tempfile
|
||||
import textwrap
|
||||
import urllib
|
||||
import xml.dom.minidom
|
||||
|
||||
_devnull = open(os.devnull, 'wb')
|
||||
|
||||
@@ -73,6 +77,7 @@ class PatchSet(object):
|
||||
self.patches = []
|
||||
self.modified_files = set()
|
||||
self.depends = set()
|
||||
self.auto_depends = set()
|
||||
|
||||
self.verify_time = None
|
||||
|
||||
@@ -133,6 +138,34 @@ def _parse_int(val, default=0):
|
||||
except AttributeError:
|
||||
return default
|
||||
|
||||
def _winebugs_query(bugids):
|
||||
"""Query short_desc from multiple wine bugzilla bugs at the same time."""
|
||||
bugids = list(set(bugids)) # Remove duplicates and convert to fixed order
|
||||
if len(bugids) == 0: return {}
|
||||
|
||||
# Query bugzilla
|
||||
url = "http://bugs.winehq.org/show_bug.cgi?%s&ctype=xml&field=short_desc&field=bug_status&field=resolution" % \
|
||||
"&".join(["id=%d" % bugid for bugid in bugids])
|
||||
with contextlib.closing(urllib.urlopen(url)) as fp:
|
||||
data = xml.dom.minidom.parseString(fp.read())
|
||||
|
||||
# convert xml in a dictionary containing all bugs we found
|
||||
result = {}
|
||||
for element in data.getElementsByTagName('bug_id'):
|
||||
bugids.remove(int(element.firstChild.data))
|
||||
|
||||
def _get_text(n):
|
||||
return n.firstChild.data if (n and n.firstChild) else None
|
||||
|
||||
for bugid, element in zip(bugids, data.getElementsByTagName('bug')):
|
||||
if element.getElementsByTagName('bug_id'): continue
|
||||
result[bugid] = {
|
||||
'short_desc': _get_text(element.getElementsByTagName('short_desc')[0]),
|
||||
'bug_status': _get_text(element.getElementsByTagName('bug_status')[0]),
|
||||
'resolution': _get_text(element.getElementsByTagName('resolution')[0]) }
|
||||
|
||||
return result
|
||||
|
||||
def _read_changelog():
|
||||
"""Read information from changelog."""
|
||||
with open(config.path_changelog) as fp:
|
||||
@@ -188,65 +221,12 @@ def enum_directories(revision, path):
|
||||
|
||||
return dirs
|
||||
|
||||
def read_definition(revision, filename, name_to_id):
|
||||
"""Read a definition file and return information as tuple (depends, fixes)."""
|
||||
filename = os.path.join(filename, "definition")
|
||||
if revision is None:
|
||||
with open(filename) as fp:
|
||||
content = fp.read()
|
||||
else:
|
||||
filename = "%s:%s" % (revision, filename)
|
||||
try:
|
||||
content = subprocess.check_output(["git", "show", filename], stderr=_devnull)
|
||||
except subprocess.CalledProcessError:
|
||||
raise IOError("Failed to load %s" % filename)
|
||||
|
||||
depends = set()
|
||||
fixes = []
|
||||
disabled = False
|
||||
ifdefined = None
|
||||
|
||||
for line in content.split("\n"):
|
||||
if line.startswith("#"):
|
||||
continue
|
||||
tmp = line.split(":", 1)
|
||||
if len(tmp) != 2:
|
||||
continue
|
||||
|
||||
key, val = tmp[0].lower(), tmp[1].strip()
|
||||
if key == "depends":
|
||||
if name_to_id is not None:
|
||||
if not name_to_id.has_key(val):
|
||||
raise PatchUpdaterError("Definition file %s references unknown dependency %s" % (filename, val))
|
||||
depends.add(name_to_id[val])
|
||||
|
||||
elif key == "fixes":
|
||||
r = re.match("^[0-9]+$", val)
|
||||
if r:
|
||||
fixes.append((int(val), None))
|
||||
continue
|
||||
r = re.match("^\\[ *([0-9]+) *\\](.*)$", val)
|
||||
if r:
|
||||
fixes.append((int(r.group(1)), r.group(2).strip()))
|
||||
continue
|
||||
fixes.append((None, val))
|
||||
|
||||
elif key == "disabled":
|
||||
disabled = _parse_int(val)
|
||||
|
||||
elif key == "ifdefined":
|
||||
ifdefined = val
|
||||
|
||||
elif revision is None:
|
||||
print "WARNING: Ignoring unknown command in definition file %s: %s" % (filename, line)
|
||||
|
||||
return depends, fixes, disabled, ifdefined
|
||||
|
||||
def read_patchset(revision = None):
|
||||
"""Read information about all patchsets for a specific revision."""
|
||||
unique_id = itertools.count()
|
||||
all_patches = {}
|
||||
name_to_id = {}
|
||||
all_bugids = set()
|
||||
|
||||
# Read in sorted order (to ensure created Makefile doesn't change too much)
|
||||
for name, directory in sorted(enum_directories(revision, config.path_patches)):
|
||||
@@ -283,10 +263,72 @@ def read_patchset(revision = None):
|
||||
# Now read the definition files in a second step
|
||||
for i, patch in all_patches.iteritems():
|
||||
try:
|
||||
patch.depends, patch.fixes, patch.disabled, patch.ifdefined = \
|
||||
read_definition(revision, os.path.join(config.path_patches, patch.name), name_to_id)
|
||||
except IOError:
|
||||
patch.depends, patch.fixes, patch.disabled, patch.ifdefined = set(), [], False, None
|
||||
filename = os.path.join(os.path.join(config.path_patches, patch.name), "definition")
|
||||
if revision is None:
|
||||
with open(filename) as fp:
|
||||
content = fp.read()
|
||||
else:
|
||||
filename = "%s:%s" % (revision, filename)
|
||||
content = subprocess.check_output(["git", "show", filename], stderr=_devnull)
|
||||
except (IOError, subprocess.CalledProcessError):
|
||||
continue # Skip this definition file
|
||||
|
||||
for line in content.split("\n"):
|
||||
if line.startswith("#"):
|
||||
continue
|
||||
tmp = line.split(":", 1)
|
||||
if len(tmp) != 2:
|
||||
continue
|
||||
|
||||
key, val = tmp[0].lower(), tmp[1].strip()
|
||||
if key == "depends":
|
||||
if not name_to_id.has_key(val):
|
||||
raise PatchUpdaterError("Definition file %s references unknown dependency %s" % (filename, val))
|
||||
patch.depends.add(name_to_id[val])
|
||||
|
||||
elif key == "apply-after":
|
||||
for j, other_patch in all_patches.iteritems():
|
||||
if i != j and any([fnmatch.fnmatch(f, val) for f in other_patch.modified_files]):
|
||||
patch.auto_depends.add(j)
|
||||
|
||||
elif key == "fixes":
|
||||
r = re.match("^[0-9]+$", val)
|
||||
if r:
|
||||
bugid = int(val)
|
||||
patch.fixes.append((bugid, None))
|
||||
all_bugids.add(bugid)
|
||||
continue
|
||||
r = re.match("^\\[ *([0-9]+) *\\](.*)$", val)
|
||||
if r:
|
||||
bugid = int(r.group(1))
|
||||
patch.fixes.append((bugid, r.group(2).strip()))
|
||||
all_bugids.add(bugid)
|
||||
continue
|
||||
patch.fixes.append((None, val))
|
||||
|
||||
elif key == "disabled":
|
||||
patch.disabled = _parse_int(val)
|
||||
|
||||
elif key == "ifdefined":
|
||||
patch.ifdefined = val
|
||||
|
||||
elif revision is None:
|
||||
print "WARNING: Ignoring unknown command in definition file %s: %s" % (filename, line)
|
||||
|
||||
# To simplify the task of keeping the bug list up-to-date, list all bugs
|
||||
# which might require attention.
|
||||
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 once:
|
||||
print ""
|
||||
print "WARNING: The following bugs might require attention:"
|
||||
print ""
|
||||
once = False
|
||||
print " #%d - \"%s\" - %s %s" % (bugid, bug['short_desc'], bug['bug_status'],
|
||||
bug['resolution'] if bug['resolution'] else "")
|
||||
print ""
|
||||
|
||||
return all_patches
|
||||
|
||||
@@ -375,6 +417,7 @@ def resolve_dependencies(all_patches, index = None, depends = None):
|
||||
# Recusively resolve dependencies
|
||||
all_patches[i].verify_resolved = -1
|
||||
_resolve(all_patches[i].depends)
|
||||
_resolve(all_patches[i].auto_depends)
|
||||
all_patches[i].verify_resolved = 1
|
||||
resolved.append(i)
|
||||
|
||||
@@ -458,46 +501,59 @@ def generate_script(all_patches):
|
||||
modified_files[f].append(i)
|
||||
|
||||
# Check dependencies
|
||||
for filename, indices in modified_files.iteritems():
|
||||
pool = multiprocessing.pool.ThreadPool(processes=4)
|
||||
try:
|
||||
for filename, indices in modified_files.iteritems():
|
||||
|
||||
# If one of patches is a binary patch, then we cannot / won't verify it - require dependencies in this case
|
||||
if contains_binary_patch(all_patches, indices, filename):
|
||||
if not causal_time_relation_any(all_patches, indices):
|
||||
raise PatchUpdaterError("Because of binary patch modifying file %s the following patches need explicit dependencies: %s" %
|
||||
(filename, ", ".join([all_patches[i].name for i in indices])))
|
||||
continue
|
||||
# If one of patches is a binary patch, then we cannot / won't verify it - require dependencies in this case
|
||||
if contains_binary_patch(all_patches, indices, filename):
|
||||
if not causal_time_relation_any(all_patches, indices):
|
||||
raise PatchUpdaterError("Because of binary patch modifying file %s the following patches need explicit dependencies: %s" %
|
||||
(filename, ", ".join([all_patches[i].name for i in indices])))
|
||||
continue
|
||||
|
||||
original_content = get_wine_file(filename)
|
||||
selected_patches = select_patches(all_patches, indices, filename)
|
||||
original_content = get_wine_file(filename)
|
||||
selected_patches = select_patches(all_patches, indices, filename)
|
||||
|
||||
# Show a progress bar while applying the patches - this task might take some time
|
||||
with progressbar.ProgressBar(desc=filename, total=2 ** len(indices)) as progress:
|
||||
for k, bitstring in enumerate(itertools.product([0,1], repeat=len(indices))):
|
||||
progress.update(k)
|
||||
# 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:
|
||||
|
||||
set_apply = [(i, all_patches[i]) for u, i in zip(bitstring, indices) if u]
|
||||
set_skip = [(i, all_patches[i]) for u, i in zip(bitstring, indices) if not u]
|
||||
test_apply = True
|
||||
def test_apply(bitstring):
|
||||
set_apply = [(i, all_patches[i]) for u, i in zip(bitstring, indices) if u]
|
||||
set_skip = [(i, all_patches[i]) for u, i in zip(bitstring, indices) if not u]
|
||||
|
||||
# Check if there is any patch2 which depends directly or indirectly on patch1.
|
||||
# If this is the case we found an impossible situation, we can be skipped in this test.
|
||||
for i, patch1 in set_apply:
|
||||
for j, patch2 in set_skip:
|
||||
if causal_time_smaller(patch2.verify_time, patch1.verify_time):
|
||||
test_apply = False
|
||||
break
|
||||
if not test_apply:
|
||||
break
|
||||
# Check if there is any patch2 which depends directly or indirectly on patch1.
|
||||
# If this is the case we found an impossible situation, we can be skipped in this test.
|
||||
for i, patch1 in set_apply:
|
||||
for j, patch2 in set_skip:
|
||||
if causal_time_smaller(patch2.verify_time, patch1.verify_time):
|
||||
return True # we can skip this test
|
||||
|
||||
if test_apply:
|
||||
try:
|
||||
original = original_content
|
||||
for i, patch in set_apply:
|
||||
original = patchutils.apply_patch(original, selected_patches[i][1], fuzz=0)
|
||||
except patchutils.PatchApplyError:
|
||||
return False
|
||||
|
||||
return True # everything is fine
|
||||
|
||||
def test_apply_seq(bitstrings):
|
||||
for bitstring in bitstrings:
|
||||
if not test_apply(bitstring):
|
||||
return False
|
||||
return True
|
||||
|
||||
it = _split_seq(itertools.product([0,1], repeat=len(indices)), chunk_size)
|
||||
for k, res in enumerate(pool.imap_unordered(test_apply_seq, it)):
|
||||
if not res:
|
||||
progress.finish("<failed to apply>")
|
||||
raise PatchUpdaterError("Changes to file %s don't apply: %s" %
|
||||
(filename, ", ".join([all_patches[i].name for i in indices])))
|
||||
progress.update(k)
|
||||
finally:
|
||||
pool.close()
|
||||
|
||||
# Generate code for helper functions
|
||||
lines = []
|
||||
@@ -589,7 +645,7 @@ def generate_markdown(all_patches, stable_patches, stable_compholio_version):
|
||||
return "* %s ([Wine Bug #%d](https://bugs.winehq.org/show_bug.cgi?id=%d))" % \
|
||||
(bugname, bugid, bugid) #, short_desc.replace("\\", "\\\\").replace("\"", "\\\""))
|
||||
|
||||
all_fixes = {}
|
||||
all_fixes = {}
|
||||
|
||||
# Get fixes for current version
|
||||
for _, patch in all_patches.iteritems():
|
||||
|
6
debian/tools/patchutils.py
vendored
6
debian/tools/patchutils.py
vendored
@@ -375,7 +375,7 @@ def generate_ifdef_patch(original, patched, ifdef):
|
||||
"""Generate a patch which adds #ifdef where necessary to keep both the original and patched version."""
|
||||
|
||||
def _preprocess_source(fp):
|
||||
"""Simple C preprocessor to determine where we can savely add #ifdef instructions."""
|
||||
"""Simple C preprocessor to determine where we can safely add #ifdef instructions."""
|
||||
|
||||
_re_state0 = re.compile("(\"|/[/*])")
|
||||
_re_state1 = re.compile("(\\\"|\")")
|
||||
@@ -418,7 +418,7 @@ def generate_ifdef_patch(original, patched, ifdef):
|
||||
elif match.group(0) == "/*":
|
||||
state = 2 # Begin of comment
|
||||
elif match.group(0) == "//":
|
||||
break # Rest of the line is a comment, which can be savely ignored
|
||||
break # Rest of the line is a comment, which can be safely ignored
|
||||
else:
|
||||
assert 0
|
||||
|
||||
@@ -460,7 +460,7 @@ def generate_ifdef_patch(original, patched, ifdef):
|
||||
# The basic of idea of this algorithm is as following:
|
||||
#
|
||||
# (1) determine diff between original file and patched file
|
||||
# (2) run the preprocessor, to determine where #ifdefs can be savely added
|
||||
# (2) run the preprocessor, to determine where #ifdefs can be safely added
|
||||
# (3) use diff and preprocessor information to create a merged version containing #ifdefs
|
||||
# (4) create another diff to apply the changes on the patched version
|
||||
#
|
||||
|
5
debian/wine-staging.docs
vendored
5
debian/wine-staging.docs
vendored
@@ -1,9 +1,4 @@
|
||||
documentation/README.*
|
||||
ANNOUNCE
|
||||
AUTHORS
|
||||
LICENSE
|
||||
COPYING.LIB
|
||||
COPYING.arial
|
||||
COPYING.cour
|
||||
COPYING.msyh
|
||||
README
|
||||
|
File diff suppressed because it is too large
Load Diff
@@ -1,19 +1,19 @@
|
||||
From 5f0f1d8dc69cd473f35c874b46e98a34930d0b46 Mon Sep 17 00:00:00 2001
|
||||
From e71a6c24c41e3d390a81aac1986938a1db71f9e6 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Michael=20M=C3=BCller?= <michael@fds-team.de>
|
||||
Date: Wed, 28 May 2014 19:50:51 +0200
|
||||
Subject: loader: Add commandline option --check-libs.
|
||||
|
||||
---
|
||||
include/wine/library.h | 2 +
|
||||
libs/wine/config.c | 103 +++++++++++++++++++++++++++++++++++++++++++++++++
|
||||
libs/wine/loader.c | 36 +++++++++++++++++
|
||||
libs/wine/config.c | 112 +++++++++++++++++++++++++++++++++++++++++++++++++
|
||||
libs/wine/loader.c | 36 ++++++++++++++++
|
||||
libs/wine/wine.def | 2 +
|
||||
libs/wine/wine.map | 2 +
|
||||
loader/main.c | 50 +++++++++++++++++++++++-
|
||||
6 files changed, 194 insertions(+), 1 deletion(-)
|
||||
loader/main.c | 50 +++++++++++++++++++++-
|
||||
6 files changed, 203 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/include/wine/library.h b/include/wine/library.h
|
||||
index 242bb69..fa1e339 100644
|
||||
index fae73fe..7395a11 100644
|
||||
--- a/include/wine/library.h
|
||||
+++ b/include/wine/library.h
|
||||
@@ -40,6 +40,7 @@ extern "C" {
|
||||
@@ -24,7 +24,7 @@ index 242bb69..fa1e339 100644
|
||||
extern const char *wine_get_server_dir(void);
|
||||
extern const char *wine_get_user_name(void);
|
||||
extern const char *wine_get_version(void);
|
||||
@@ -51,6 +52,7 @@ extern void wine_exec_wine_binary( const char *name, char **argv, const char *en
|
||||
@@ -52,6 +53,7 @@ extern void wine_exec_wine_binary( const char *name, char **argv, const char *en
|
||||
|
||||
typedef void (*load_dll_callback_t)( void *, const char * );
|
||||
|
||||
@@ -33,10 +33,10 @@ index 242bb69..fa1e339 100644
|
||||
extern void *wine_dlsym( void *handle, const char *symbol, char *error, size_t errorsize );
|
||||
extern int wine_dlclose( void *handle, char *error, size_t errorsize );
|
||||
diff --git a/libs/wine/config.c b/libs/wine/config.c
|
||||
index a273502..58e4977 100644
|
||||
index 5262c76..7acf51b 100644
|
||||
--- a/libs/wine/config.c
|
||||
+++ b/libs/wine/config.c
|
||||
@@ -444,6 +444,109 @@ const char *wine_get_build_dir(void)
|
||||
@@ -444,6 +444,118 @@ const char *wine_get_build_dir(void)
|
||||
return build_dir;
|
||||
}
|
||||
|
||||
@@ -104,6 +104,15 @@ index a273502..58e4977 100644
|
||||
+#ifdef SONAME_LIBV4L1
|
||||
+ SONAME_LIBV4L1,
|
||||
+#endif
|
||||
+#ifdef SONAME_LIBVA
|
||||
+ SONAME_LIBVA,
|
||||
+#endif
|
||||
+#ifdef SONAME_LIBVA_DRM
|
||||
+ SONAME_LIBVA_DRM,
|
||||
+#endif
|
||||
+#ifdef SONAME_LIBVA_X11
|
||||
+ SONAME_LIBVA_X11,
|
||||
+#endif
|
||||
+#ifdef SONAME_LIBX11
|
||||
+ SONAME_LIBX11,
|
||||
+#endif
|
||||
@@ -194,7 +203,7 @@ index 3591ede..2718857 100644
|
||||
*/
|
||||
void *wine_dlsym( void *handle, const char *symbol, char *error, size_t errorsize )
|
||||
diff --git a/libs/wine/wine.def b/libs/wine/wine.def
|
||||
index ed315bd..b6acbce 100644
|
||||
index 5b42029..6acf329 100644
|
||||
--- a/libs/wine/wine.def
|
||||
+++ b/libs/wine/wine.def
|
||||
@@ -64,6 +64,7 @@ EXPORTS
|
||||
@@ -214,7 +223,7 @@ index ed315bd..b6acbce 100644
|
||||
wine_get_sortkey
|
||||
wine_get_user_name
|
||||
diff --git a/libs/wine/wine.map b/libs/wine/wine.map
|
||||
index 2159fac..91ace06 100644
|
||||
index 7cb2918..72ffed8 100644
|
||||
--- a/libs/wine/wine.map
|
||||
+++ b/libs/wine/wine.map
|
||||
@@ -65,6 +65,7 @@ WINE_1.0
|
||||
@@ -234,7 +243,7 @@ index 2159fac..91ace06 100644
|
||||
wine_get_sortkey;
|
||||
wine_get_ss;
|
||||
diff --git a/loader/main.c b/loader/main.c
|
||||
index 76bf324..36738f2 100644
|
||||
index fa0efa2..e96363d 100644
|
||||
--- a/loader/main.c
|
||||
+++ b/loader/main.c
|
||||
@@ -36,6 +36,12 @@
|
||||
@@ -260,7 +269,7 @@ index 76bf324..36738f2 100644
|
||||
|
||||
if (argc <= 1)
|
||||
{
|
||||
@@ -135,6 +142,47 @@ static void check_command_line( int argc, char *argv[] )
|
||||
@@ -146,6 +153,47 @@ static void check_command_line( int argc, char *argv[] )
|
||||
|
||||
exit(0);
|
||||
}
|
||||
@@ -309,5 +318,5 @@ index 76bf324..36738f2 100644
|
||||
|
||||
|
||||
--
|
||||
2.1.2
|
||||
2.3.1
|
||||
|
||||
|
@@ -0,0 +1,78 @@
|
||||
From 55f59fd8586738ecb5afde3ec09d2216e2563c54 Mon Sep 17 00:00:00 2001
|
||||
From: "Erich E. Hoover" <erich.e.hoover@gmail.com>
|
||||
Date: Fri, 18 Apr 2014 14:08:36 -0600
|
||||
Subject: advapi32/tests: Add tests for inheriting ACL attributes.
|
||||
|
||||
---
|
||||
dlls/advapi32/tests/security.c | 45 +++++++++++++++++++++++++++++++++++++++++-
|
||||
1 file changed, 44 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/dlls/advapi32/tests/security.c b/dlls/advapi32/tests/security.c
|
||||
index c256753..9e44a35 100644
|
||||
--- a/dlls/advapi32/tests/security.c
|
||||
+++ b/dlls/advapi32/tests/security.c
|
||||
@@ -3118,10 +3118,11 @@ static void test_CreateDirectoryA(void)
|
||||
ACL_SIZE_INFORMATION acl_size;
|
||||
ACCESS_ALLOWED_ACE *ace;
|
||||
SECURITY_ATTRIBUTES sa;
|
||||
+ char tmpfile[MAX_PATH];
|
||||
char tmpdir[MAX_PATH];
|
||||
+ HANDLE token, hTemp;
|
||||
struct _SID *owner;
|
||||
BOOL bret = TRUE;
|
||||
- HANDLE token;
|
||||
DWORD error;
|
||||
PACL pDacl;
|
||||
|
||||
@@ -3214,6 +3215,48 @@ static void test_CreateDirectoryA(void)
|
||||
}
|
||||
LocalFree(pSD);
|
||||
|
||||
+ /* Test inheritance of ACLs */
|
||||
+ strcpy(tmpfile, tmpdir);
|
||||
+ lstrcatA(tmpfile, "/tmpfile");
|
||||
+ hTemp = CreateFileA(tmpfile, GENERIC_WRITE, FILE_SHARE_READ, NULL, CREATE_NEW,
|
||||
+ FILE_FLAG_DELETE_ON_CLOSE, NULL);
|
||||
+ error = pGetNamedSecurityInfoA(tmpfile, SE_FILE_OBJECT,
|
||||
+ OWNER_SECURITY_INFORMATION|DACL_SECURITY_INFORMATION, (PSID*)&owner,
|
||||
+ NULL, &pDacl, NULL, &pSD);
|
||||
+ ok(error == ERROR_SUCCESS, "Failed to get permissions on file.\n");
|
||||
+ bret = pGetAclInformation(pDacl, &acl_size, sizeof(acl_size), AclSizeInformation);
|
||||
+ ok(bret, "GetAclInformation failed\n");
|
||||
+ todo_wine
|
||||
+ ok(acl_size.AceCount == 2, "GetAclInformation returned unexpected entry count (%d != 2).\n",
|
||||
+ acl_size.AceCount);
|
||||
+ if (acl_size.AceCount > 0)
|
||||
+ {
|
||||
+ bret = pGetAce(pDacl, 0, (VOID **)&ace);
|
||||
+ ok(bret, "Inherited Failed to get Current User ACE.\n");
|
||||
+ bret = EqualSid(&ace->SidStart, user_sid);
|
||||
+ todo_wine
|
||||
+ ok(bret, "Inherited Current User ACE != Current User SID.\n");
|
||||
+ todo_wine
|
||||
+ ok(((ACE_HEADER *)ace)->AceFlags == INHERITED_ACE,
|
||||
+ "Inherited Current User ACE has unexpected flags (0x%x != 0x10)\n", ((ACE_HEADER *)ace)->AceFlags);
|
||||
+ ok(ace->Mask == 0x1f01ff, "Current User ACE has unexpected mask (0x%x != 0x1f01ff)\n",
|
||||
+ ace->Mask);
|
||||
+ }
|
||||
+ if (acl_size.AceCount > 1)
|
||||
+ {
|
||||
+ bret = pGetAce(pDacl, 1, (VOID **)&ace);
|
||||
+ ok(bret, "Inherited Failed to get Administators Group ACE.\n");
|
||||
+ bret = EqualSid(&ace->SidStart, admin_sid);
|
||||
+ todo_wine
|
||||
+ ok(bret, "Inherited Administators Group ACE != Administators Group SID.\n");
|
||||
+ todo_wine
|
||||
+ ok(((ACE_HEADER *)ace)->AceFlags == INHERITED_ACE,
|
||||
+ "Inherited Administators Group ACE has unexpected flags (0x%x != 0x10)\n", ((ACE_HEADER *)ace)->AceFlags);
|
||||
+ ok(ace->Mask == 0x1f01ff, "Administators Group ACE has unexpected mask (0x%x != 0x1f01ff)\n",
|
||||
+ ace->Mask);
|
||||
+ }
|
||||
+ CloseHandle(hTemp);
|
||||
+
|
||||
done:
|
||||
HeapFree(GetProcessHeap(), 0, user);
|
||||
bret = RemoveDirectoryA(tmpdir);
|
||||
--
|
||||
2.3.3
|
||||
|
@@ -0,0 +1,176 @@
|
||||
From 0a2fa63085713b6e9a05bb8094fd375370e3b7d9 Mon Sep 17 00:00:00 2001
|
||||
From: Sebastian Lackner <sebastian@fds-team.de>
|
||||
Date: Mon, 30 Mar 2015 06:19:39 +0200
|
||||
Subject: advapi32/tests: Repeat ACL inheritance tests for NtCreateFile.
|
||||
|
||||
---
|
||||
dlls/advapi32/tests/security.c | 104 ++++++++++++++++++++++++++++++++---------
|
||||
1 file changed, 81 insertions(+), 23 deletions(-)
|
||||
|
||||
diff --git a/dlls/advapi32/tests/security.c b/dlls/advapi32/tests/security.c
|
||||
index 9e44a35..7769d74 100644
|
||||
--- a/dlls/advapi32/tests/security.c
|
||||
+++ b/dlls/advapi32/tests/security.c
|
||||
@@ -27,6 +27,7 @@
|
||||
#include "windef.h"
|
||||
#include "winbase.h"
|
||||
#include "winerror.h"
|
||||
+#include "winternl.h"
|
||||
#include "aclapi.h"
|
||||
#include "winnt.h"
|
||||
#include "sddl.h"
|
||||
@@ -59,29 +60,6 @@
|
||||
#define THREAD_ALL_ACCESS_NT4 (STANDARD_RIGHTS_REQUIRED | SYNCHRONIZE | 0x3ff)
|
||||
#define THREAD_ALL_ACCESS_VISTA (STANDARD_RIGHTS_REQUIRED | SYNCHRONIZE | 0xffff)
|
||||
|
||||
-/* copied from Wine winternl.h - not included in the Windows SDK */
|
||||
-typedef enum _OBJECT_INFORMATION_CLASS {
|
||||
- ObjectBasicInformation,
|
||||
- ObjectNameInformation,
|
||||
- ObjectTypeInformation,
|
||||
- ObjectAllInformation,
|
||||
- ObjectDataInformation
|
||||
-} OBJECT_INFORMATION_CLASS, *POBJECT_INFORMATION_CLASS;
|
||||
-
|
||||
-typedef struct _OBJECT_BASIC_INFORMATION {
|
||||
- ULONG Attributes;
|
||||
- ACCESS_MASK GrantedAccess;
|
||||
- ULONG HandleCount;
|
||||
- ULONG PointerCount;
|
||||
- ULONG PagedPoolUsage;
|
||||
- ULONG NonPagedPoolUsage;
|
||||
- ULONG Reserved[3];
|
||||
- ULONG NameInformationLength;
|
||||
- ULONG TypeInformationLength;
|
||||
- ULONG SecurityDescriptorLength;
|
||||
- LARGE_INTEGER CreateTime;
|
||||
-} OBJECT_BASIC_INFORMATION, *POBJECT_BASIC_INFORMATION;
|
||||
-
|
||||
#define expect_eq(expr, value, type, format) { type ret_ = expr; ok((value) == ret_, #expr " expected " format " got " format "\n", (value), (ret_)); }
|
||||
|
||||
static BOOL (WINAPI *pAddAccessAllowedAceEx)(PACL, DWORD, DWORD, DWORD, PSID);
|
||||
@@ -148,6 +126,9 @@ static BOOL (WINAPI *pCreateRestrictedToken)(HANDLE, DWORD, DWORD, PSID_AND_ATTR
|
||||
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 NTSTATUS (WINAPI *pNtCreateFile)(PHANDLE,ACCESS_MASK,POBJECT_ATTRIBUTES,PIO_STATUS_BLOCK,PLARGE_INTEGER,ULONG,ULONG,ULONG,ULONG,PVOID,ULONG);
|
||||
+static BOOL (WINAPI *pRtlDosPathNameToNtPathName_U)(LPCWSTR,PUNICODE_STRING,PWSTR*,CURDIR*);
|
||||
+static NTSTATUS (WINAPI *pRtlAnsiStringToUnicodeString)(PUNICODE_STRING,PCANSI_STRING,BOOLEAN);
|
||||
|
||||
static HMODULE hmod;
|
||||
static int myARGC;
|
||||
@@ -175,6 +156,9 @@ static void init(void)
|
||||
pNtQueryObject = (void *)GetProcAddress( hntdll, "NtQueryObject" );
|
||||
pNtAccessCheck = (void *)GetProcAddress( hntdll, "NtAccessCheck" );
|
||||
pNtSetSecurityObject = (void *)GetProcAddress(hntdll, "NtSetSecurityObject");
|
||||
+ pNtCreateFile = (void *)GetProcAddress(hntdll, "NtCreateFile");
|
||||
+ pRtlDosPathNameToNtPathName_U = (void *)GetProcAddress(hntdll, "RtlDosPathNameToNtPathName_U");
|
||||
+ pRtlAnsiStringToUnicodeString = (void *)GetProcAddress(hntdll, "RtlAnsiStringToUnicodeString");
|
||||
|
||||
hmod = GetModuleHandleA("advapi32.dll");
|
||||
pAddAccessAllowedAceEx = (void *)GetProcAddress(hmod, "AddAccessAllowedAceEx");
|
||||
@@ -3108,6 +3092,24 @@ static void test_SetEntriesInAclA(void)
|
||||
HeapFree(GetProcessHeap(), 0, OldAcl);
|
||||
}
|
||||
|
||||
+/* helper function for test_CreateDirectoryA */
|
||||
+static void get_nt_pathW(const char *name, UNICODE_STRING *nameW)
|
||||
+{
|
||||
+ UNICODE_STRING strW;
|
||||
+ ANSI_STRING str;
|
||||
+ NTSTATUS status;
|
||||
+ BOOLEAN ret;
|
||||
+ RtlInitAnsiString(&str, name);
|
||||
+
|
||||
+ status = pRtlAnsiStringToUnicodeString(&strW, &str, TRUE);
|
||||
+ ok(!status, "RtlAnsiStringToUnicodeString failed with %08x\n", status);
|
||||
+
|
||||
+ ret = pRtlDosPathNameToNtPathName_U(strW.Buffer, nameW, NULL, NULL);
|
||||
+ ok(ret, "RtlDosPathNameToNtPathName_U failed\n");
|
||||
+
|
||||
+ RtlFreeUnicodeString(&strW);
|
||||
+}
|
||||
+
|
||||
static void test_CreateDirectoryA(void)
|
||||
{
|
||||
char admin_ptr[sizeof(SID)+sizeof(ULONG)*SID_MAX_SUB_AUTHORITIES], *user;
|
||||
@@ -3116,13 +3118,17 @@ static void test_CreateDirectoryA(void)
|
||||
char sd[SECURITY_DESCRIPTOR_MIN_LENGTH];
|
||||
PSECURITY_DESCRIPTOR pSD = &sd;
|
||||
ACL_SIZE_INFORMATION acl_size;
|
||||
+ UNICODE_STRING tmpfileW;
|
||||
ACCESS_ALLOWED_ACE *ace;
|
||||
SECURITY_ATTRIBUTES sa;
|
||||
+ OBJECT_ATTRIBUTES attr;
|
||||
char tmpfile[MAX_PATH];
|
||||
char tmpdir[MAX_PATH];
|
||||
HANDLE token, hTemp;
|
||||
+ IO_STATUS_BLOCK io;
|
||||
struct _SID *owner;
|
||||
BOOL bret = TRUE;
|
||||
+ NTSTATUS status;
|
||||
DWORD error;
|
||||
PACL pDacl;
|
||||
|
||||
@@ -3257,6 +3263,58 @@ static void test_CreateDirectoryA(void)
|
||||
}
|
||||
CloseHandle(hTemp);
|
||||
|
||||
+ /* Repeat the same test with ntdll functions */
|
||||
+ strcpy(tmpfile, tmpdir);
|
||||
+ lstrcatA(tmpfile, "/tmpfile");
|
||||
+ get_nt_pathW(tmpfile, &tmpfileW);
|
||||
+ attr.Length = sizeof(attr);
|
||||
+ attr.RootDirectory = 0;
|
||||
+ attr.ObjectName = &tmpfileW;
|
||||
+ attr.Attributes = OBJ_CASE_INSENSITIVE;
|
||||
+ attr.SecurityDescriptor = NULL;
|
||||
+ attr.SecurityQualityOfService = NULL;
|
||||
+ status = pNtCreateFile(&hTemp, GENERIC_WRITE | DELETE, &attr, &io, NULL, 0, FILE_SHARE_READ,
|
||||
+ FILE_CREATE, FILE_DELETE_ON_CLOSE, NULL, 0);
|
||||
+ ok(!status, "NtCreateFile failed with %08x\n", status);
|
||||
+ RtlFreeUnicodeString(&tmpfileW);
|
||||
+
|
||||
+ error = pGetNamedSecurityInfoA(tmpfile, SE_FILE_OBJECT,
|
||||
+ OWNER_SECURITY_INFORMATION|DACL_SECURITY_INFORMATION, (PSID*)&owner,
|
||||
+ NULL, &pDacl, NULL, &pSD);
|
||||
+ ok(error == ERROR_SUCCESS, "Failed to get permissions on file.\n");
|
||||
+ bret = pGetAclInformation(pDacl, &acl_size, sizeof(acl_size), AclSizeInformation);
|
||||
+ ok(bret, "GetAclInformation failed\n");
|
||||
+ todo_wine
|
||||
+ ok(acl_size.AceCount == 2, "GetAclInformation returned unexpected entry count (%d != 2).\n",
|
||||
+ acl_size.AceCount);
|
||||
+ if (acl_size.AceCount > 0)
|
||||
+ {
|
||||
+ bret = pGetAce(pDacl, 0, (VOID **)&ace);
|
||||
+ ok(bret, "Inherited Failed to get Current User ACE.\n");
|
||||
+ bret = EqualSid(&ace->SidStart, user_sid);
|
||||
+ todo_wine
|
||||
+ ok(bret, "Inherited Current User ACE != Current User SID.\n");
|
||||
+ todo_wine
|
||||
+ ok(((ACE_HEADER *)ace)->AceFlags == INHERITED_ACE,
|
||||
+ "Inherited Current User ACE has unexpected flags (0x%x != 0x10)\n", ((ACE_HEADER *)ace)->AceFlags);
|
||||
+ ok(ace->Mask == 0x1f01ff, "Current User ACE has unexpected mask (0x%x != 0x1f01ff)\n",
|
||||
+ ace->Mask);
|
||||
+ }
|
||||
+ if (acl_size.AceCount > 1)
|
||||
+ {
|
||||
+ bret = pGetAce(pDacl, 1, (VOID **)&ace);
|
||||
+ ok(bret, "Inherited Failed to get Administators Group ACE.\n");
|
||||
+ bret = EqualSid(&ace->SidStart, admin_sid);
|
||||
+ todo_wine
|
||||
+ ok(bret, "Inherited Administators Group ACE != Administators Group SID.\n");
|
||||
+ todo_wine
|
||||
+ ok(((ACE_HEADER *)ace)->AceFlags == INHERITED_ACE,
|
||||
+ "Inherited Administators Group ACE has unexpected flags (0x%x != 0x10)\n", ((ACE_HEADER *)ace)->AceFlags);
|
||||
+ ok(ace->Mask == 0x1f01ff, "Administators Group ACE has unexpected mask (0x%x != 0x1f01ff)\n",
|
||||
+ ace->Mask);
|
||||
+ }
|
||||
+ CloseHandle(hTemp);
|
||||
+
|
||||
done:
|
||||
HeapFree(GetProcessHeap(), 0, user);
|
||||
bret = RemoveDirectoryA(tmpdir);
|
||||
--
|
||||
2.3.3
|
||||
|
@@ -0,0 +1,101 @@
|
||||
From 0e7514bba4464a3a7ed1f85b0fd69de93a7018d4 Mon Sep 17 00:00:00 2001
|
||||
From: "Erich E. Hoover" <erich.e.hoover@gmail.com>
|
||||
Date: Fri, 18 Apr 2014 14:10:49 -0600
|
||||
Subject: advapi32/tests: Add tests for PROTECTED_DACL_SECURITY_INFORMATION.
|
||||
|
||||
---
|
||||
dlls/advapi32/tests/security.c | 54 ++++++++++++++++++++++++++++++++++++++++++
|
||||
include/winnt.h | 7 +++---
|
||||
2 files changed, 58 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/dlls/advapi32/tests/security.c b/dlls/advapi32/tests/security.c
|
||||
index 7769d74..0259b63 100644
|
||||
--- a/dlls/advapi32/tests/security.c
|
||||
+++ b/dlls/advapi32/tests/security.c
|
||||
@@ -3604,6 +3604,60 @@ static void test_GetNamedSecurityInfoA(void)
|
||||
HeapFree(GetProcessHeap(), 0, user);
|
||||
CloseHandle(hTemp);
|
||||
|
||||
+ /* Create security descriptor with no inheritance and test that it comes back the same */
|
||||
+ pSD = &sd;
|
||||
+ pDacl = HeapAlloc(GetProcessHeap(), 0, 100);
|
||||
+ InitializeSecurityDescriptor(pSD, SECURITY_DESCRIPTOR_REVISION);
|
||||
+ pCreateWellKnownSid(WinBuiltinAdministratorsSid, NULL, admin_sid, &sid_size);
|
||||
+ 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 = pAddAccessAllowedAceEx(pDacl, ACL_REVISION, 0, GENERIC_ALL, admin_sid);
|
||||
+ ok(bret, "Failed to add Administrator Group to ACL.\n");
|
||||
+ bret = SetSecurityDescriptorDacl(pSD, TRUE, pDacl, FALSE);
|
||||
+ ok(bret, "Failed to add ACL to security desciptor.\n");
|
||||
+ GetTempFileNameA(".", "foo", 0, tmpfile);
|
||||
+ hTemp = CreateFileA(tmpfile, GENERIC_WRITE, FILE_SHARE_READ, NULL, OPEN_EXISTING,
|
||||
+ FILE_FLAG_DELETE_ON_CLOSE, NULL);
|
||||
+ error = pSetNamedSecurityInfoA(tmpfile, SE_FILE_OBJECT,
|
||||
+ DACL_SECURITY_INFORMATION|PROTECTED_DACL_SECURITY_INFORMATION,
|
||||
+ NULL, NULL, pDacl, NULL);
|
||||
+ HeapFree(GetProcessHeap(), 0, pDacl);
|
||||
+ ok(!error, "SetNamedSecurityInfoA failed with error %d\n", error);
|
||||
+ error = pGetNamedSecurityInfoA(tmpfile, SE_FILE_OBJECT, DACL_SECURITY_INFORMATION,
|
||||
+ NULL, NULL, &pDacl, NULL, &pSD);
|
||||
+ 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)
|
||||
+ {
|
||||
+ bret = pGetAce(pDacl, 0, (VOID **)&ace);
|
||||
+ ok(bret, "Failed to get Current User ACE.\n");
|
||||
+ bret = EqualSid(&ace->SidStart, user_sid);
|
||||
+ todo_wine
|
||||
+ ok(bret, "Current User ACE != Current User SID.\n");
|
||||
+ ok(((ACE_HEADER *)ace)->AceFlags == 0,
|
||||
+ "Current User ACE has unexpected flags (0x%x != 0x0)\n", ((ACE_HEADER *)ace)->AceFlags);
|
||||
+ ok(ace->Mask == 0x1f01ff, "Current User ACE has unexpected mask (0x%x != 0x1f01ff)\n",
|
||||
+ ace->Mask);
|
||||
+ }
|
||||
+ if (acl_size.AceCount > 1)
|
||||
+ {
|
||||
+ bret = pGetAce(pDacl, 1, (VOID **)&ace);
|
||||
+ ok(bret, "Failed to get Administators Group ACE.\n");
|
||||
+ bret = EqualSid(&ace->SidStart, admin_sid);
|
||||
+ ok(bret || broken(!bret) /* win2k */, "Administators Group ACE != Administators Group SID.\n");
|
||||
+ ok(((ACE_HEADER *)ace)->AceFlags == 0,
|
||||
+ "Administators Group ACE has unexpected flags (0x%x != 0x0)\n", ((ACE_HEADER *)ace)->AceFlags);
|
||||
+ ok(ace->Mask == 0x1f01ff || broken(ace->Mask == GENERIC_ALL) /* win2k */,
|
||||
+ "Administators Group ACE has unexpected mask (0x%x != 0x1f01ff)\n", ace->Mask);
|
||||
+ }
|
||||
+ LocalFree(pSD);
|
||||
+ HeapFree(GetProcessHeap(), 0, pDacl);
|
||||
+ CloseHandle(hTemp);
|
||||
+
|
||||
/* Test querying the ownership of a built-in registry key */
|
||||
sid_size = sizeof(system_ptr);
|
||||
pCreateWellKnownSid(WinLocalSystemSid, NULL, system_sid, &sid_size);
|
||||
diff --git a/include/winnt.h b/include/winnt.h
|
||||
index 4b06b2c..d575884 100644
|
||||
--- a/include/winnt.h
|
||||
+++ b/include/winnt.h
|
||||
@@ -5078,14 +5078,15 @@ typedef struct _TAPE_GET_MEDIA_PARAMETERS {
|
||||
BOOLEAN WriteProtected;
|
||||
} TAPE_GET_MEDIA_PARAMETERS, *PTAPE_GET_MEDIA_PARAMETERS;
|
||||
|
||||
-/* ----------------------------- begin registry ----------------------------- */
|
||||
-
|
||||
-/* Registry security values */
|
||||
#define OWNER_SECURITY_INFORMATION 0x00000001
|
||||
#define GROUP_SECURITY_INFORMATION 0x00000002
|
||||
#define DACL_SECURITY_INFORMATION 0x00000004
|
||||
#define SACL_SECURITY_INFORMATION 0x00000008
|
||||
+#define PROTECTED_DACL_SECURITY_INFORMATION 0x80000000
|
||||
|
||||
+/* ----------------------------- begin registry ----------------------------- */
|
||||
+
|
||||
+/* Registry security values */
|
||||
#define REG_OPTION_RESERVED 0x00000000
|
||||
#define REG_OPTION_NON_VOLATILE 0x00000000
|
||||
#define REG_OPTION_VOLATILE 0x00000001
|
||||
--
|
||||
2.3.3
|
||||
|
1
patches/advapi32-ACL_Tests/definition
Normal file
1
patches/advapi32-ACL_Tests/definition
Normal file
@@ -0,0 +1 @@
|
||||
Depends: server-Stored_ACLs
|
@@ -0,0 +1,216 @@
|
||||
From 8ea5a805609c2a13199ffcaa8b9b24f413d00d8b 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 10f3f8e..a10d781 100644
|
||||
--- a/dlls/advapi32/tests/security.c
|
||||
+++ b/dlls/advapi32/tests/security.c
|
||||
@@ -3517,22 +3517,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");
|
||||
- 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
|
||||
|
@@ -0,0 +1,74 @@
|
||||
From d93bcd18c978d0d316c0c19a65d07f3d782479c4 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 a2e4c98..c3884bf 100644
|
||||
--- a/dlls/advapi32/tests/security.c
|
||||
+++ b/dlls/advapi32/tests/security.c
|
||||
@@ -3505,6 +3505,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));
|
||||
@@ -3541,7 +3542,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);
|
||||
@@ -3572,39 +3573,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);
|
||||
|
||||
/* Create security descriptor with no inheritance and test that it comes back the same */
|
||||
--
|
||||
2.3.3
|
||||
|
@@ -0,0 +1,142 @@
|
||||
From 753dc1b6d8025271b487b4c4cc39a6f44a274cfd 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 c3884bf..f98bf2b 100644
|
||||
--- a/dlls/advapi32/tests/security.c
|
||||
+++ b/dlls/advapi32/tests/security.c
|
||||
@@ -125,7 +125,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 NTSTATUS (WINAPI *pNtCreateFile)(PHANDLE,ACCESS_MASK,POBJECT_ATTRIBUTES,PIO_STATUS_BLOCK,PLARGE_INTEGER,ULONG,ULONG,ULONG,ULONG,PVOID,ULONG);
|
||||
static BOOL (WINAPI *pRtlDosPathNameToNtPathName_U)(LPCWSTR,PUNICODE_STRING,PWSTR*,CURDIR*);
|
||||
static NTSTATUS (WINAPI *pRtlAnsiStringToUnicodeString)(PUNICODE_STRING,PCANSI_STRING,BOOLEAN);
|
||||
@@ -155,7 +154,6 @@ static void init(void)
|
||||
hntdll = GetModuleHandleA("ntdll.dll");
|
||||
pNtQueryObject = (void *)GetProcAddress( hntdll, "NtQueryObject" );
|
||||
pNtAccessCheck = (void *)GetProcAddress( hntdll, "NtAccessCheck" );
|
||||
- pNtSetSecurityObject = (void *)GetProcAddress(hntdll, "NtSetSecurityObject");
|
||||
pNtCreateFile = (void *)GetProcAddress(hntdll, "NtCreateFile");
|
||||
pRtlDosPathNameToNtPathName_U = (void *)GetProcAddress(hntdll, "RtlDosPathNameToNtPathName_U");
|
||||
pRtlAnsiStringToUnicodeString = (void *)GetProcAddress(hntdll, "RtlAnsiStringToUnicodeString");
|
||||
@@ -3332,7 +3330,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];
|
||||
@@ -3344,12 +3342,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)
|
||||
{
|
||||
@@ -3454,8 +3451,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);
|
||||
@@ -3506,74 +3503,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);
|
||||
|
||||
/* Create security descriptor with no inheritance and test that it comes back the same */
|
||||
--
|
||||
2.3.3
|
||||
|
@@ -0,0 +1,53 @@
|
||||
From 815d8d20d0710dff782cb20cb286b32c23ee9f1e Mon Sep 17 00:00:00 2001
|
||||
From: Sebastian Lackner <sebastian@fds-team.de>
|
||||
Date: Fri, 27 Mar 2015 15:32:44 +0100
|
||||
Subject: Revert "server: Make directory DACL entries inheritable."
|
||||
|
||||
This reverts commit 3eb448cf33b6b6635bac4e06ea7fddd190e26450.
|
||||
---
|
||||
server/file.c | 8 ++++----
|
||||
1 file changed, 4 insertions(+), 4 deletions(-)
|
||||
|
||||
diff --git a/server/file.c b/server/file.c
|
||||
index a50276e..09b7811 100644
|
||||
--- a/server/file.c
|
||||
+++ b/server/file.c
|
||||
@@ -442,7 +442,7 @@ struct security_descriptor *mode_to_sd( mode_t mode, const SID *user, const SID
|
||||
aaa = (ACCESS_ALLOWED_ACE *)(dacl + 1);
|
||||
current_ace = &aaa->Header;
|
||||
aaa->Header.AceType = ACCESS_ALLOWED_ACE_TYPE;
|
||||
- aaa->Header.AceFlags = (mode & S_IFDIR) ? OBJECT_INHERIT_ACE | CONTAINER_INHERIT_ACE : 0;
|
||||
+ aaa->Header.AceFlags = 0;
|
||||
aaa->Header.AceSize = FIELD_OFFSET(ACCESS_ALLOWED_ACE, SidStart) + security_sid_len( local_system_sid );
|
||||
aaa->Mask = FILE_ALL_ACCESS;
|
||||
sid = (SID *)&aaa->SidStart;
|
||||
@@ -454,7 +454,7 @@ struct security_descriptor *mode_to_sd( mode_t mode, const SID *user, const SID
|
||||
aaa = (ACCESS_ALLOWED_ACE *)ace_next( current_ace );
|
||||
current_ace = &aaa->Header;
|
||||
aaa->Header.AceType = ACCESS_ALLOWED_ACE_TYPE;
|
||||
- aaa->Header.AceFlags = (mode & S_IFDIR) ? OBJECT_INHERIT_ACE | CONTAINER_INHERIT_ACE : 0;
|
||||
+ aaa->Header.AceFlags = 0;
|
||||
aaa->Header.AceSize = FIELD_OFFSET(ACCESS_ALLOWED_ACE, SidStart) + security_sid_len( user );
|
||||
aaa->Mask = WRITE_DAC | WRITE_OWNER;
|
||||
if (mode & S_IRUSR)
|
||||
@@ -472,7 +472,7 @@ struct security_descriptor *mode_to_sd( mode_t mode, const SID *user, const SID
|
||||
ACCESS_DENIED_ACE *ada = (ACCESS_DENIED_ACE *)ace_next( current_ace );
|
||||
current_ace = &ada->Header;
|
||||
ada->Header.AceType = ACCESS_DENIED_ACE_TYPE;
|
||||
- ada->Header.AceFlags = (mode & S_IFDIR) ? OBJECT_INHERIT_ACE | CONTAINER_INHERIT_ACE : 0;
|
||||
+ ada->Header.AceFlags = 0;
|
||||
ada->Header.AceSize = FIELD_OFFSET(ACCESS_DENIED_ACE, SidStart) + security_sid_len( user );
|
||||
ada->Mask = 0;
|
||||
if (!(mode & S_IRUSR) && (mode & (S_IRGRP|S_IROTH)))
|
||||
@@ -489,7 +489,7 @@ struct security_descriptor *mode_to_sd( mode_t mode, const SID *user, const SID
|
||||
aaa = (ACCESS_ALLOWED_ACE *)ace_next( current_ace );
|
||||
current_ace = &aaa->Header;
|
||||
aaa->Header.AceType = ACCESS_ALLOWED_ACE_TYPE;
|
||||
- aaa->Header.AceFlags = (mode & S_IFDIR) ? OBJECT_INHERIT_ACE | CONTAINER_INHERIT_ACE : 0;
|
||||
+ aaa->Header.AceFlags = 0;
|
||||
aaa->Header.AceSize = FIELD_OFFSET(ACCESS_ALLOWED_ACE, SidStart) + security_sid_len( world_sid );
|
||||
aaa->Mask = 0;
|
||||
if (mode & S_IROTH)
|
||||
--
|
||||
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