Compare commits

...

423 Commits
v2.3 ... v2.19

Author SHA1 Message Date
Sebastian Lackner
9d1ea3e695 Release 2.19. 2017-10-20 19:12:39 +02:00
Sebastian Lackner
5110081815 Added patch to fix double-free in build_shared_mapping. 2017-10-16 16:40:29 +02:00
Sebastian Lackner
fd2221cfd9 Added patch to implement BCrypt RSA provider. 2017-10-14 22:52:22 +02:00
Sebastian Lackner
5e03e4422d d3d11-Depth_Bias: Added patches to implement support for depth bias clamping. 2017-10-14 17:54:36 +02:00
Sebastian Lackner
5149b192c9 Rebase against cf5616ffbb39df7ad3ac0a41e55777ab6c1abab9. 2017-10-14 10:21:44 +02:00
Sebastian Lackner
71bcbb308e Rebase against 4b028bb09cb9563e111fedab0f4c3663dc278d0a. 2017-10-12 11:15:17 +02:00
Sebastian Lackner
da45303bdc Rebase against ee7ddd1ed38a3b2f41bdb676f42e3453021968c1. 2017-10-11 08:54:10 +02:00
Sebastian Lackner
7dc2c0f2c6 Rebase against 63d6dce04746237c1cb39c22914ed666c55178e1. 2017-10-09 23:45:35 +02:00
Sebastian Lackner
1be574ad0d Added patch to ensure NtUnmapViewOfSection doesn't fail when trying to unmap builtin view. 2017-10-09 14:36:09 +02:00
Sebastian Lackner
12802a92b6 wuauserv-Dummy_Service: Add reference to bug report. 2017-10-09 13:52:20 +02:00
Sebastian Lackner
62f66c7aaa nvapi-Stub_DLL: Add reference to bug report. 2017-10-08 17:53:37 +02:00
Sebastian Lackner
25313a5526 Added patch to revert changes to address_space_start in virtual_init.
Breaks loading of all DOS executables.
2017-10-08 11:17:47 +02:00
Sebastian Lackner
f79f1d1e79 d3d11-Deferred_Context: Allow NULL pointer for initial count in d3d11_deferred_context_CSSetUnorderedAccessViews. 2017-10-08 07:01:33 +02:00
Sebastian Lackner
1b974b234d Rebase against fb8226f639093a3fef41f7273fa0089246d1dfa4. 2017-10-06 23:32:59 +02:00
Sebastian Lackner
7c183df10b Rebase against 825d5c86415d9e76c92a9d533c00790efe847ae7. 2017-10-05 23:09:54 +02:00
Sebastian Lackner
2cc3a4b98f gdiplus-DC_Handling: Remove reference to bug report. 2017-10-05 14:11:22 +02:00
Sebastian Lackner
053046f489 Added patch to implement stub for rasapi32.RasGetConnectionStatistics. 2017-10-05 14:09:49 +02:00
Sebastian Lackner
d677406b2a ntdll-TokenLogonSid: Fix some test failures. 2017-10-05 13:55:07 +02:00
Sebastian Lackner
3945cbfe36 Rebase against 9a53298eed493080fb132d0cd57fffa95b00b1ec. 2017-10-05 05:12:57 +02:00
Sebastian Lackner
48c730f761 Rebase against b34ea10112227a0d8554c81fc093c0cf6e1bc1b7. 2017-10-05 03:48:24 +02:00
Sebastian Lackner
788e74086e Rebase against e9c69fde09f0aca171652aaa2e26db2ef075d243. 2017-10-04 21:15:05 +02:00
Sebastian Lackner
726c476b6a Release 2.18. 2017-10-04 17:57:43 +02:00
Sebastian Lackner
568d91cbca ntdll-x86_64_ExceptionInformation: Handle a few more privileged instructions. 2017-10-04 17:56:31 +02:00
Sebastian Lackner
9f619e92e8 wined3d-Dual_Source_Blending: Update patchset. 2017-10-04 17:16:37 +02:00
Sebastian Lackner
a231c76ff4 user32-FlashWindowEx: Update and reenable patchset. 2017-10-04 03:46:59 +02:00
Sebastian Lackner
5672a07b8d Added patch to return CR_NO_SUCH_DEVNODE from CM_Get_Parent stub. 2017-10-04 03:28:28 +02:00
Sebastian Lackner
2d16aafa9a Added patch to keep reference on mapping for shared PE mappings. 2017-10-04 03:22:01 +02:00
Sebastian Lackner
431c546ca5 ntdll-segv_handler: Update patchset and implement proper detection of privileged instructions. 2017-10-04 01:53:09 +02:00
Sebastian Lackner
18a46d576a Added patch with backport for regression caused by virtual memory management changes. 2017-10-04 00:49:31 +02:00
Sebastian Lackner
7131b6ce3c crypt32-ECDSA_Cert_Chains: Avoid compile failures with gnutls < 3. 2017-10-03 05:45:20 +02:00
Sebastian Lackner
edf6f27f25 Added patch to implement support for validating ECDSA certificate chains. 2017-10-02 16:28:12 +02:00
Sebastian Lackner
76cd811f73 nvcuda-CUDA_Support: Add semi stub for cuD3D10GetDevice. 2017-10-02 16:00:52 +02:00
Sebastian Lackner
93b9924d3c d3d11-Deferred_Context: Implement restoring of state after executing a command list in d3d11. 2017-10-02 15:53:50 +02:00
Sebastian Lackner
b6b1505f12 wined3d-Interpolation_Modifiers: Add quirk for broken auxiliary qualifier matching in wined3d. 2017-10-02 15:11:17 +02:00
Sebastian Lackner
65acc06d90 Added patch to implement vsync handling for d3d10/d3d11. 2017-10-02 14:44:37 +02:00
Sebastian Lackner
b67879cfb2 d3d11-Deferred_Context: Allow NULL pointer for initial count in OMSetRenderTargetsAndUnorderedAccessViews.
Thanks Michael MĂĽller.
2017-10-02 13:56:05 +02:00
Sebastian Lackner
c3167b37c2 Added patch to define missing message string for TRUST_E_NOSIGNATURE. 2017-10-01 05:43:03 +02:00
Sebastian Lackner
37bc3c21bf Added patch with additional tests for job object accounting. 2017-10-01 04:53:37 +02:00
Sebastian Lackner
cc7f8f108a d3d11-Deferred_Context: Add dependency on wined3d-1DTextures. 2017-10-01 04:10:32 +02:00
Sebastian Lackner
dd1a215bef Added patch to fix crash when exporting REG_SZ data if size == 0. 2017-09-30 18:48:25 +02:00
Sebastian Lackner
4c7e1e892a Added patch to fix size of allocated ranges block. 2017-09-30 16:26:16 +02:00
Sebastian Lackner
f7fdbd9bbf Rebase against 2ae0574d8eac19db501a79ce2597f2fe30a770bd. 2017-09-29 09:54:59 +02:00
Sebastian Lackner
d654c8fe4b Added patch to fix length of some algorithm names in aProvEnumAlgsEx array. 2017-09-28 07:42:39 +02:00
Sebastian Lackner
85e5931a01 Added patch to always define hton/ntoh macros in winsock.h. 2017-09-28 07:03:37 +02:00
Sebastian Lackner
e95dde704f msi-MsiGetDatabaseState: Remove reference to bug report. 2017-09-28 00:13:59 +02:00
Sebastian Lackner
f7b70e7914 dwmapi-DwmSetIcon: Remove reference to bug report. 2017-09-28 00:12:32 +02:00
Sebastian Lackner
cd5a748195 Added patch to avoid unexpanding ComputerName in PathUnExpandEnvStrings. 2017-09-28 00:11:16 +02:00
Sebastian Lackner
7dcf0a40b3 Added patch to close process / thread handles in kernel32/tests. 2017-09-27 23:56:17 +02:00
Sebastian Lackner
34a26b4e9e wined3d-GenerateMips: Added patch to implement d3d10_device_GenerateMips. 2017-09-27 23:49:17 +02:00
Sebastian Lackner
13a6f6a44d Rebase against c91a531957acaf4cf7cdb985b5ba47a273f5f9b2. 2017-09-27 05:09:54 +02:00
Sebastian Lackner
094f2d8d0c Rebase against 44cb0afb2571984bda8ca1fa084a50c1fc04ac71. 2017-09-25 16:18:50 +02:00
Sebastian Lackner
48ffaa6b21 Rebase against 25a8773d21d0113dc5e4f9dee49d9d9dbeed347b. 2017-09-22 08:48:47 +02:00
Sebastian Lackner
17ebaec62c Rebase against 0991e015316e382f787b1f5c93b483c3faf04b9b. 2017-09-21 00:33:55 +02:00
Sebastian Lackner
3b068197d3 Rebase against fdac39f697e049ead215b164bfe6953269ffa7be. 2017-09-20 18:29:20 +02:00
Sebastian Lackner
8859da7cbd Rebase against 302153117e20b62c9170aed62aa33e83cacfaf59. 2017-09-20 07:17:22 +02:00
Sebastian Lackner
22cdd720aa Release 2.17. 2017-09-20 02:14:38 +02:00
Sebastian Lackner
f818f80da7 user32-FlashWindowEx: Disable patchset. 2017-09-20 02:13:31 +02:00
Sebastian Lackner
2c4722a130 d3d11-Deferred_Context: Update bug reference. 2017-09-19 01:58:35 +02:00
Sebastian Lackner
f4c1df296d user32-Mouse_Message_Hwnd: Add another bug reference. 2017-09-19 01:42:17 +02:00
Sebastian Lackner
1cdf74a117 Added patch to fix return value of FlashWindowEx. 2017-09-19 01:35:49 +02:00
Sebastian Lackner
0727cad0c9 Added patch to skip validation of SYSMEM location if memory was evicted. 2017-09-18 03:58:40 +02:00
Sebastian Lackner
63a8a664c9 Added patch to fix newline normalization in msxml implementation. 2017-09-18 03:27:37 +02:00
Sebastian Lackner
c66ae9f084 user32-Mouse_Message_Hwnd: Update patchset and fix a regression related to the DC region. 2017-09-17 20:08:00 +02:00
Sebastian Lackner
ae2d23d9f4 Added patch to implement support for GenerateMips. 2017-09-17 05:22:09 +02:00
Sebastian Lackner
b35d9813d2 Added patch to translate icebp instruction to EXCEPTION_SINGLE_STEP on x86_64. 2017-09-16 05:35:23 +02:00
Sebastian Lackner
54b732863c Rebase against bb16263fe1974851f495435fef9a3d57fa2d4aa9. 2017-09-15 23:53:46 +02:00
Sebastian Lackner
7b016ffde8 Rebase against 218286bb87f8a38a48b4717247e578e02f6a051f. 2017-09-15 01:12:35 +02:00
Sebastian Lackner
7a557fe8fd Rebase against c16ef729db50209a626b743f5847a24dff5688a4. 2017-09-13 23:28:34 +02:00
Sebastian Lackner
ce01adb3ed Rebase against 6144addcf0fc26f187aa05e6bac6c4a0c3542199. 2017-09-13 02:54:56 +02:00
Sebastian Lackner
d7385d6c01 Rebase against 19d57982ecb4520453a1b77ace386c625312e265. 2017-09-12 03:12:34 +02:00
Sebastian Lackner
f85692946e Rebase against 917e86dd7a4cca1da47262caaded2bef9e022f99. 2017-09-09 00:23:37 +02:00
Sebastian Lackner
36f5d4da6c Added patch to implement support for interpolation modifiers in sm4/sm5 pixel shaders. 2017-09-08 17:06:22 +02:00
Sebastian Lackner
1767361878 wined3d-Backup_Window: Remove disabled patchset. 2017-09-08 02:36:17 +02:00
Sebastian Lackner
2a9948a07f server-Debug_Registers: Remove disabled patchset. 2017-09-08 02:33:32 +02:00
Sebastian Lackner
97015ebf4e ntdll-Heap_FreeLists: Remove disabled patchset. 2017-09-08 02:32:21 +02:00
Sebastian Lackner
729ce1f6f3 Rebase against c9f72ccec2387da0c02fa1d35997fb914dcf4656. 2017-09-08 02:18:58 +02:00
Sebastian Lackner
279eca11f1 Rebase against d003ed3b1743985282c8c8e9c597d77c4b47bb15. 2017-09-08 00:29:26 +02:00
Sebastian Lackner
7709f6b37c Rebase against b32c3243782477f7cc6dc5a189a3e4a5dacce1c8. 2017-09-07 21:01:25 +02:00
Sebastian Lackner
34f5330124 Rebase against eb5c1872540a71ebef4703387c11c414516233f4. 2017-09-07 17:45:21 +02:00
Sebastian Lackner
578128d012 Release 2.16. 2017-09-07 06:32:03 +02:00
Sebastian Lackner
51cc8cbe36 dwrite-8bpp_Grayscale_Mode: Update patchset. 2017-09-07 03:26:59 +02:00
Sebastian Lackner
f1b1baf057 Added patch to fix privileged instruction exception code on x86_64. 2017-09-07 02:14:38 +02:00
Sebastian Lackner
467fed6501 Added patch to implement syscall thunks for 64-bit. 2017-09-07 02:11:27 +02:00
Sebastian Lackner
83f27c90a6 Added patch to treat invalid pixel types as PFD_TYPE_RGBA in wglChoosePixelFormat. 2017-09-07 02:04:59 +02:00
Sebastian Lackner
7710cdb8c0 Added patch to use 8bpp bitmaps in grayscale mode. 2017-09-06 03:59:23 +02:00
Sebastian Lackner
141768861c Added patches to implement additional d3d11 deferred context functions. 2017-09-06 03:54:37 +02:00
Sebastian Lackner
a8eca598ce Added patch to revert listbox popup height changes. 2017-09-04 01:45:03 +02:00
Sebastian Lackner
ce7d9b6d08 wined3d-Revert_Surface_Blt: Add reference to bug report. 2017-09-04 01:39:03 +02:00
Sebastian Lackner
a7f42dd60a mfplat-MFStartup: Temporarily disable patchset.
The patch causes a regression because applications start using
other mfplat functions.
2017-09-04 01:38:38 +02:00
Sebastian Lackner
83e5c37f16 Added patch to implement support for indexed vertex blending. 2017-09-02 04:31:04 +02:00
Sebastian Lackner
7ad83e6e14 Rebase against 0b1d7ff7655c5aa7ff073f67400bd4401727183f. 2017-09-02 03:46:01 +02:00
Sebastian Lackner
a7cf8014bb Added patch to revert special case for converted surfaces in wined3d_surface_blt. 2017-09-02 02:29:01 +02:00
Sebastian Lackner
c50463197f Rebase against e06b7693d6f0980b1db2fa3b9920c7a925ceb8be. 2017-09-02 02:24:26 +02:00
Sebastian Lackner
f98abfe0dc Added patch to return S_OK from MFStartup stub. 2017-08-31 01:33:52 +02:00
Sebastian Lackner
5a79bf01f2 Added patch to fix handling of empty string in WS_getaddrinfo. 2017-08-31 01:16:11 +02:00
Sebastian Lackner
330f1cc410 Rebase against 844b57e4d800bfb260c1694ed54a02b9f5ad1f47. 2017-08-30 23:16:18 +02:00
Sebastian Lackner
d076d04ebc Rebase against c579a81a6353dd7c843270561cd5763ff895de40. 2017-08-30 01:14:43 +02:00
Sebastian Lackner
7b687557c3 Rebase against dfa1815c02d1661766c8f3a4a290635e7adb4ccf. 2017-08-29 00:10:33 +02:00
Sebastian Lackner
00540ae7b9 Rebase against 083e61fddf90ade32a119d5b6bf84d27adefc589. 2017-08-26 01:02:52 +02:00
Sebastian Lackner
41562729cd Rebase against cc49c40f05a600327b80711f6f80844608dde366. 2017-08-24 23:16:28 +02:00
Sebastian Lackner
6b9d11ac58 Rebase against 79ebd3f3bf9e5b6607363667d03def04e254f710. 2017-08-24 03:42:23 +02:00
Sebastian Lackner
e53b4e2702 dxgi-GammaRamp: Add reference to bug report. 2017-08-23 19:43:34 +02:00
Sebastian Lackner
eb4587492e Release 2.15. 2017-08-23 03:45:59 +02:00
Sebastian Lackner
b6bab9758e Added patches to fix JPEG decoder and implement support for CMYK to BGR conversion. 2017-08-22 03:20:18 +02:00
Sebastian Lackner
bab383452b Added patch to implement dual source blending in wined3d. 2017-08-22 02:00:27 +02:00
Sebastian Lackner
9fbebe7a46 Added patch to allow arbitrary viewports for d3d11 in wined3d. 2017-08-22 00:17:19 +02:00
Sebastian Lackner
14cfabe8ab Added patch to avoid test failures in reg tests. 2017-08-20 18:37:58 +02:00
Sebastian Lackner
5adb9710aa Added patch to avoid stack protector frame in signal handler functions. 2017-08-20 18:24:41 +02:00
Sebastian Lackner
f09e1db3cc Rebase against 67f6eb327ef78fe8acf45bf6ac6c93424ec89335. 2017-08-20 13:51:27 +02:00
Sebastian Lackner
ea6cb58103 Rebase against d53b711f27f15cdeb9700e86526dab13ddf8d731. 2017-08-18 05:31:27 +02:00
Sebastian Lackner
62f94a1ed2 bcrypt-Improvements: Add missing changes to ncrypt.spec. 2017-08-17 22:21:41 +02:00
Sebastian Lackner
41cf5ea976 user32-Sorted_Listbox: Update patchset. 2017-08-17 22:13:10 +02:00
Sebastian Lackner
be0aab1653 Added patch to implement kernelbase.PathCchCombineEx. 2017-08-17 20:42:40 +02:00
Sebastian Lackner
0e27dc7034 Rebase against 866eec810e7342630d47887f8ad7e1fbb5a0e788. 2017-08-17 20:17:02 +02:00
Sebastian Lackner
f6565eb6af Rebase against ae2d6e836b98440cdc938718226dc89592a64eda. 2017-08-17 15:54:43 +02:00
Sebastian Lackner
2d92c18c9e Added patch to implement support for 192 and 256 bit AES keys in bcrypt. 2017-08-13 21:30:25 +02:00
Sebastian Lackner
96dd810f82 Added patch to implement BCryptImportKey and BCryptExportKey. 2017-08-13 21:24:07 +02:00
Sebastian Lackner
8ca3547a36 advapi32-Token_Integrity_Level: Update specfile. 2017-08-13 19:26:30 +02:00
Sebastian Lackner
4938755f5f Added patch to implement stubs for GetWindowDisplayAffinity and SetWindowDisplayAffinity. 2017-08-13 19:21:57 +02:00
Sebastian Lackner
adb8deeaf2 Rebase against 797a746fc2a1b17d67b7423293e081e3e7171033. 2017-08-12 17:09:40 +02:00
Sebastian Lackner
716ea2cef3 wined3d-UAV_Counters: Remove no longer needed dependencies. 2017-08-09 08:50:28 +02:00
Sebastian Lackner
6edf4d136c Rebase against 52fbaeb2c44e585cacd7f0b57e902dfbcf54d09b. 2017-08-09 08:45:29 +02:00
Sebastian Lackner
51d419bbeb patchupdate.py: Simplify code in generate_ifdefined. 2017-08-08 14:54:24 +02:00
Sebastian Lackner
6b40eb077f Release 2.14. 2017-08-07 23:34:30 +02:00
Sebastian Lackner
ae3f3b8bb7 advapi32-Token_Integrity_Level: Add another Fixes line. 2017-08-07 19:38:41 +02:00
Sebastian Lackner
ed87feaf71 server-Debug_Registers: Comment Fixes line of distabled patch. 2017-08-07 19:13:37 +02:00
Sebastian Lackner
081fbc2ef1 Added patch to return D3DFMT_A8R8G8B8 in D3DXGetImageInfoFromFileInMemory for 32 bpp BMP with alpha. 2017-08-07 17:57:44 +02:00
Sebastian Lackner
4455721443 patchupdate.py: Add a hack to speed up patch checks for configure.ac. 2017-08-07 17:27:38 +02:00
Sebastian Lackner
5559653869 Added patch with basic implementation for token integrity levels and UAC handling. 2017-08-07 16:58:46 +02:00
Sebastian Lackner
8f9cc5e01c Added patch to use an inline version of Rtl{Enter,Leave}CriticalSection in some ntdll functions. 2017-08-06 06:14:42 +02:00
Sebastian Lackner
d364296484 Added patch to implement advapi32.CreateRestrictedToken. 2017-08-06 04:34:06 +02:00
Sebastian Lackner
0892d6d89e Added patch to prefer native version of packager.dll. 2017-08-06 02:55:07 +02:00
Sebastian Lackner
aa23179c36 ntdll-NtQueryVirtualMemory: Update patchset. 2017-08-05 00:05:47 +02:00
Sebastian Lackner
e28edf1951 Rebase against 2d9e894d285937716a4541c7fab9152fdf0b495f. 2017-08-03 13:41:34 +02:00
Sebastian Lackner
5f7efc6b30 wintrust-WinVerifyTrust: Update patchset to use MS_ENH_RSA_AES_PROV instead of default provider. 2017-08-02 15:19:37 +02:00
Sebastian Lackner
71f0cf0aef Rebase against 611c15953e8297ac1762abfb5aeca6665985fc0f. 2017-08-01 05:55:02 +02:00
Sebastian Lackner
ea9d4a0fa1 Added patch to implement stub for GetProcessWorkingSetSizeEx. 2017-07-30 21:14:59 +02:00
Sebastian Lackner
3aabb941ae Added patch to fix a TRACE in NtGetContextThread. 2017-07-29 03:12:55 +02:00
Sebastian Lackner
f64dc8457e nvapi-Stub_DLL: Add NULL pointer check in NvAPI_D3D11_SetDepthBoundsTest. 2017-07-29 02:23:36 +02:00
Sebastian Lackner
ebc9ba4921 nvapi-Stub_DLL: Merge some cleanup changes. 2017-07-29 00:49:46 +02:00
Sebastian Lackner
77a90f1dd0 Added patch to avoid crash when async_terminate destroys async object in free_async_queue. 2017-07-28 02:42:42 +02:00
Sebastian Lackner
c0a61524e1 Rebase against 1744277bee3c3c77ae657f42d8fac466cfac7924. 2017-07-28 00:09:26 +02:00
Sebastian Lackner
9f5d2cab05 Rebase against 976c2aa649a526188afd9c0647869ccc82068341. 2017-07-27 06:59:21 +02:00
Sebastian Lackner
2e99d9e465 Rebase against 4a70f67ffcc57e82c22cc349da01d3aa5db84c71. 2017-07-26 16:56:56 +02:00
Sebastian Lackner
2c12e538dd Rebase against 21763489982177f4db9e5f8cc8ccb751441f5a2e. 2017-07-25 17:24:47 +02:00
Sebastian Lackner
d943e0bd51 Release 2.13. 2017-07-25 05:51:25 +02:00
Sebastian Lackner
67ebee7f44 Fix typo in a patch directory. 2017-07-25 05:50:36 +02:00
Sebastian Lackner
91424695c4 winedevice-Default_Drivers: Synchronize spec file. 2017-07-25 03:54:15 +02:00
Sebastian Lackner
7b07cb08f5 Added patch to reduce the cursor height if it also includes the mask. 2017-07-24 23:55:24 +02:00
Sebastian Lackner
4d2afbf14b Added patch to implement support for indirect drawing / compute shader dispatching. 2017-07-24 20:41:34 +02:00
Sebastian Lackner
f47fa538c5 Added patch to fix context backup window handling. 2017-07-24 18:58:35 +02:00
Sebastian Lackner
e866c7f3e1 server-Debug_Registers: Don't abort thread creation when set_thread_context fails. 2017-07-24 17:41:20 +02:00
Sebastian Lackner
b539f0f369 Added patch to implement copying structure count of UAV. 2017-07-24 16:22:58 +02:00
Sebastian Lackner
f5e96b9a37 Added patch to implement support for all d3d11 color write masks in wined3d. 2017-07-24 00:41:59 +02:00
Sebastian Lackner
7a242b50e4 Added patch with stub implementation for DXGI_PRESENT_TEST. 2017-07-23 21:41:02 +02:00
Sebastian Lackner
9921dc7846 Improve formatting in CONTRIBUTING.md. 2017-07-23 21:35:49 +02:00
Sebastian Lackner
1a4ebb027f wined3d-Copy_Resource_Typeless: Add reference to bug report. 2017-07-23 21:33:18 +02:00
Sebastian Lackner
3bf7fe4763 Added patch to improve heap allocation performance. 2017-07-23 20:49:44 +02:00
Sebastian Lackner
eeb6529b09 d3dx9_36-D3DXOptimizeVertices: Merge some style improvements. 2017-07-23 20:42:10 +02:00
Sebastian Lackner
2cb3198298 Added patch to implement support for conservative depth access in SM4 shaders. 2017-07-23 04:26:33 +02:00
Sebastian Lackner
69e273a07f Added patch to implement stub for several setsockopt options. 2017-07-22 05:25:14 +02:00
Sebastian Lackner
60870e076f Added patch to implement LdrRegisterDllNotification/LdrUnregisterDllNotification. 2017-07-22 05:03:41 +02:00
Sebastian Lackner
c8a8ef48e5 Add a separate CONTRIBUTING.md. 2017-07-22 04:07:01 +02:00
Constantine Kharlamov
be9feb4570 advapi-LsaLookupPrivilegeName: check for pointer in WellKnownPrivNames.
Fixes a crash in Dead Space

Signed-off-by: Constantine Kharlamov <Hi-Angel@yandex.ru>
2017-07-22 02:57:42 +02:00
Sebastian Lackner
62ae507b36 Rebase against 7d3c068c3beeac8691cfa96f0dce6b5583072eaa. 2017-07-22 01:14:10 +02:00
Sebastian Lackner
5ec57827af d3dx9_36-D3DXOptimizeVertices: Add a missing test-only patch. 2017-07-21 04:24:04 +02:00
Sebastian Lackner
d0dccc7b7e Added patch to recognize SM4 nop opcode. 2017-07-21 04:01:19 +02:00
Sebastian Lackner
4e031ef171 Added patch to hold CS while iterating through rpcrt4 protseqs list. 2017-07-21 03:18:46 +02:00
Sebastian Lackner
60d4b6fe21 wined3d-Copy_Resource_Typeless: Add dependency on wined3d-1DTextures. 2017-07-21 02:55:02 +02:00
Sebastian Lackner
8706a334ad Added patch to implement support for start instance in draw_primitive_arrays. 2017-07-20 15:24:23 +02:00
Sebastian Lackner
43f5b05fd5 Rebase against 5a61913e90e3725d08c0e1fd06ccfe936434cbcc. 2017-07-20 03:09:05 +02:00
Sebastian Lackner
a05970ca53 Rebase against 9118512135a1aac6969bf575a0656855ba84ef11. 2017-07-19 13:21:54 +02:00
Sebastian Lackner
d9d149f369 Rebase against a8b5fdda3214e4fd52682aefaa093cd45766580e. 2017-07-18 11:29:09 +02:00
Sebastian Lackner
e2dbf3ab7e Added patch to fix regression related to interface bind handling. 2017-07-18 11:27:34 +02:00
Sebastian Lackner
fe97269c92 Added patch to implement semi-stub for D3DXOptimizeVertices. 2017-07-17 15:24:11 +02:00
Sebastian Lackner
c99cdb85d7 Added patch to prevent a possible nullptr dereference in SHGetFileInfoW. 2017-07-17 15:10:03 +02:00
Sebastian Lackner
020888539d Added patch to use assembly wrapper to call OnVoiceProcessingPassStart callback. 2017-07-15 23:17:29 +02:00
Sebastian Lackner
b8ffc62855 kernel32-UmsStubs: Add a reference to a bug report. 2017-07-15 21:34:07 +02:00
Sebastian Lackner
dc531c457c Added patch to implement FreePhysicalMemory in Win32_OperatingSystem wbemprox class. 2017-07-15 20:38:36 +02:00
Sebastian Lackner
08cd599f17 Added patch to avoid possible deadlock in dinput when CS are acquired in different order. 2017-07-15 20:14:50 +02:00
Sebastian Lackner
bfef128732 Added patch for nvapi d3d11 CreateDevice/CreateDeviceAndSwapChain implementation. 2017-07-14 22:39:13 +02:00
Sebastian Lackner
201e62615e Rebase against ab313dd3beb7e495b36f8320ffc2354b9c854d51. 2017-07-14 08:09:51 +02:00
Sebastian Lackner
c852826507 Rebase against 989a9dc91778c94d0cf0c769709f10dcc92a5ead. 2017-07-13 01:42:44 +02:00
Sebastian Lackner
c1b18bc491 wined3d-Copy_Resource_Typeless: Add reference to bug report. 2017-07-12 22:27:09 +02:00
Sebastian Lackner
edcc6684ad dwmapi-DwmSetIcon: Add reference to bug report. 2017-07-12 22:23:39 +02:00
Sebastian Lackner
96a77f3ae2 Rebase against 437c6674b06663908472d31ed68fcab6e2fdd5f7. 2017-07-12 12:56:45 +02:00
Sebastian Lackner
4c1a8684a0 Rebase against 35f82ba444930b770684f0bd623c505d52c7b58f. 2017-07-12 12:22:15 +02:00
Sebastian Lackner
3ebda6fa93 Release 2.12. 2017-07-12 00:37:59 +02:00
Sebastian Lackner
8d2edd8de8 Added patch to implement stubs for DwmSetIconicLivePreviewBitmap and DwmSetIconicThumbnail. 2017-07-12 00:11:18 +02:00
Sebastian Lackner
e3b7fd770e Added patch to emulate textureLod(samplerCubeShadow, ...) in wined3d using shadowCubeGrad. 2017-07-11 22:21:35 +02:00
Sebastian Lackner
e2a70628df Added patch to implement copying resources between compatible formats. 2017-07-11 19:26:35 +02:00
Sebastian Lackner
a5daeb1e36 advapi-LsaLookupPrivilegeName: Add reference to bug report. 2017-07-11 17:39:07 +02:00
Sebastian Lackner
eed8160b22 Added patch to use OpenGL core context for D3D10/11 when necessary. 2017-07-11 17:36:27 +02:00
Sebastian Lackner
996d9ab307 Added patch to set return size when calling WSAIoctl with WS_SIO_GET_EXTENSION_FUNCTION_POINTER. 2017-07-11 16:16:42 +02:00
Sebastian Lackner
325f3758f8 Added patch to implement support for more d3d11 depth options in RSSetState. 2017-07-11 16:05:19 +02:00
Sebastian Lackner
ad2d0fdc3a Added patch to fix race condition in d3d11 state_init functions. 2017-07-11 15:06:31 +02:00
Sebastian Lackner
5e62fbb2d0 Added patch to implement NvAPI_D3D11_SetDepthBoundsTest. 2017-07-11 15:06:31 +02:00
Sebastian Lackner
0211a4935e Added patches to implement various deferred context methods. 2017-07-09 16:44:56 +02:00
Sebastian Lackner
a59a69804a Revert upstream patch which broke in-game audio in multiple games. 2017-07-09 16:11:14 +02:00
Sebastian Lackner
55b5c61703 Added patch to avoid calling RegCloseKey on uninitialized memory. 2017-07-09 16:01:31 +02:00
Sebastian Lackner
8b3a73a4df Rebase against a94938819280aa52fbc545911ca70a6c3a83ab49. 2017-07-09 05:59:05 +02:00
Sebastian Lackner
f9ad524910 Rebase against 9f16e42e209f1afb6918ee8821a42f0438cf9c3b. 2017-07-09 05:47:38 +02:00
Sebastian Lackner
68d0ea3a19 Rebase against 4e2c0444121d341bac9bc841ab6662fceeb42c1a. 2017-07-08 23:09:53 +02:00
Sebastian Lackner
00969f9cd8 Rebase against 287be7c5ee5ed4d070d93209c6cd355be6ed46da. 2017-07-08 22:37:18 +02:00
Sebastian Lackner
de4694c81b Rebase against 7e1522cdd69587b59f97a3b3c755cef40a52070e. 2017-07-08 16:11:26 +02:00
Sebastian Lackner
b888a45d12 Rebase against 0e0834ae92291e9857ed01f3cb116240abda642b. 2017-07-03 04:22:05 +02:00
Sebastian Lackner
46514b9952 Rebase against 08df007e802dfa2845a5b4f33bbf8a04202258bb. 2017-07-03 00:08:58 +02:00
Sebastian Lackner
de09d74c97 Rebase against 73af2479c7107f6157cabdd24dc1e0fe47fbbb1e. 2017-07-03 00:00:08 +02:00
Sebastian Lackner
aa00b4044e Release 2.11. 2017-06-27 18:23:47 +02:00
Sebastian Lackner
9aabd07862 server-ClipCursor: Add back a required check. 2017-06-27 14:11:02 +02:00
Sebastian Lackner
3dad3ddae9 Added patch to improve handling of hooks for normal (non-injected) hardware messages. 2017-06-27 02:21:50 +02:00
Sebastian Lackner
8fb3cd2056 Added patches to implement some further NVAPI stubs. 2017-06-27 02:03:03 +02:00
Sebastian Lackner
d78dc772d6 Added patch to workaround COM/MTA issues due to lack of separate msi custom action process. 2017-06-26 16:22:41 +02:00
Sebastian Lackner
0e64c29e85 Added patch to implement detection for position-independent executables. 2017-06-25 15:11:33 +02:00
Sebastian Lackner
ff7e264839 Added patch to implement support for xaudio2 float formats with more than 2 channels. 2017-06-25 05:29:33 +02:00
Sebastian Lackner
8f35a7629b Added patch to emulate sample_c_lz using textureGradOffset for sampler2DArrayShadow. 2017-06-25 05:24:55 +02:00
Sebastian Lackner
735a9982cc Use proper directory names for ClipCursor patchsets. 2017-06-25 05:15:48 +02:00
Sebastian Lackner
1b5a0095b8 user32-Clip_Cursor: Update patchset. 2017-06-25 05:12:48 +02:00
Sebastian Lackner
12a893e94f Rebase against 4005e6e659107c29f93e7a35a3bb933b22416598. 2017-06-24 01:14:36 +02:00
Sebastian Lackner
dab61e7333 Rebase against f2bb2064bfdf0e7b369f22c34d680dec6c12493c. 2017-06-23 06:14:34 +02:00
Sebastian Lackner
b1cb4553ec Added patch to fix regression related to buffer_sync_apple handling. 2017-06-22 16:42:44 +02:00
Sebastian Lackner
4d290efd99 Rebase against 5cbc84e51eca1a8ce35916ddeebe79b4ccbd761d. 2017-06-22 04:37:31 +02:00
Sebastian Lackner
c0c29e5a88 ntdll-Builtin_Prot: Update patchset. 2017-06-21 23:23:12 +02:00
Sebastian Lackner
e179ddf842 Rebase against 3f6b7c34dbf76fdbf7561a3fe5019713b10d1c9e. 2017-06-21 00:26:40 +02:00
Sebastian Lackner
83a65ef99b Rebase against abaddc871842ba4ec0156f4bfed9939b44052ee4. 2017-06-20 13:55:21 +02:00
Sebastian Lackner
0a16521c7e ntdll-Builtin_Prot: Only handle read faults. 2017-06-19 04:01:59 +02:00
Sebastian Lackner
866e79688c loader-OSX_Preloader: Add workaround for a SELinux warning. 2017-06-18 00:52:15 +02:00
Sebastian Lackner
dbe0e706a4 Rebase against 95a49bdce6cd5a35d5035456e576ab81239fb081. 2017-06-17 21:01:05 +02:00
Sebastian Lackner
907dc4eae6 loader-OSX_Preloader: Add PAGEZERO section for wine-preloader executable.
For wine64-preloader we already do that, but apparently there are also kernel
versions which enforce a PAGEZERO section for 32-bit executables.
2017-06-16 22:45:03 +02:00
Sebastian Lackner
e24fc5fec1 Rebase against c7f0777fc55229d910461a7a38e21f1e17c8913a. 2017-06-16 22:42:57 +02:00
Sebastian Lackner
8ebf6f58e5 Added patches to fix multiple regressions related to GDI rendering. 2017-06-16 22:42:35 +02:00
Sebastian Lackner
f254a73e66 loader-OSX_Preloader: Fall back to MAP_FIXED if address hint is ignored.
This should get rid of preloader warnings on old versions of macOS.
Thanks to Gijs Vermeulen for help with debugging and testing this patch.

Ideally, we would like to use vm_allocate, but since the preloader runs
very early during the startup of the process, we don't have all required
libc functions available. Also, we don't want to reimplement it ourself,
which would be very unreliable in practice.

For now, lets just use mincore() to check if there are any other pages
mapped within the area, and then fallback to MAP_FIXED.
2017-06-15 15:10:14 +02:00
Sebastian Lackner
463f2b02c9 loader-OSX_Preloader: Temporarily map address ranges needed for Wine builtin DLLs. 2017-06-15 00:01:33 +02:00
Sebastian Lackner
e9daff5bc8 loader-OSX_Preloader: Allocate pagezero for main wine binary.
This change should fix compatibility with old versions of macOS.
Thanks to Gijs Vermeulen for help with debugging and testing this patch.

Old versions of libsystem_c.dylib crash while running initializers when
the application does not contain a PAGEZERO section. This is probably
caused by an incorrect comparison against NULL instead of (void *)-1.

Unfortunately, when we just add a PAGEZERO section, we trigger the next
bug - no matter if we actually use the page at address (void *)0 or not,
it will not be used because the relocation code tries to find a memory
hole of size (highAddr - lowAddr) ~ 2GB.

We might be able to workaround this issue by manually reordering the
sections in the main executable, but for now lets just drop the fixed
image base. Please note that this introduces a risk of conflicts with
builtin DLLs, which will be resolved in the next patch.
2017-06-14 23:17:23 +02:00
Sebastian Lackner
be0d43d2b1 kernel32-SetFileCompletionNotificationModes: Fix a corner-case related to AcceptEx (thanks Jacek). 2017-06-14 17:19:52 +02:00
Sebastian Lackner
2420bc89ed Rebase against d7eb469d5992f9901b0dd355e5e61709aed31d2b. 2017-06-14 03:16:45 +02:00
Sebastian Lackner
ecdf44fe29 patchinstall.sh: Add workaround for mktemp on macOS <= 10.10. 2017-06-13 23:54:27 +02:00
Sebastian Lackner
e2b993408e wined3d-Silence_FIXMEs: Remove a no longer valid Fixes line. 2017-06-13 22:51:54 +02:00
Sebastian Lackner
4a13b7eac7 Rebase against f254aec4498e9926200ea9fd9cd2acf914747d91. 2017-06-13 22:45:55 +02:00
Sebastian Lackner
3a7c5ae711 patchinstall.sh: Do not use 'readlink -f' to improve compatibility with macOS. 2017-06-13 22:45:55 +02:00
Sebastian Lackner
3fab2fbed2 loader-OSX_Preloader: Fix compile error with old SDK versions. 2017-06-13 22:45:55 +02:00
Sebastian Lackner
ce25cba7d0 Release 2.10. 2017-06-13 11:16:10 +02:00
Sebastian Lackner
d7712b4819 advapi32-Performance_Counters: Fix a handle leak (thanks Dmitry). 2017-06-13 10:32:55 +02:00
Sebastian Lackner
3c5f207230 Added patch to implement support for querying performance counters data. 2017-06-13 02:12:34 +02:00
Sebastian Lackner
af8052189f Added revert of patch which assumes a 1-to-1 axes mapping when no axes match. 2017-06-12 20:10:02 +02:00
Sebastian Lackner
22731b5aaa Added patch to fix handling of cursor position clipping. 2017-06-12 19:38:36 +02:00
Sebastian Lackner
7c8ec26efc ntdll-User_Shared_Data: Update patchset. 2017-06-12 17:01:33 +02:00
Sebastian Lackner
fbd1870547 dxdiagn-Display_Information: Add reference to additional bug report. 2017-06-12 16:51:31 +02:00
Sebastian Lackner
05a45207e2 server-Debug_Registers: Add reference to bug report. 2017-06-12 16:49:51 +02:00
Sebastian Lackner
ee5545a45f Added patch to fix holes in ELF mappings. 2017-06-12 16:45:10 +02:00
Sebastian Lackner
8881e4710a Added patch to prevent a possible nullpointer dereference in comctl32 tests. 2017-06-12 03:34:50 +02:00
Sebastian Lackner
0c5e30ba40 Compiler_Warnings: Update patchset. 2017-06-12 03:34:50 +02:00
Sebastian Lackner
c2c1e41e3c Added patch to expand environment strings in ShellExecute. 2017-06-12 03:34:50 +02:00
Sebastian Lackner
645ed054f2 Added patch to return MSIDBSTATE_ERROR when MsiGetDatabaseState is called from a custom action. 2017-06-12 03:34:38 +02:00
Sebastian Lackner
b5d451ae12 Added patch to implement preloader for Mac OS. 2017-06-12 00:50:05 +02:00
Sebastian Lackner
5392d42292 Added patches to fix two minor issues related to linked lists. 2017-06-11 02:46:31 +02:00
Sebastian Lackner
05f510a1be Added patch to simulate a more realistic kernel environment in ntoskrnl/winedevice. 2017-06-10 20:24:36 +02:00
Sebastian Lackner
630ff35489 Added patches to implement NtBuildNumber and ExInitializeNPagedLookasideList. 2017-06-10 16:35:54 +02:00
Sebastian Lackner
25e345194d Rebase against e0e4f9bbcda1243b9317dbfbeeff84a18b4e855c. 2017-06-10 00:47:39 +02:00
Sebastian Lackner
38cdf5d3f4 gdi32-Symbol_Truetype_Font: Update definition file. 2017-06-06 10:51:49 +02:00
Sebastian Lackner
d0ac86031a Rebase against e4c9a2ec81b8029876d588e09587db40ab65ee69. 2017-06-06 10:12:28 +02:00
Sebastian Lackner
6ca029a4f6 Rebase against e5733e7cd40b41bb4d8c0409e9ed5be8fe6d5618. 2017-06-05 13:00:54 +02:00
Sebastian Lackner
5d672b2839 Rebase against 6c752aaf8da225365b2bdbbf3c43d41afd4d1344. 2017-06-05 11:03:20 +02:00
Sebastian Lackner
e61bbfd48a Added patch to avoid conversion from unaligned pointer to M128A. 2017-06-04 23:24:22 +02:00
Sebastian Lackner
f5671acfdd Rebase against 1fbb661ed1745bdfdcd1287c730f63503ee3f13f.
This also merges several improvements to avoid compiler warnings with GCC 7.

FIXME: There seems to be a regression (random crashes) during prefix shutdown,
       needs further debugging.
2017-06-04 23:14:03 +02:00
Sebastian Lackner
ac2c2ffdb8 Rebase against 06eceb3af2d56f158dab2db5a7bc768cc2b1c391. 2017-05-31 07:06:29 +02:00
Sebastian Lackner
907f73aa4b Release 2.9. 2017-05-29 15:54:33 +02:00
Sebastian Lackner
76c2635a7a user32-Mouse_Message_Hwnd: Add back a missing return statement (thanks Dmitry). 2017-05-29 12:25:31 +02:00
Sebastian Lackner
5d31795ffc Added patch to implement support for layered window regions. 2017-05-29 08:46:07 +02:00
Sebastian Lackner
5cc0023094 wine.inf-Performance: Add 'Counters' to the perflib key as an alias for 'Counter'. 2017-05-29 03:40:40 +02:00
Sebastian Lackner
6e372d0550 Added patch to handle /dontskip parameter in dxdiag. 2017-05-29 01:12:35 +02:00
Sebastian Lackner
4d5cc8b76f Added patch to check for 'Brian Paul' to detect Mesa gl_vendor. 2017-05-28 23:34:20 +02:00
Sebastian Lackner
d7d4fde17e winebuild-Fake_Dlls: Do not use get_alignment for .balign instructions.
Spotted by Michael MĂĽller.
2017-05-28 21:52:48 +02:00
Sebastian Lackner
033c4b149f ntdll-NtQueryVirtualMemory: Skip get_dll_info wineserver call if address does not have VPROT_IMAGE permissions. 2017-05-28 16:16:15 +02:00
Sebastian Lackner
f957d2a812 Added patches to silence two noisy d3d11 FIXMEs. 2017-05-28 15:56:46 +02:00
Sebastian Lackner
7e80ff15e2 wined3d-QUERY_Stubs: Update patchset and add implementation for WINED3D_QUERY_TYPE_PIPELINE_STATISTICS. 2017-05-28 15:56:45 +02:00
Sebastian Lackner
43973275f2 ntdll-NtQueryVirtualMemory: Update patchset and return proper Nt paths. 2017-05-28 15:55:40 +02:00
Sebastian Lackner
70d09b1977 Added patch to implement opening files through nt device paths. 2017-05-27 18:47:06 +02:00
Sebastian Lackner
527b456839 ntoskrnl-Stubs: Remove some invalid Fixes lines. 2017-05-27 18:20:53 +02:00
Sebastian Lackner
cf4e195b49 Added patch to implement ntoskrnl.ExInterlockedPopEntrySList. 2017-05-27 18:02:35 +02:00
Sebastian Lackner
b7f1c682f3 Added patch to fix crash when a device driver segfaults during an open file request. 2017-05-27 17:46:03 +02:00
Sebastian Lackner
1a5a9b3087 gdi32-MultiMonitor: Update patchset and return more reasonable display DeviceID. 2017-05-27 04:23:12 +02:00
Sebastian Lackner
e5fb1dda8d Added patch to pass correct index to shader_glsl_ffp_vertex_lighting_footer. 2017-05-27 03:25:08 +02:00
Sebastian Lackner
27d1ed8f59 winebuild-Fake_Dlls: Use .balign instead of .fill.
Also remove the ntdll-Interrupt-0x2e dependency, which is no longer necessary.
2017-05-26 10:07:56 +02:00
Sebastian Lackner
857e9c1cd4 Rebase against 799230c78ab102fa0034cb4477ce1be78c456a87. 2017-05-26 04:26:33 +02:00
Sebastian Lackner
0a60add605 winebuild-Fake_Dlls: Merge several further improvements. 2017-05-25 21:59:41 +02:00
Sebastian Lackner
d36701371e Added patch with stub for ntdll.NtContinue. 2017-05-25 05:57:44 +02:00
Sebastian Lackner
b2904214bb winebuild-Fake_Dlls: Added patch to fix relocation information in fake dlls. 2017-05-25 05:52:41 +02:00
Michael MĂĽller
871cee39d0 winebuild-Fake_Dlls: Fill alignment with zero bytes. 2017-05-25 05:52:41 +02:00
Sebastian Lackner
0c46d1e8a2 Rebase against 8967e87c8a890aed7a81051c2d372f065e825bb2. 2017-05-25 03:05:27 +02:00
Sebastian Lackner
91f6a8ad80 Rebase against ef267f115f76a3041e0da4a0f0dbd7ffb4a022e1. 2017-05-25 01:24:35 +02:00
Sebastian Lackner
8b1d3d07ab Rebase against b8a8e1bde9382897927945ec0b58b8a2fcfcfe59. 2017-05-24 23:55:00 +02:00
Sebastian Lackner
2ca6aebfaa Rebase against 3f01ab4c39ffa50e26916a5f33d82dec1a2e42dc. 2017-05-20 00:45:45 +02:00
Sebastian Lackner
81571a4cb5 Rebase against 53bf72e266532f2f0533a0dfd7e90a25d7b6d901. 2017-05-19 22:31:19 +02:00
Sebastian Lackner
51dc575ef3 Rebase against 9baceabb88e2aeb90a32bb5f6923107904ed58ea. 2017-05-18 05:32:56 +02:00
Sebastian Lackner
73573b1dff kernel32-MoveFile: Fix a regression when copying addon to cache directory. 2017-05-17 16:45:13 +02:00
Sebastian Lackner
142cc2eda5 Rebase against 66c7b37a9819195d40f5ab053268548c4370fb06. 2017-05-17 01:00:41 +02:00
Sebastian Lackner
ebabcd69b5 Rebase against be12c5bc4f189901541fdca41da267f8a0ef873d. 2017-05-16 23:01:26 +02:00
Sebastian Lackner
20d1f21514 Release 2.8. 2017-05-16 14:17:16 +02:00
Sebastian Lackner
7ad2ee4c60 winebuild-Fake_Dlls: Avoid conflict with 16-bit code. 2017-05-16 04:52:55 +02:00
Sebastian Lackner
d00088e0fa winebuild-Fake_Dlls: Try to fix build failure on OSX. 2017-05-16 03:25:43 +02:00
Sebastian Lackner
633cceca94 user32-GetAutoRotationState: Remove definition file. 2017-05-16 01:31:39 +02:00
Sebastian Lackner
46006c692a Rename windowscodecs-Metadata -> windowscodecs-MetadataQueryParser. 2017-05-16 00:26:55 +02:00
Sebastian Lackner
d56994dbfa Added patches with multiple improvements for propsys functions. 2017-05-16 00:22:58 +02:00
Sebastian Lackner
5e70613512 Added patch to implement a basic security property tab. 2017-05-15 22:51:33 +02:00
Sebastian Lackner
6a14f80fdc Added patch with various improvements for fake dlls. 2017-05-15 21:07:42 +02:00
Sebastian Lackner
5d38a0fed0 ntdll-User_Shared_Data: Fix test failures on WinXP. 2017-05-14 00:48:30 +02:00
Sebastian Lackner
8748402001 Rebase against 4eaaf06ce4e5d7424eec2cf303c8256610544b39. 2017-05-13 01:14:10 +02:00
Sebastian Lackner
171d05fffe wined3d-CSMT_Main: Get rid of unnecessary wait. 2017-05-12 03:47:26 +02:00
Sebastian Lackner
975205155e Rebase against b77688102a84e1c7b7278340c46f53db3e1cda00. 2017-05-12 00:36:30 +02:00
Sebastian Lackner
d6c145fbf5 server-Debug_Registers: Remove bug reference.
The issue is mentioned in bug 32515, but Steam cache
validation still fails with this patch applied.
2017-05-11 03:36:48 +02:00
Sebastian Lackner
3207980517 Rebase against 0647abc5071913506e681bfc5239f9a6078dca54. 2017-05-11 01:46:17 +02:00
Sebastian Lackner
1bbe50aae8 Rebase against 8ef79b023a06f00ca6ab37afb8089d358b277d73. 2017-05-10 03:29:09 +02:00
Sebastian Lackner
bb180d38cc d3d11-Deferred_Context: Merge two patches. 2017-05-09 19:55:51 +02:00
Sebastian Lackner
c542f2432d Rebase against b6a4b2f593503a105dde01e7bd11ffdde243117a. 2017-05-09 05:33:36 +02:00
Sebastian Lackner
a36a97233a wined3d-CSMT_Main: Merge two patches. 2017-05-08 13:07:44 +02:00
Sebastian Lackner
f8e955a95a ntdll-User_Shared_Data: Add a missing CDECL. 2017-05-06 20:14:20 +02:00
Sebastian Lackner
d966bece72 Added patch to implement some additional windowscodecs metadata functions. 2017-05-06 17:04:02 +02:00
Sebastian Lackner
1447b56eeb Added patch to reset debug registers when creating threads. 2017-05-06 02:13:58 +02:00
Sebastian Lackner
afe018692b Added patch to fix some test failures in d3dx9_36/math tests. 2017-05-06 02:08:18 +02:00
Sebastian Lackner
52b5c90303 Rebase against 9f55292085392579568ff81b8adb926b32a8d99a. 2017-05-06 02:06:45 +02:00
Sebastian Lackner
4a4ebec642 dxva2-Video_Decoder: Remove dependency on winecfg-Staging patchset. 2017-05-05 20:34:33 +02:00
Sebastian Lackner
35ea3890a7 Add a separate script to plot patchset dependency graph. 2017-05-05 20:33:54 +02:00
Sebastian Lackner
26438ad74c Added patch to update user_shared_data timers. 2017-05-05 13:37:34 +02:00
Sebastian Lackner
31212d2845 Rebase against 10db51d5c26f0a71956989ecff83da90f4d94fda. 2017-05-05 02:26:52 +02:00
Sebastian Lackner
a08b6b2b62 Added patch for initial implementation of advapi32.BuildSecurityDescriptorW. 2017-05-05 00:25:14 +02:00
Sebastian Lackner
9985fe9035 Added patch to implement TokenIntegrityLevel stub in NtSetInformationToken. 2017-05-04 21:31:38 +02:00
Sebastian Lackner
3aa965e97f Added patch to implement TokenLogonSid stub in NtQueryInformationToken. 2017-05-04 21:27:41 +02:00
Sebastian Lackner
2e479e0954 Added patch to implement semi-stub for ntdll.NtCreateThreadEx. 2017-05-04 21:24:17 +02:00
Sebastian Lackner
9fe12a2175 Added patch to avoid crash if context_reacquire is called with NULL context. 2017-05-04 02:56:03 +02:00
Sebastian Lackner
d7c0a975ea Rebase against 8753a1b271795d2f977b41a814de7e4ace780d2e. 2017-05-04 02:13:14 +02:00
Sebastian Lackner
eb4a245bbb Rebase against b1203af6ba44ff8858ee9ca50fc05f4f3f633892. 2017-05-03 05:45:47 +02:00
Sebastian Lackner
5282f297be bcrypt-Improvements: Fix BCryptEncrypt with AES_GCM and no input and no output. 2017-05-02 18:36:51 +02:00
Sebastian Lackner
1446da2c50 fonts-Tahoma: Regenerate tahoma.ttf with ancient fontconfig.
To keep the changes small and to ensure the resulting TTF file
is better compatible with Windows.
2017-05-02 18:36:25 +02:00
Sebastian Lackner
2db34eca39 Rebase against 7cd7f14696dc3fb7aa41ef253ad144d458304a28. 2017-05-02 12:57:50 +02:00
Sebastian Lackner
d80c4a83fd Release 2.7. 2017-05-02 04:51:49 +02:00
Sebastian Lackner
0c62a31ae7 Added patch for U+FB01 and U+FB02 glyphs in Tahoma font. 2017-05-02 03:19:58 +02:00
Sebastian Lackner
6acc999e64 windowscodecs-TIFF_Support: Fix pixel format descriptors. 2017-05-02 02:22:42 +02:00
Sebastian Lackner
e0ec571af4 dmusic-SynthPort_IKsControl: Remote a Fixes line. 2017-05-02 01:27:48 +02:00
Sebastian Lackner
2c4db4ada1 Added patch to fix Param2 in SPFILENOTIFY_FILEINCABINET handler. 2017-05-02 01:26:37 +02:00
Sebastian Lackner
46bcbf913f Added patch to fix test failure in dmloader tests. 2017-05-01 19:50:27 +02:00
Sebastian Lackner
1d7d9cf626 kernel32-Locale_Definitions: Disable patchset which causes a test failure. 2017-05-01 18:34:32 +02:00
Sebastian Lackner
4e8721c714 ntdll-ProcessImageFileNameWin32: Fix test failures. 2017-05-01 18:20:51 +02:00
Sebastian Lackner
affad837a0 Rebase against 07cf14dc928a1a00baecbbc7ca5a6f3fe680238c. 2017-04-28 23:28:40 +02:00
Sebastian Lackner
c00520d3f8 Added patch to fix handling of ShowWindow when window is already visible. 2017-04-28 15:30:12 +02:00
Sebastian Lackner
bf3ff21ed7 Rebase against ae600c0b2c5b63d0c32a19f44629c204d1a0fc51. 2017-04-28 04:10:08 +02:00
Sebastian Lackner
18b192b7bd kernel32-Named_Pipe: Comment Fixes lines. 2017-04-27 01:26:18 +02:00
Sebastian Lackner
d3c3d2ab96 Rebase against 6f99cf01e1b88c9bb09fe6b9bff3443514db5ae2. 2017-04-27 01:22:20 +02:00
Sebastian Lackner
229bb38973 Rebase against 89ef7b59f548a76960b2278d819a8f915c81e132. 2017-04-26 04:01:25 +02:00
Sebastian Lackner
af6b4ace35 Rebase against e49feb63f489141c08a967a9c47930559e1de4f7. 2017-04-25 03:08:33 +02:00
Sebastian Lackner
e3e7950f4f kernel32-SetFileInformationByHandle: Remove patch with unnecessary include file change. 2017-04-24 16:50:23 +02:00
Sebastian Lackner
b6c2991af1 iexplore-Revert_ProductVersion: Remove deprecated patchset. 2017-04-24 16:31:33 +02:00
Sebastian Lackner
447795d20e wined3d-Revert_Pixel_Center_Offset: Remove deprecated patchset. 2017-04-24 02:27:04 +02:00
Sebastian Lackner
8fd38e80cd ntdll-Virtual_Memory_Stack: Delete disabled patchset. 2017-04-24 00:37:49 +02:00
Sebastian Lackner
7492968519 ntdll-Syscall_Wrappers: Delete disabled patchset. 2017-04-24 00:36:03 +02:00
Sebastian Lackner
c0304d7976 Exagear: Delete disabled patchset. 2017-04-24 00:18:25 +02:00
Sebastian Lackner
075da187c7 Rebase against cced5dfbde8b685022dd74e666f8ad4ea8473453. 2017-04-22 14:57:30 +02:00
Sebastian Lackner
89777bdb23 Rebase against 6c7760f2175e241b330cde0a902c96d9007922e0. 2017-04-21 13:20:03 +02:00
Sebastian Lackner
bd070a400c Rebase against f7402accc40b66140be4d27c5ad1b2fee8532dfc. 2017-04-20 02:16:00 +02:00
Sebastian Lackner
a65b6fa780 Release 2.6. 2017-04-19 10:54:39 +02:00
Sebastian Lackner
92bc06bd9e winecfg-Unmounted_Devices: Fix another compile issue on OSX. 2017-04-19 04:48:29 +02:00
Sebastian Lackner
2b4120187b Compiler_Warnings: Fix compililation error on OSX. 2017-04-19 04:04:24 +02:00
Sebastian Lackner
5dcd52a67f wined3d-CSMT_Main: Reenable patchset. 2017-04-19 01:34:24 +02:00
Sebastian Lackner
10837badd4 wined3d-Accounting: Do not use context on the main thread. 2017-04-17 00:43:21 +02:00
Sebastian Lackner
c9b2336f64 Added patch to implement support for recent OSMesa versions. 2017-04-16 19:19:34 +02:00
Sebastian Lackner
a06d982751 winecfg-Unmounted_Devices: Avoid access violation when autodetecting devices in winecfg. 2017-04-16 17:54:19 +02:00
Sebastian Lackner
e963b417b3 Added patches to fix error handling issues in wined3d. 2017-04-14 17:46:52 +02:00
Sebastian Lackner
079da46f96 Added patch to fix compilation with recent versions of gcc. 2017-04-14 16:02:12 +02:00
Sebastian Lackner
3003efacdb Rebase against 709935314458bd0ce27aab3986ae98cc556cb663. 2017-04-14 15:28:19 +02:00
Sebastian Lackner
14acf51a2d Rebase against aa1580398e4c9eda851d475213e07d865d9238bd. 2017-04-13 11:52:28 +02:00
Sebastian Lackner
830a8b9975 Rebase against d6557e812984e010a989a3360039453eb978bd12. 2017-04-13 11:06:17 +02:00
Sebastian Lackner
4a75337774 Rebase against 9e35dd15454be28c487b0f1bebefbbe530b2aca4. 2017-04-12 09:52:27 +02:00
Sebastian Lackner
b113596b6c Rebase against 692656467729c5548c45244aa05ca946620afa72. 2017-04-12 07:03:43 +02:00
Sebastian Lackner
e5d2247213 Rebase against 61a1a266faa9fa7c959136b0ab0b5d7e01326878. 2017-04-11 05:15:20 +02:00
Sebastian Lackner
fbc61357d3 Rebase against 0128e1a18f25848e6f47146580a8f0db69687dd6. 2017-04-10 22:39:05 +02:00
Sebastian Lackner
d06996cabd Rebase against 35ca862025fa14065d4ebed761783de225cb6690. 2017-04-10 18:41:57 +02:00
Sebastian Lackner
e4ac3ea735 Rebase against 8b1737c0fdf1d3d905bea281d9241f1f48f333e9. 2017-04-10 07:36:39 +02:00
Sebastian Lackner
25bd49ecb6 Release 2.5. 2017-04-09 19:53:42 +02:00
Sebastian Lackner
7a2c0d03d7 Added patch for dummy apiset in PEB struct. 2017-04-09 16:14:41 +02:00
Sebastian Lackner
c081ded2be Added patch to add missing initialization in create_glyphrunanalysis. 2017-04-09 16:14:41 +02:00
Sebastian Lackner
c372796653 kernel32-SetFileCompletionNotificationModes: Update patchset for server-side named pipes. 2017-04-09 16:14:41 +02:00
Sebastian Lackner
8568fe0a24 oleaut32-OleLoadPicture: Update patchset and fix a regression. 2017-04-09 16:14:41 +02:00
Sebastian Lackner
6897c8b67b Added patch to implement and use hash links when looking up LDR module. 2017-04-09 16:14:41 +02:00
Sebastian Lackner
0844f36738 Added patch to implement stub for ntdll.RtlGetUnloadEventTraceEx. 2017-04-09 16:14:41 +02:00
Sebastian Lackner
b9a9f51c59 Added patch to implement NtSuspendProcess and NtResumeProcess. 2017-04-09 16:14:41 +02:00
Sebastian Lackner
2dd39323aa Added patch to implement more stub classes in NtQueryInformationJobObject. 2017-04-09 16:14:41 +02:00
Sebastian Lackner
4f7c521e11 Added patch to implement FileNameInformation in NtQueryInformationFile for named pipes. 2017-04-09 16:14:41 +02:00
Sebastian Lackner
a16c4ffd33 Added patch to return failure when handling http redirect without hostname. 2017-04-09 16:14:41 +02:00
Sebastian Lackner
35d020002f README.md: Update link to installation instructions. 2017-04-09 16:14:41 +02:00
Sebastian Lackner
a781d341a5 Rebase against 64e4a03a92498abea428dc567372f3996fa9dc3a. 2017-04-09 16:14:41 +02:00
Sebastian Lackner
3a8de0f3f4 Rebase against 63bcfa3354edd910ee52b8134af191f7a774b701. 2017-04-09 16:14:41 +02:00
Sebastian Lackner
e2750d967a Rebase against 42ed54b5d8e67aeb647d5a4fc8af7c8962285c7f. 2017-04-09 16:14:41 +02:00
Sebastian Lackner
a127f84245 patchupdate.py: Add support to exclude individual files. 2017-04-09 16:14:41 +02:00
Sebastian Lackner
e3753add9b Rebase against ec8485ec10e3c27b89ec5f1289bc8a3cdad5f3f6. 2017-04-09 16:14:41 +02:00
Sebastian Lackner
55ab42ece0 Rebase against 5b4f8a385b46a8a8a8b09b8ca6578aa7b7995a1e. 2017-04-09 16:14:41 +02:00
Sebastian Lackner
4232441093 Release 2.4. 2017-03-21 02:14:59 +01:00
Sebastian Lackner
912df91ba1 windowscodecs-TIFF_Support: Fix order of pixel formats in gdiplus. 2017-03-20 19:09:27 +01:00
Sebastian Lackner
12f8688fc5 Added patch to improve performance of bilinear bitmap scaling. 2017-03-20 18:01:06 +01:00
Sebastian Lackner
3e2e449d4e Added patch to treat lpResults as optional in gdi32.GetCharacterPlacement. 2017-03-20 17:40:32 +01:00
Sebastian Lackner
3f05773e20 Added patch to fill process virtual memory counters in NtQuerySystemInformation. 2017-03-20 17:34:45 +01:00
Sebastian Lackner
a47000e41c Added patch with multiple fixes for owner-drawn and sorted listbox. 2017-03-20 16:49:38 +01:00
Sebastian Lackner
e92999d7d5 Added patch to add Vendor field in Win32_ComputerSystemProduct. 2017-03-20 05:54:30 +01:00
Sebastian Lackner
687f25d6bb ntdll-Interrupt-0x2e: Add reference to bug report. 2017-03-19 23:06:32 +01:00
Sebastian Lackner
8ef379ecc8 Added patch to implement querying for object types and their indices. 2017-03-19 22:27:07 +01:00
Sebastian Lackner
d79b66338e Added patch to implement stub handler for int 0x2e. 2017-03-19 20:32:29 +01:00
Sebastian Lackner
82cd676a72 Added patch to return user/kernel times for threads and processes in NtQuerySystemInformation. 2017-03-19 20:01:39 +01:00
Sebastian Lackner
da78da9cdd Added patch to silence noisy FIXME about unimplemented D3DPROCESSVERTICES_UPDATEEXTENTS. 2017-03-19 19:11:24 +01:00
Sebastian Lackner
b9b5da4780 Added patch to fix status code when querying too large memory address. 2017-03-19 17:54:21 +01:00
Sebastian Lackner
444ec16851 Added patches to mark LDR data as initialized. 2017-03-19 17:52:25 +01:00
Sebastian Lackner
76b749edc9 Rebase against 6a05069a43f1a8f0e69c4cedd134f8d7400b8a95. 2017-03-19 01:38:27 +01:00
Sebastian Lackner
a56b7a18c3 Rebase against a5031391f40c6196b9baccbf69f5ccbe3b59e17c. 2017-03-18 17:10:07 +01:00
Sebastian Lackner
5a5b6e862b Rebase against c3b108e54b99eff3942c44eef5aa89c1dbcebd91. 2017-03-16 17:13:47 +01:00
Sebastian Lackner
06da0acbdc Rebase against 2cc730b4ad148382093d67f15d40134aee05d058. 2017-03-15 16:16:43 +01:00
Sebastian Lackner
efdf5d2bc2 Rebase against f8031d06486761b1068a5b4fa8572d08efdfb8f1. 2017-03-14 03:37:18 +01:00
Sebastian Lackner
543b9eaae1 Rebase against 4b1445940d47870895b7fa87b7d69d12abe701ef. 2017-03-11 21:57:58 +01:00
Sebastian Lackner
ce5620a1a4 Added patch to return correct thread creation time in SystemProcessInformation. 2017-03-11 00:21:26 +01:00
Sebastian Lackner
05a282feff Added patch to implement IO stats for SystemPerformanceInformation in NtQuerySystemInformation. 2017-03-11 00:11:02 +01:00
Sebastian Lackner
ab34c856c3 Added patch to implement ProcessImageFileNameWin32 info class. 2017-03-10 23:09:57 +01:00
Sebastian Lackner
9a9fb0c9f8 Rebase against be0e05604a5560e26757d161708c2c3dae717834. 2017-03-10 04:53:06 +01:00
Sebastian Lackner
0ef6532241 Rebase against 1ddf2b4db8c42da36bdccd43dc336eee6ba03cce. 2017-03-10 03:25:38 +01:00
Sebastian Lackner
3b1cd79e05 Rebase against 9eecacbeb1561218d4870c83f89a233cabbf7e0c. 2017-03-08 22:56:02 +01:00
Sebastian Lackner
37b0772439 Rebase against 3f50319ec384730360d16dd79d703adafaa953fc. 2017-03-07 02:12:41 +01:00
Sebastian Lackner
3b947eae95 ntoskrnl-InStackQueuedSpinLock: Use the correct macro. 2017-03-06 22:06:33 +01:00
737 changed files with 46876 additions and 30612 deletions

30
CONTRIBUTING.md Normal file
View File

@@ -0,0 +1,30 @@
Contributing to Wine Staging
----------------------------
First of all, thank you for taking the time to contribute to this project.
### Reporting bugs
Since WineConf 2015 Wine Staging is an official part of WineHQ, which means you
can report problems directly at [bugs.winehq.org](https://bugs.winehq.org/).
Most of the time bugs found in Wine Staging also turn out to be present in the
development branch, so its recommended to open your bug in the "Wine" product,
unless you are sure its really "Wine Staging" specific. For bugs related to our
binary packages, please open a bug report in the "Packaging" product.
### Submitting patches
**IMPORTANT:** Please use [dev.wine-staging.com](https://dev.wine-staging.com/patches)
for patch submissions, we currently do not accept Pull requests on GitHub.
Wine Staging mainly concentrates on experimental features and patches which are
difficult to get into the development branch. If you have a very simple bug fix
including tests, there is usually no need to send it to Wine Staging. You can
directly contribute it to the
[development branch](http://wiki.winehq.org/SubmittingPatches). However, if you
already tried that without success, or are working on such a complex area that
you do not really think its ready for inclusion, you might want to submit it to
our Staging tree. Please open a patch submission request on
[dev.wine-staging.com](https://dev.wine-staging.com/patches) including the patch.
More information is also available in our
[Wiki](https://wiki.winehq.org/Wine-Staging_Patches).

View File

@@ -13,7 +13,7 @@ Installation
Ready-to-use packages for Wine Staging are available for a variety of Linux
distributions and for Mac OS X. Just follow the
[installation instructions](https://github.com/wine-compholio/wine-staging/wiki/Installation)
[installation instructions](https://wine-staging.com/installation.html)
for your operating system.
On most distributions the `wine-staging` package is installed to
@@ -24,16 +24,6 @@ other wine-specific programs like `winecfg`. To learn more about how to use
Wine Staging, please take a look at the
[usage instructions](https://github.com/wine-compholio/wine-staging/wiki/Usage).
Reporting bugs
--------------
Since WineConf 2015 Wine Staging is an official part of WineHQ, which means you
can report problems directly at https://bugs.winehq.org/. Most of the time bugs
found in Wine Staging also turn out to be present in the development branch, so
its recommended to open your bug in the "Wine" product, unless you are sure its
really "Wine Staging" specific. For problems with our binary packages, please
also open a bug report there.
Building
--------
@@ -88,14 +78,5 @@ in our [Wiki](https://github.com/wine-compholio/wine-staging/wiki/Packaging).
Contributing
------------
Wine Staging mainly concentrates on experimental features and patches which are
difficult to get into the development branch. If you have a very simple bug fix
including tests, there is usually no need to send it to Wine Staging. You can
directly contribute it to the
[development branch](http://wiki.winehq.org/SubmittingPatches). However, if you
already tried that without success, or are working on such a complex area that
you do not really think its ready for inclusion, you might want to submit it to
our Staging tree. Please open a patch submission request on
[bugs.wine-staging.com](https://bugs.wine-staging.com/) including the patch.
More information is also available in our
[Wiki](https://github.com/wine-compholio/wine-staging/wiki/Contributing).
Please see CONTRIBUTING.md for more information about contributing to Wine
Staging.

View File

@@ -0,0 +1,24 @@
From 560a25c662f7b56d2b895759be1ea65c64d0f5af Mon Sep 17 00:00:00 2001
From: Sebastian Lackner <sebastian@fds-team.de>
Date: Sun, 4 Jun 2017 12:57:17 +0200
Subject: ws2_32/tests: Work around an incorrect detection in GCC 7.
---
dlls/ws2_32/tests/sock.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/dlls/ws2_32/tests/sock.c b/dlls/ws2_32/tests/sock.c
index 677a750ec6b..65c82e36524 100644
--- a/dlls/ws2_32/tests/sock.c
+++ b/dlls/ws2_32/tests/sock.c
@@ -3601,6 +3601,7 @@ static DWORD WINAPI SelectReadThread(void *param)
struct sockaddr_in addr;
struct timeval select_timeout;
+ memset(&readfds, 0, sizeof(readfds));
FD_ZERO(&readfds);
FD_SET(par->s, &readfds);
select_timeout.tv_sec=5;
--
2.13.0

View File

@@ -1,21 +1,20 @@
From 35e7be609df3c37eded9a3fd117ba0cef02f24c7 Mon Sep 17 00:00:00 2001
From cd34de81164087b3593d0ec9416e2f157a5df40d Mon Sep 17 00:00:00 2001
From: "Erich E. Hoover" <erich.e.hoover@gmail.com>
Date: Fri, 8 Aug 2014 19:33:14 -0600
Subject: Appease the blessed version of gcc (4.5) when -Werror is enabled.
---
dlls/d3d9/tests/visual.c | 2 +-
dlls/netapi32/netapi32.c | 2 +-
dlls/winealsa.drv/mmdevdrv.c | 2 +-
dlls/wined3d/glsl_shader.c | 2 +-
tools/makedep.c | 2 +-
5 files changed, 5 insertions(+), 5 deletions(-)
dlls/d3d9/tests/visual.c | 2 +-
dlls/netapi32/netapi32.c | 2 +-
dlls/wined3d/glsl_shader.c | 2 +-
tools/makedep.c | 2 +-
4 files changed, 4 insertions(+), 4 deletions(-)
diff --git a/dlls/d3d9/tests/visual.c b/dlls/d3d9/tests/visual.c
index 55140c6..2facbfb 100644
index c8a6a1fa5a8..0261d3708e6 100644
--- a/dlls/d3d9/tests/visual.c
+++ b/dlls/d3d9/tests/visual.c
@@ -12034,7 +12034,7 @@ static void yuv_layout_test(void)
@@ -12304,7 +12304,7 @@ static void yuv_layout_test(void)
IDirect3D9 *d3d;
D3DCOLOR color;
DWORD ref_color;
@@ -25,7 +24,7 @@ index 55140c6..2facbfb 100644
IDirect3DDevice9 *device;
ULONG refcount;
diff --git a/dlls/netapi32/netapi32.c b/dlls/netapi32/netapi32.c
index bb61e7f..cf4c466 100644
index 278d4528b01..1c5f110b828 100644
--- a/dlls/netapi32/netapi32.c
+++ b/dlls/netapi32/netapi32.c
@@ -780,7 +780,7 @@ static NET_API_STATUS share_info_to_samba( DWORD level, const BYTE *buf, unsigne
@@ -37,25 +36,12 @@ index bb61e7f..cf4c466 100644
NET_API_STATUS status;
if (servername && !(server = strdup_unixcp( servername ))) return ERROR_OUTOFMEMORY;
diff --git a/dlls/winealsa.drv/mmdevdrv.c b/dlls/winealsa.drv/mmdevdrv.c
index 14eac39..ebff9f1 100644
--- a/dlls/winealsa.drv/mmdevdrv.c
+++ b/dlls/winealsa.drv/mmdevdrv.c
@@ -359,7 +359,7 @@ static WCHAR *construct_device_id(EDataFlow flow, const WCHAR *chunk1, const cha
{
WCHAR *ret;
const WCHAR *prefix;
- DWORD len_wchars = 0, chunk1_len, copied = 0, prefix_len;
+ DWORD len_wchars = 0, chunk1_len = 0, copied = 0, prefix_len;
static const WCHAR dashW[] = {' ','-',' ',0};
static const size_t dashW_len = (sizeof(dashW) / sizeof(*dashW)) - 1;
diff --git a/dlls/wined3d/glsl_shader.c b/dlls/wined3d/glsl_shader.c
index 44e7090..429ae90 100644
index f96f48d97d1..8fe3318cd78 100644
--- a/dlls/wined3d/glsl_shader.c
+++ b/dlls/wined3d/glsl_shader.c
@@ -6893,7 +6893,7 @@ static void set_glsl_shader_program(const struct wined3d_context *context, const
GLuint vs_id = 0;
@@ -9721,7 +9721,7 @@ static void set_glsl_shader_program(const struct wined3d_context *context, const
GLuint ds_id = 0;
GLuint gs_id = 0;
GLuint ps_id = 0;
- struct list *ps_list, *vs_list;
@@ -64,10 +50,10 @@ index 44e7090..429ae90 100644
struct wined3d_string_buffer *tmp_name;
diff --git a/tools/makedep.c b/tools/makedep.c
index d8cf2f5..280f62f 100644
index 296356b0a57..5a2873b56f1 100644
--- a/tools/makedep.c
+++ b/tools/makedep.c
@@ -1559,7 +1559,7 @@ static const char *get_make_variable( const struct makefile *make, const char *n
@@ -1608,7 +1608,7 @@ static const char *get_make_variable( const struct makefile *make, const char *n
static char *get_expanded_make_variable( const struct makefile *make, const char *name )
{
const char *var;
@@ -77,5 +63,5 @@ index d8cf2f5..280f62f 100644
var = get_make_variable( make, name );
if (!var) return NULL;
--
2.6.2
2.13.1

View File

@@ -1,18 +1,18 @@
From 929eaf5dcdca040cd82141ad5ddfdcbc6c5f4a03 Mon Sep 17 00:00:00 2001
From 79ff79dba6d5c8008c53e4bcf5e38c3a54271091 Mon Sep 17 00:00:00 2001
From: Sebastian Lackner <sebastian@fds-team.de>
Date: Tue, 22 Mar 2016 21:54:26 +0100
Subject: d2d1: Avoid implicit cast of interface pointer.
---
dlls/d2d1/brush.c | 6 +++---
dlls/d2d1/brush.c | 8 ++++----
dlls/d2d1/geometry.c | 6 +++---
2 files changed, 6 insertions(+), 6 deletions(-)
2 files changed, 7 insertions(+), 7 deletions(-)
diff --git a/dlls/d2d1/brush.c b/dlls/d2d1/brush.c
index aa92318..19b0993 100644
index 7f4c7bbb763..30d25fec4b4 100644
--- a/dlls/d2d1/brush.c
+++ b/dlls/d2d1/brush.c
@@ -181,7 +181,7 @@ static void d2d_brush_init(struct d2d_brush *brush, ID2D1Factory *factory,
@@ -251,7 +251,7 @@ static void d2d_brush_init(struct d2d_brush *brush, ID2D1Factory *factory,
static inline struct d2d_brush *impl_from_ID2D1SolidColorBrush(ID2D1SolidColorBrush *iface)
{
@@ -21,7 +21,7 @@ index aa92318..19b0993 100644
}
static HRESULT STDMETHODCALLTYPE d2d_solid_color_brush_QueryInterface(ID2D1SolidColorBrush *iface,
@@ -318,7 +318,7 @@ void d2d_solid_color_brush_init(struct d2d_brush *brush, ID2D1Factory *factory,
@@ -394,7 +394,7 @@ HRESULT d2d_solid_color_brush_create(ID2D1Factory *factory, const D2D1_COLOR_F *
static inline struct d2d_brush *impl_from_ID2D1LinearGradientBrush(ID2D1LinearGradientBrush *iface)
{
@@ -30,7 +30,16 @@ index aa92318..19b0993 100644
}
static HRESULT STDMETHODCALLTYPE d2d_linear_gradient_brush_QueryInterface(ID2D1LinearGradientBrush *iface,
@@ -476,7 +476,7 @@ void d2d_linear_gradient_brush_init(struct d2d_brush *brush, ID2D1Factory *facto
@@ -580,7 +580,7 @@ HRESULT d2d_linear_gradient_brush_create(ID2D1Factory *factory, const D2D1_LINEA
static inline struct d2d_brush *impl_from_ID2D1RadialGradientBrush(ID2D1RadialGradientBrush *iface)
{
- return CONTAINING_RECORD(iface, struct d2d_brush, ID2D1Brush_iface);
+ return CONTAINING_RECORD((ID2D1Brush *)iface, struct d2d_brush, ID2D1Brush_iface);
}
static HRESULT STDMETHODCALLTYPE d2d_radial_gradient_brush_QueryInterface(ID2D1RadialGradientBrush *iface,
@@ -776,7 +776,7 @@ HRESULT d2d_radial_gradient_brush_create(ID2D1Factory *factory, const D2D1_BRUSH
static inline struct d2d_brush *impl_from_ID2D1BitmapBrush(ID2D1BitmapBrush *iface)
{
@@ -40,10 +49,10 @@ index aa92318..19b0993 100644
static HRESULT STDMETHODCALLTYPE d2d_bitmap_brush_QueryInterface(ID2D1BitmapBrush *iface,
diff --git a/dlls/d2d1/geometry.c b/dlls/d2d1/geometry.c
index 9fa1783..125c610 100644
index a9588985642..b8457a9e1ea 100644
--- a/dlls/d2d1/geometry.c
+++ b/dlls/d2d1/geometry.c
@@ -2022,7 +2022,7 @@ static const struct ID2D1GeometrySinkVtbl d2d_geometry_sink_vtbl =
@@ -3024,7 +3024,7 @@ static const struct ID2D1GeometrySinkVtbl d2d_geometry_sink_vtbl =
static inline struct d2d_geometry *impl_from_ID2D1PathGeometry(ID2D1PathGeometry *iface)
{
@@ -52,7 +61,7 @@ index 9fa1783..125c610 100644
}
static HRESULT STDMETHODCALLTYPE d2d_path_geometry_QueryInterface(ID2D1PathGeometry *iface, REFIID iid, void **out)
@@ -2283,7 +2283,7 @@ void d2d_path_geometry_init(struct d2d_geometry *geometry, ID2D1Factory *factory
@@ -3540,7 +3540,7 @@ void d2d_path_geometry_init(struct d2d_geometry *geometry, ID2D1Factory *factory
static inline struct d2d_geometry *impl_from_ID2D1RectangleGeometry(ID2D1RectangleGeometry *iface)
{
@@ -61,7 +70,7 @@ index 9fa1783..125c610 100644
}
static HRESULT STDMETHODCALLTYPE d2d_rectangle_geometry_QueryInterface(ID2D1RectangleGeometry *iface,
@@ -2531,7 +2531,7 @@ HRESULT d2d_rectangle_geometry_init(struct d2d_geometry *geometry, ID2D1Factory
@@ -3876,7 +3876,7 @@ fail:
static inline struct d2d_geometry *impl_from_ID2D1TransformedGeometry(ID2D1TransformedGeometry *iface)
{
@@ -71,5 +80,5 @@ index 9fa1783..125c610 100644
static HRESULT STDMETHODCALLTYPE d2d_transformed_geometry_QueryInterface(ID2D1TransformedGeometry *iface,
--
2.7.1
2.14.1

View File

@@ -0,0 +1,25 @@
From 814a4e7a4cad942e284a4828927dd0b67938af33 Mon Sep 17 00:00:00 2001
From: Sebastian Lackner <sebastian@fds-team.de>
Date: Sun, 2 Jul 2017 22:32:45 +0200
Subject: wsdapi: Avoid implicit cast of interface pointer.
---
dlls/wsdapi/msgparams.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/dlls/wsdapi/msgparams.c b/dlls/wsdapi/msgparams.c
index a7a2f0a73b3..47a77138709 100644
--- a/dlls/wsdapi/msgparams.c
+++ b/dlls/wsdapi/msgparams.c
@@ -45,7 +45,7 @@ static inline IWSDMessageParametersImpl *impl_from_IWSDMessageParameters(IWSDMes
static inline IWSDUdpMessageParametersImpl *impl_from_IWSDUdpMessageParameters(IWSDUdpMessageParameters *iface)
{
- return CONTAINING_RECORD(iface, IWSDUdpMessageParametersImpl, base.IWSDMessageParameters_iface);
+ return CONTAINING_RECORD((IWSDMessageParameters *)iface, IWSDUdpMessageParametersImpl, base.IWSDMessageParameters_iface);
}
/* IWSDMessageParameters implementation */
--
2.13.1

View File

@@ -0,0 +1,25 @@
From b4586e37df817f205c8bebe319b4765dea5c62d5 Mon Sep 17 00:00:00 2001
From: Sebastian Lackner <sebastian@fds-team.de>
Date: Sun, 24 Sep 2017 19:21:06 +0200
Subject: evr: Avoid implicit cast of interface pointer.
---
dlls/evr/evr.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/dlls/evr/evr.c b/dlls/evr/evr.c
index c2d2933211e..5533f38a649 100644
--- a/dlls/evr/evr.c
+++ b/dlls/evr/evr.c
@@ -136,7 +136,7 @@ static const IUnknownVtbl evr_inner_vtbl =
static inline evr_filter *impl_from_IBaseFilter(IBaseFilter *iface)
{
- return CONTAINING_RECORD(iface, evr_filter, filter);
+ return CONTAINING_RECORD(iface, evr_filter, filter.IBaseFilter_iface);
}
static HRESULT WINAPI filter_QueryInterface(IBaseFilter *iface, REFIID riid, void **ppv)
--
2.14.1

View File

@@ -1,287 +0,0 @@
From 472184e5801de5d1fb92d275d9c0c7e840c9a0bf Mon Sep 17 00:00:00 2001
From: Sebastian Lackner <sebastian@fds-team.de>
Date: Tue, 11 Nov 2014 03:11:33 +0100
Subject: ntdll: Implement emulation of SIDT instruction when using Exagear.
---
configure.ac | 8 ++
dlls/ntdll/signal_i386.c | 223 +++++++++++++++++++++++++++++++++++++++++++++++
2 files changed, 231 insertions(+)
diff --git a/configure.ac b/configure.ac
index 1e6bba3..43bf0db 100644
--- a/configure.ac
+++ b/configure.ac
@@ -32,6 +32,7 @@ AC_ARG_ENABLE(win16, AS_HELP_STRING([--disable-win16],[do not include Win16 supp
AC_ARG_ENABLE(win64, AS_HELP_STRING([--enable-win64],[build a Win64 emulator on AMD64 (won't run Win32 binaries)]))
AC_ARG_ENABLE(tests, AS_HELP_STRING([--disable-tests],[do not build the regression tests]))
AC_ARG_ENABLE(maintainer-mode, AS_HELP_STRING([--enable-maintainer-mode],[enable maintainer-specific build rules]))
+AC_ARG_ENABLE(exagear-compat, AS_HELP_STRING([--enable-exagear-compat],[use workarounds for known problems in the Exagear emulator]))
AC_ARG_WITH(alsa, AS_HELP_STRING([--without-alsa],[do not use the Alsa sound support]),
[if test "x$withval" = "xno"; then ac_cv_header_sys_asoundlib_h=no; ac_cv_header_alsa_asoundlib_h=no; fi])
@@ -364,6 +365,13 @@ WINE_WARNING_WITH(gettext,[test "$MSGFMT" = false],
[gettext tools not found (or too old), translations won't be built.],
[enable_po])
+dnl **** Enable Exagear workarounds ****
+
+if test "x$enable_exagear_compat" = "xyes"
+then
+ AC_DEFINE(EXAGEAR_COMPAT, 1, [Define if you want to enable Exagear emulator workarounds])
+fi
+
dnl **** Check for some libraries ****
dnl Check for -li386 for NetBSD and OpenBSD
diff --git a/dlls/ntdll/signal_i386.c b/dlls/ntdll/signal_i386.c
index ee8855a..4269329 100644
--- a/dlls/ntdll/signal_i386.c
+++ b/dlls/ntdll/signal_i386.c
@@ -96,6 +96,14 @@ typedef struct
BYTE Reserved4[96];
} XMM_SAVE_AREA32;
+#include "pshpack1.h"
+struct idtr
+{
+ WORD limit;
+ BYTE *base;
+};
+#include "poppack.h"
+
/***********************************************************************
* signal context platform-specific definitions
*/
@@ -1898,6 +1906,213 @@ static inline DWORD get_fpu_code( const CONTEXT *context )
}
+#ifdef EXAGEAR_COMPAT
+
+/***********************************************************************
+ * INSTR_GetOperandAddr
+ *
+ * Return the address of an instruction operand (from the mod/rm byte).
+ */
+static BYTE *INSTR_GetOperandAddr( CONTEXT *context, const BYTE *instr,
+ int long_addr, int segprefix, int *len )
+{
+ int mod, rm, base = 0, index = 0, ss = 0, off;
+
+#define GET_VAL(val,type) \
+ { *val = *(type *)instr; instr += sizeof(type); *len += sizeof(type); }
+
+ *len = 0;
+ GET_VAL( &mod, BYTE );
+ rm = mod & 7;
+ mod >>= 6;
+
+ if (mod == 3)
+ {
+ switch(rm)
+ {
+ case 0: return (BYTE *)&context->Eax;
+ case 1: return (BYTE *)&context->Ecx;
+ case 2: return (BYTE *)&context->Edx;
+ case 3: return (BYTE *)&context->Ebx;
+ case 4: return (BYTE *)&context->Esp;
+ case 5: return (BYTE *)&context->Ebp;
+ case 6: return (BYTE *)&context->Esi;
+ case 7: return (BYTE *)&context->Edi;
+ }
+ }
+
+ if (long_addr)
+ {
+ if (rm == 4)
+ {
+ BYTE sib;
+ GET_VAL( &sib, BYTE );
+ rm = sib & 7;
+ ss = sib >> 6;
+ switch((sib >> 3) & 7)
+ {
+ case 0: index = context->Eax; break;
+ case 1: index = context->Ecx; break;
+ case 2: index = context->Edx; break;
+ case 3: index = context->Ebx; break;
+ case 4: index = 0; break;
+ case 5: index = context->Ebp; break;
+ case 6: index = context->Esi; break;
+ case 7: index = context->Edi; break;
+ }
+ }
+
+ switch(rm)
+ {
+ case 0: base = context->Eax; break;
+ case 1: base = context->Ecx; break;
+ case 2: base = context->Edx; break;
+ case 3: base = context->Ebx; break;
+ case 4: base = context->Esp; break;
+ case 5: base = context->Ebp; break;
+ case 6: base = context->Esi; break;
+ case 7: base = context->Edi; break;
+ }
+ switch (mod)
+ {
+ case 0:
+ if (rm == 5) /* special case: ds:(disp32) */
+ {
+ GET_VAL( &base, DWORD );
+ }
+ break;
+
+ case 1: /* 8-bit disp */
+ GET_VAL( &off, BYTE );
+ base += (signed char)off;
+ break;
+
+ case 2: /* 32-bit disp */
+ GET_VAL( &off, DWORD );
+ base += (signed long)off;
+ break;
+ }
+ }
+ else /* short address */
+ {
+ switch(rm)
+ {
+ case 0: /* ds:(bx,si) */
+ base = LOWORD(context->Ebx) + LOWORD(context->Esi);
+ break;
+ case 1: /* ds:(bx,di) */
+ base = LOWORD(context->Ebx) + LOWORD(context->Edi);
+ break;
+ case 2: /* ss:(bp,si) */
+ base = LOWORD(context->Ebp) + LOWORD(context->Esi);
+ break;
+ case 3: /* ss:(bp,di) */
+ base = LOWORD(context->Ebp) + LOWORD(context->Edi);
+ break;
+ case 4: /* ds:(si) */
+ base = LOWORD(context->Esi);
+ break;
+ case 5: /* ds:(di) */
+ base = LOWORD(context->Edi);
+ break;
+ case 6: /* ss:(bp) */
+ base = LOWORD(context->Ebp);
+ break;
+ case 7: /* ds:(bx) */
+ base = LOWORD(context->Ebx);
+ break;
+ }
+
+ switch(mod)
+ {
+ case 0:
+ if (rm == 6) /* special case: ds:(disp16) */
+ {
+ GET_VAL( &base, WORD );
+ }
+ break;
+
+ case 1: /* 8-bit disp */
+ GET_VAL( &off, BYTE );
+ base += (signed char)off;
+ break;
+
+ case 2: /* 16-bit disp */
+ GET_VAL( &off, WORD );
+ base += (signed short)off;
+ break;
+ }
+ base &= 0xffff;
+ }
+ /* FIXME: we assume that all segments have a base of 0 */
+ return (BYTE *)(base + (index << ss));
+#undef GET_VAL
+}
+
+
+/***********************************************************************
+ * check_invalid_instr
+ *
+ * Support for instructions not implemented by Exagear.
+ */
+static inline BOOL check_invalid_instr( CONTEXT *context )
+{
+ const BYTE *instr;
+ unsigned int prefix_count = 0;
+ int len, long_addr = 1;
+
+ if (!wine_ldt_is_system( context->SegCs )) return FALSE;
+ instr = (BYTE *)context->Eip;
+
+ for (;;) switch (*instr)
+ {
+ /* instruction prefixes */
+ case 0x2e: /* %cs: */
+ case 0x36: /* %ss: */
+ case 0x3e: /* %ds: */
+ case 0x26: /* %es: */
+ case 0x64: /* %fs: */
+ case 0x65: /* %gs: */
+ case 0x66: /* opcode size */
+ case 0x67: /* addr size */
+ case 0xf0: /* lock */
+ case 0xf2: /* repne */
+ case 0xf3: /* repe */
+ if (++prefix_count >= 15) return FALSE;
+ if (*instr == 0x67) long_addr = !long_addr; /* addr size */
+ instr++;
+ continue;
+ case 0x0f: /* extended instruction */
+ switch (instr[1])
+ {
+ case 0x01:
+ if (((instr[2] >> 3) & 7) == 1) /* sidt m */
+ {
+ struct idtr ret;
+ BYTE *addr;
+
+ if ((instr[2] >> 6) == 3) return FALSE; /* loading to register not allowed */
+ addr = INSTR_GetOperandAddr( context, instr + 2, long_addr, 0, &len );
+
+ /* fake IDT structure */
+ ret.limit = 0xfff;
+ ret.base = (void *)0xff000000;
+ memcpy(addr, &ret, sizeof(ret));
+
+ context->Eip += prefix_count + len + 2;
+ return TRUE;
+ }
+ break;
+ }
+ return FALSE;
+ default:
+ return FALSE;
+ }
+}
+
+#endif /* EXAGEAR_COMPAT */
+
+
/**********************************************************************
* raise_segv_exception
*/
@@ -1907,6 +2122,14 @@ static void WINAPI raise_segv_exception( EXCEPTION_RECORD *rec, CONTEXT *context
switch(rec->ExceptionCode)
{
+#ifdef EXAGEAR_COMPAT
+ case EXCEPTION_ILLEGAL_INSTRUCTION:
+ {
+ if (check_invalid_instr( context ))
+ goto done;
+ }
+ break;
+#endif
case EXCEPTION_ACCESS_VIOLATION:
if (rec->NumberParameters == 2)
{
--
2.7.1

View File

@@ -1,51 +0,0 @@
From 5a4827d5c16aefd82029583710b9032a2356917b Mon Sep 17 00:00:00 2001
From: Sebastian Lackner <sebastian@fds-team.de>
Date: Sat, 22 Nov 2014 05:49:30 +0100
Subject: ntdll: Fix issues with write watches when using Exagear.
---
dlls/ntdll/virtual.c | 21 +++++++++++++++++++++
1 file changed, 21 insertions(+)
diff --git a/dlls/ntdll/virtual.c b/dlls/ntdll/virtual.c
index f7aae0b..3fa2027 100644
--- a/dlls/ntdll/virtual.c
+++ b/dlls/ntdll/virtual.c
@@ -1558,6 +1558,26 @@ NTSTATUS virtual_handle_fault( LPCVOID addr, DWORD err, BOOL on_signal_stack )
{
void *page = ROUND_ADDR( addr, page_mask );
BYTE *vprot = &view->prot[((const char *)page - (const char *)view->base) >> page_shift];
+#ifdef EXAGEAR_COMPAT
+ /* Exagear doesn't correctly set err, so always check for write watches, and
+ * retry after removing the VPROT_WRITEWATCH or VPROT_WRITECOPY flag. In
+ * contrary to the general implementation below this is not completely race-
+ * condition safe. When multiple threads trigger the write watch at the same
+ * time only the first thread will properly continue the execution, the rest
+ * will crash. */
+ if ((view->protect & VPROT_WRITEWATCH) && (*vprot & VPROT_WRITEWATCH))
+ {
+ *vprot &= ~VPROT_WRITEWATCH;
+ VIRTUAL_SetProt( view, page, page_size, *vprot );
+ if (VIRTUAL_GetUnixProt( *vprot ) & PROT_WRITE) ret = STATUS_SUCCESS;
+ }
+ if (*vprot & VPROT_WRITECOPY)
+ {
+ *vprot = (*vprot & ~VPROT_WRITECOPY) | VPROT_WRITE;
+ VIRTUAL_SetProt( view, page, page_size, *vprot );
+ if (VIRTUAL_GetUnixProt( *vprot ) & PROT_WRITE) ret = STATUS_SUCCESS;
+ }
+#else
if (err & EXCEPTION_WRITE_FAULT)
{
if ((view->protect & VPROT_WRITEWATCH) && (*vprot & VPROT_WRITEWATCH))
@@ -1573,6 +1593,7 @@ NTSTATUS virtual_handle_fault( LPCVOID addr, DWORD err, BOOL on_signal_stack )
/* ignore fault if page is writable now */
if (VIRTUAL_GetUnixProt( *vprot ) & PROT_WRITE) ret = STATUS_SUCCESS;
}
+#endif
if (!on_signal_stack && (*vprot & VPROT_GUARD))
{
VIRTUAL_SetProt( view, page, page_size, *vprot & ~VPROT_GUARD );
--
2.2.2

View File

@@ -1,25 +0,0 @@
From 67cc0e23b26d5d9abda7eb771dc2bec309cb8650 Mon Sep 17 00:00:00 2001
From: Sebastian Lackner <sebastian@fds-team.de>
Date: Sun, 23 Nov 2014 22:33:51 +0100
Subject: server: Don't attempt to use ptrace when running with Exagear.
---
server/ptrace.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/server/ptrace.c b/server/ptrace.c
index cb436b6..fb29b5a 100644
--- a/server/ptrace.c
+++ b/server/ptrace.c
@@ -531,7 +531,7 @@ void get_selector_entry( struct thread *thread, int entry, unsigned int *base,
#if defined(linux) && (defined(HAVE_SYS_USER_H) || defined(HAVE_ASM_USER_H)) \
- && (defined(__i386__) || defined(__x86_64__))
+ && (defined(__i386__) || defined(__x86_64__)) && !defined(EXAGEAR_COMPAT)
#ifdef HAVE_SYS_USER_H
#include <sys/user.h>
--
2.1.3

View File

@@ -1,29 +1,15 @@
From fdc085e009942fa89ef5f0cd4104ab78c9d80b1b Mon Sep 17 00:00:00 2001
From ca415799729a5330fc9def2df8fb9c4ffef80448 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Michael=20M=C3=BCller?= <michael@fds-team.de>
Date: Sun, 5 Mar 2017 23:50:06 +0100
Subject: advapi32: Implement LsaLookupPrivilegeName.
---
dlls/advapi32/advapi32.spec | 2 +-
dlls/advapi32/advapi32_misc.h | 2 ++
dlls/advapi32/lsa.c | 38 ++++++++++++++++++++++++++++++++++++++
dlls/advapi32/lsa.c | 30 ++++++++++++++++++++++++++++--
dlls/advapi32/security.c | 27 ++++++++++++++++++---------
include/ntsecapi.h | 1 +
5 files changed, 60 insertions(+), 10 deletions(-)
4 files changed, 49 insertions(+), 11 deletions(-)
diff --git a/dlls/advapi32/advapi32.spec b/dlls/advapi32/advapi32.spec
index 3000973265c..2c599c8bd92 100644
--- a/dlls/advapi32/advapi32.spec
+++ b/dlls/advapi32/advapi32.spec
@@ -446,7 +446,7 @@
@ stdcall LsaLookupNames2(ptr long long ptr ptr ptr)
@ stdcall LsaLookupNames(long long ptr ptr ptr)
@ stub LsaLookupPrivilegeDisplayName
-# @ stub LsaLookupPrivilegeName
+@ stdcall LsaLookupPrivilegeName(long ptr ptr)
# @ stub LsaLookupPrivilegeValue
@ stdcall LsaLookupSids(ptr long ptr ptr ptr)
# @ stub LsaManageSidNameMapping
diff --git a/dlls/advapi32/advapi32_misc.h b/dlls/advapi32/advapi32_misc.h
index d116ecb836e..ecb07f635a6 100644
--- a/dlls/advapi32/advapi32_misc.h
@@ -36,28 +22,20 @@ index d116ecb836e..ecb07f635a6 100644
+
#endif /* __WINE_ADVAPI32MISC_H */
diff --git a/dlls/advapi32/lsa.c b/dlls/advapi32/lsa.c
index 0f2167d19ab..6a7a69a9eb7 100644
index 61c91f497eb..e6f88d2fa73 100644
--- a/dlls/advapi32/lsa.c
+++ b/dlls/advapi32/lsa.c
@@ -1012,3 +1012,41 @@ NTSTATUS WINAPI LsaUnregisterPolicyChangeNotification(
FIXME("(%d,%p) stub\n", class, event);
return STATUS_SUCCESS;
}
+
+/******************************************************************************
+ * LsaLookupPrivilegeName [ADVAPI32.@]
+ *
+ */
+NTSTATUS WINAPI LsaLookupPrivilegeName(
+ LSA_HANDLE handle,
+ PLUID lpLuid,
+ PUNICODE_STRING *name)
+{
@@ -983,6 +983,32 @@ NTSTATUS WINAPI LsaLookupPrivilegeName(
LUID *luid,
UNICODE_STRING **name)
{
- FIXME("(%p,%p,%p) stub\n", handle, luid, name);
- return STATUS_NO_SUCH_PRIVILEGE;
+ UNICODE_STRING *priv_unicode;
+ size_t priv_size;
+ WCHAR *strW;
+
+ TRACE("(%p, %p, %p)\n", handle, lpLuid, name);
+ TRACE("(%p, %p, %p)\n", handle, luid, name);
+
+ if (!handle)
+ return STATUS_INVALID_HANDLE;
@@ -65,24 +43,25 @@ index 0f2167d19ab..6a7a69a9eb7 100644
+ if (!name)
+ return STATUS_INVALID_PARAMETER;
+
+ if (lpLuid->HighPart ||
+ (lpLuid->LowPart < SE_MIN_WELL_KNOWN_PRIVILEGE ||
+ lpLuid->LowPart > SE_MAX_WELL_KNOWN_PRIVILEGE))
+ if (luid->HighPart ||
+ (luid->LowPart < SE_MIN_WELL_KNOWN_PRIVILEGE ||
+ luid->LowPart > SE_MAX_WELL_KNOWN_PRIVILEGE ||
+ !WellKnownPrivNames[luid->LowPart]))
+ return STATUS_NO_SUCH_PRIVILEGE;
+
+ priv_size = (strlenW(WellKnownPrivNames[lpLuid->LowPart]) + 1) * sizeof(WCHAR);
+ priv_size = (strlenW(WellKnownPrivNames[luid->LowPart]) + 1) * sizeof(WCHAR);
+ priv_unicode = heap_alloc(sizeof(*priv_unicode) + priv_size);
+ if (!priv_unicode) return STATUS_NO_MEMORY;
+
+ strW = (WCHAR *)(priv_unicode + 1);
+ strcpyW(strW, WellKnownPrivNames[lpLuid->LowPart]);
+ strcpyW(strW, WellKnownPrivNames[luid->LowPart]);
+ RtlInitUnicodeString(priv_unicode, strW);
+
+ *name = priv_unicode;
+ return STATUS_SUCCESS;
+}
}
diff --git a/dlls/advapi32/security.c b/dlls/advapi32/security.c
index b0b368d6abf..24ec3099713 100644
index e36792cff4b..3bc8f48b19c 100644
--- a/dlls/advapi32/security.c
+++ b/dlls/advapi32/security.c
@@ -1840,7 +1840,7 @@ static const WCHAR SE_IMPERSONATE_NAME_W[] =
@@ -158,5 +137,5 @@ index 2bb3d312e43..0bf0eca43ed 100644
ULONG WINAPI LsaNtStatusToWinError(NTSTATUS);
NTSTATUS WINAPI LsaOpenPolicy(PLSA_UNICODE_STRING,PLSA_OBJECT_ATTRIBUTES,ACCESS_MASK,PLSA_HANDLE);
--
2.11.0
2.14.1

View File

@@ -1,4 +1,4 @@
From 01efac6b4fa338715ad775c147a6bfc42e0bc38e Mon Sep 17 00:00:00 2001
From 63d642a1af3ccc579123cb8fd13959ab5e9136dd Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Michael=20M=C3=BCller?= <michael@fds-team.de>
Date: Mon, 6 Mar 2017 00:01:53 +0100
Subject: advapi32: Add stub for LsaLookupPrivilegeDisplayName.
@@ -9,23 +9,23 @@ Subject: advapi32: Add stub for LsaLookupPrivilegeDisplayName.
2 files changed, 22 insertions(+), 1 deletion(-)
diff --git a/dlls/advapi32/advapi32.spec b/dlls/advapi32/advapi32.spec
index 2c599c8bd92..ce1838d8c5a 100644
index 124f527282..0b03cec3f5 100644
--- a/dlls/advapi32/advapi32.spec
+++ b/dlls/advapi32/advapi32.spec
@@ -445,7 +445,7 @@
@@ -468,7 +468,7 @@
# @ stub LsaICLookupSidsWithCreds
@ stdcall LsaLookupNames2(ptr long long ptr ptr ptr)
@ stdcall LsaLookupNames(long long ptr ptr ptr)
@ stdcall LsaLookupNames2(ptr long long ptr ptr ptr)
-@ stub LsaLookupPrivilegeDisplayName
+@ stdcall LsaLookupPrivilegeDisplayName(long ptr ptr ptr)
@ stdcall LsaLookupPrivilegeName(long ptr ptr)
# @ stub LsaLookupPrivilegeValue
@ stdcall LsaLookupSids(ptr long ptr ptr ptr)
diff --git a/dlls/advapi32/lsa.c b/dlls/advapi32/lsa.c
index 6a7a69a9eb7..fdb238f74b2 100644
index ceb3b05c05..c2e02fb462 100644
--- a/dlls/advapi32/lsa.c
+++ b/dlls/advapi32/lsa.c
@@ -45,6 +45,12 @@ WINE_DEFAULT_DEBUG_CHANNEL(advapi);
@@ -44,6 +44,12 @@ WINE_DEFAULT_DEBUG_CHANNEL(advapi);
return FailureCode; \
}
@@ -38,7 +38,7 @@ index 6a7a69a9eb7..fdb238f74b2 100644
static void dumpLsaAttributes(const LSA_OBJECT_ATTRIBUTES *oa)
{
if (oa)
@@ -1050,3 +1056,18 @@ NTSTATUS WINAPI LsaLookupPrivilegeName(
@@ -1011,3 +1017,18 @@ NTSTATUS WINAPI LsaLookupPrivilegeName(
*name = priv_unicode;
return STATUS_SUCCESS;
}

View File

@@ -1 +1 @@
Fixes: Add LsaLookupPrivilege[Display]Name stubs
Fixes: [43316] Add LsaLookupPrivilege[Display]Name stubs

View File

@@ -0,0 +1,268 @@
From 994fe46f1b68d851d285a29cce904bd9f22540ea Mon Sep 17 00:00:00 2001
From: Andrew Wesie <awesie@gmail.com>
Date: Tue, 2 May 2017 00:59:49 -0500
Subject: advapi32: Implement BuildSecurityDescriptorW.
---
dlls/advapi32/security.c | 218 +++++++++++++++++++++++++++++++++++------------
1 file changed, 164 insertions(+), 54 deletions(-)
diff --git a/dlls/advapi32/security.c b/dlls/advapi32/security.c
index 24ec3099713..82bb6689d43 100644
--- a/dlls/advapi32/security.c
+++ b/dlls/advapi32/security.c
@@ -58,6 +58,7 @@ static BOOL ParseStringSecurityDescriptorToSecurityDescriptor(
SECURITY_DESCRIPTOR_RELATIVE* SecurityDescriptor,
LPDWORD cBytes);
static DWORD ParseAclStringFlags(LPCWSTR* StringAcl);
+static DWORD trustee_to_sid(DWORD nDestinationSidLength, PSID pDestinationSid, PTRUSTEEW pTrustee);
typedef struct _ACEFLAG
{
@@ -1264,16 +1265,122 @@ DWORD WINAPI BuildSecurityDescriptorW(
IN ULONG cCountOfAccessEntries,
IN PEXPLICIT_ACCESSW pListOfAccessEntries,
IN ULONG cCountOfAuditEntries,
- IN PEXPLICIT_ACCESSW pListofAuditEntries,
+ IN PEXPLICIT_ACCESSW pListOfAuditEntries,
IN PSECURITY_DESCRIPTOR pOldSD,
IN OUT PULONG lpdwBufferLength,
OUT PSECURITY_DESCRIPTOR* pNewSD)
{
- FIXME("(%p,%p,%d,%p,%d,%p,%p,%p,%p) stub!\n",pOwner,pGroup,
- cCountOfAccessEntries,pListOfAccessEntries,cCountOfAuditEntries,
- pListofAuditEntries,pOldSD,lpdwBufferLength,pNewSD);
+ SECURITY_DESCRIPTOR desc;
+ NTSTATUS status;
+ DWORD ret = ERROR_SUCCESS;
+
+ TRACE("(%p,%p,%d,%p,%d,%p,%p,%p,%p)\n", pOwner, pGroup,
+ cCountOfAccessEntries, pListOfAccessEntries, cCountOfAuditEntries,
+ pListOfAuditEntries, pOldSD, lpdwBufferLength, pNewSD);
- return ERROR_CALL_NOT_IMPLEMENTED;
+ if (pOldSD)
+ {
+ SECURITY_DESCRIPTOR_CONTROL control;
+ DWORD desc_size, dacl_size = 0, sacl_size = 0, owner_size = 0, group_size = 0;
+ PACL dacl = NULL, sacl = NULL;
+ PSID owner = NULL, group = NULL;
+ DWORD revision;
+
+ if ((status = RtlGetControlSecurityDescriptor( pOldSD, &control, &revision )) != STATUS_SUCCESS)
+ return RtlNtStatusToDosError( status );
+ if (!(control & SE_SELF_RELATIVE))
+ return ERROR_INVALID_SECURITY_DESCR;
+
+ desc_size = sizeof(desc);
+ status = RtlSelfRelativeToAbsoluteSD( pOldSD, &desc, &desc_size, dacl, &dacl_size, sacl, &sacl_size,
+ owner, &owner_size, group, &group_size );
+ if (status == STATUS_BUFFER_TOO_SMALL)
+ {
+ if (dacl_size)
+ dacl = LocalAlloc( LMEM_FIXED, dacl_size );
+ if (sacl_size)
+ sacl = LocalAlloc( LMEM_FIXED, sacl_size );
+ if (owner_size)
+ owner = LocalAlloc( LMEM_FIXED, owner_size );
+ if (group_size)
+ group = LocalAlloc( LMEM_FIXED, group_size );
+
+ desc_size = sizeof(desc);
+ status = RtlSelfRelativeToAbsoluteSD( pOldSD, &desc, &desc_size, dacl, &dacl_size, sacl, &sacl_size,
+ owner, &owner_size, group, &group_size );
+ }
+ if (status != STATUS_SUCCESS)
+ {
+ LocalFree( dacl );
+ LocalFree( sacl );
+ LocalFree( owner );
+ LocalFree( group );
+ return RtlNtStatusToDosError( status );
+ }
+ }
+ else
+ {
+ if ((status = RtlCreateSecurityDescriptor( &desc, SECURITY_DESCRIPTOR_REVISION )) != STATUS_SUCCESS)
+ return RtlNtStatusToDosError( status );
+ }
+
+ if (pOwner)
+ {
+ LocalFree( desc.Owner );
+ desc.Owner = LocalAlloc( LMEM_FIXED, sizeof(MAX_SID) );
+ if ((ret = trustee_to_sid( sizeof(MAX_SID), desc.Owner, pOwner )))
+ goto done;
+ }
+
+ if (pGroup)
+ {
+ LocalFree( desc.Group );
+ desc.Group = LocalAlloc( LMEM_FIXED, sizeof(MAX_SID) );
+ if ((ret = trustee_to_sid( sizeof(MAX_SID), desc.Group, pGroup )))
+ goto done;
+ }
+
+ if (pListOfAccessEntries)
+ {
+ PACL new_dacl;
+
+ if ((ret = SetEntriesInAclW( cCountOfAccessEntries, pListOfAccessEntries, desc.Dacl, &new_dacl )))
+ goto done;
+
+ LocalFree( desc.Dacl );
+ desc.Dacl = new_dacl;
+ desc.Control |= SE_DACL_PRESENT;
+ }
+
+ if (pListOfAuditEntries)
+ {
+ PACL new_sacl;
+
+ if ((ret = SetEntriesInAclW( cCountOfAuditEntries, pListOfAuditEntries, desc.Sacl, &new_sacl )))
+ goto done;
+
+ LocalFree( desc.Sacl );
+ desc.Sacl = new_sacl;
+ desc.Control |= SE_SACL_PRESENT;
+ }
+
+ *lpdwBufferLength = RtlLengthSecurityDescriptor( &desc );
+ *pNewSD = LocalAlloc( LMEM_FIXED, *lpdwBufferLength );
+
+ if ((status = RtlMakeSelfRelativeSD( &desc, *pNewSD, lpdwBufferLength )) != STATUS_SUCCESS)
+ {
+ ret = RtlNtStatusToDosError( status );
+ LocalFree( *pNewSD );
+ *pNewSD = NULL;
+ }
+
+done:
+ /* free absolute descriptor */
+ LocalFree( desc.Owner );
+ LocalFree( desc.Group );
+ LocalFree( desc.Sacl );
+ LocalFree( desc.Dacl );
+ return ret;
}
/******************************************************************************
@@ -3766,6 +3873,56 @@ static void free_trustee_name(TRUSTEE_FORM form, WCHAR *trustee_nameW)
}
}
+static DWORD trustee_to_sid( DWORD nDestinationSidLength, PSID pDestinationSid, PTRUSTEEW pTrustee )
+{
+ if (pTrustee->MultipleTrusteeOperation == TRUSTEE_IS_IMPERSONATE)
+ {
+ WARN("bad multiple trustee operation %d\n", pTrustee->MultipleTrusteeOperation);
+ return ERROR_INVALID_PARAMETER;
+ }
+
+ switch (pTrustee->TrusteeForm)
+ {
+ case TRUSTEE_IS_SID:
+ if (!CopySid(nDestinationSidLength, pDestinationSid, pTrustee->ptstrName))
+ {
+ WARN("bad sid %p\n", pTrustee->ptstrName);
+ return ERROR_INVALID_PARAMETER;
+ }
+ break;
+ case TRUSTEE_IS_NAME:
+ {
+ DWORD sid_size = nDestinationSidLength;
+ DWORD domain_size = MAX_COMPUTERNAME_LENGTH + 1;
+ SID_NAME_USE use;
+ if (!strcmpW( pTrustee->ptstrName, CURRENT_USER ))
+ {
+ if (!lookup_user_account_name( pDestinationSid, &sid_size, NULL, &domain_size, &use ))
+ {
+ return GetLastError();
+ }
+ }
+ else if (!LookupAccountNameW(NULL, pTrustee->ptstrName, pDestinationSid, &sid_size, NULL, &domain_size, &use))
+ {
+ WARN("bad user name %s\n", debugstr_w(pTrustee->ptstrName));
+ return ERROR_INVALID_PARAMETER;
+ }
+ break;
+ }
+ case TRUSTEE_IS_OBJECTS_AND_SID:
+ FIXME("TRUSTEE_IS_OBJECTS_AND_SID unimplemented\n");
+ break;
+ case TRUSTEE_IS_OBJECTS_AND_NAME:
+ FIXME("TRUSTEE_IS_OBJECTS_AND_NAME unimplemented\n");
+ break;
+ default:
+ WARN("bad trustee form %d\n", pTrustee->TrusteeForm);
+ return ERROR_INVALID_PARAMETER;
+ }
+
+ return ERROR_SUCCESS;
+}
+
/******************************************************************************
* SetEntriesInAclA [ADVAPI32.@]
*/
@@ -3861,56 +4018,9 @@ DWORD WINAPI SetEntriesInAclW( ULONG count, PEXPLICIT_ACCESSW pEntries,
pEntries[i].Trustee.TrusteeForm, pEntries[i].Trustee.TrusteeType,
pEntries[i].Trustee.ptstrName);
- if (pEntries[i].Trustee.MultipleTrusteeOperation == TRUSTEE_IS_IMPERSONATE)
- {
- WARN("bad multiple trustee operation %d for trustee %d\n", pEntries[i].Trustee.MultipleTrusteeOperation, i);
- ret = ERROR_INVALID_PARAMETER;
- goto exit;
- }
-
- switch (pEntries[i].Trustee.TrusteeForm)
- {
- case TRUSTEE_IS_SID:
- if (!CopySid(FIELD_OFFSET(SID, SubAuthority[SID_MAX_SUB_AUTHORITIES]),
- ppsid[i], pEntries[i].Trustee.ptstrName))
- {
- WARN("bad sid %p for trustee %d\n", pEntries[i].Trustee.ptstrName, i);
- ret = ERROR_INVALID_PARAMETER;
- goto exit;
- }
- break;
- case TRUSTEE_IS_NAME:
- {
- DWORD sid_size = FIELD_OFFSET(SID, SubAuthority[SID_MAX_SUB_AUTHORITIES]);
- DWORD domain_size = MAX_COMPUTERNAME_LENGTH + 1;
- SID_NAME_USE use;
- if (!strcmpW( pEntries[i].Trustee.ptstrName, CURRENT_USER ))
- {
- if (!lookup_user_account_name( ppsid[i], &sid_size, NULL, &domain_size, &use ))
- {
- ret = GetLastError();
- goto exit;
- }
- }
- else if (!LookupAccountNameW(NULL, pEntries[i].Trustee.ptstrName, ppsid[i], &sid_size, NULL, &domain_size, &use))
- {
- WARN("bad user name %s for trustee %d\n", debugstr_w(pEntries[i].Trustee.ptstrName), i);
- ret = ERROR_INVALID_PARAMETER;
- goto exit;
- }
- break;
- }
- case TRUSTEE_IS_OBJECTS_AND_SID:
- FIXME("TRUSTEE_IS_OBJECTS_AND_SID unimplemented\n");
- break;
- case TRUSTEE_IS_OBJECTS_AND_NAME:
- FIXME("TRUSTEE_IS_OBJECTS_AND_NAME unimplemented\n");
- break;
- default:
- WARN("bad trustee form %d for trustee %d\n", pEntries[i].Trustee.TrusteeForm, i);
- ret = ERROR_INVALID_PARAMETER;
+ ret = trustee_to_sid( FIELD_OFFSET(SID, SubAuthority[SID_MAX_SUB_AUTHORITIES]), ppsid[i], &pEntries[i].Trustee);
+ if (ret)
goto exit;
- }
/* Note: we overestimate the ACL size here as a tradeoff between
* instructions (simplicity) and memory */
--
2.12.2

View File

@@ -0,0 +1,69 @@
From 09d62cfc4fa999eacc89af2ad414810e22c910a9 Mon Sep 17 00:00:00 2001
From: Sebastian Lackner <sebastian@fds-team.de>
Date: Fri, 5 May 2017 00:18:50 +0200
Subject: advapi32/tests: Add basic tests for BuildSecurityDescriptor.
---
dlls/advapi32/tests/security.c | 39 +++++++++++++++++++++++++++++++++++++++
1 file changed, 39 insertions(+)
diff --git a/dlls/advapi32/tests/security.c b/dlls/advapi32/tests/security.c
index ca5edffae5..db5a0f934c 100644
--- a/dlls/advapi32/tests/security.c
+++ b/dlls/advapi32/tests/security.c
@@ -7217,6 +7217,44 @@ static void test_GetExplicitEntriesFromAclW(void)
HeapFree(GetProcessHeap(), 0, old_acl);
}
+static void test_BuildSecurityDescriptorW(void)
+{
+ SECURITY_DESCRIPTOR old_sd, *new_sd, *rel_sd;
+ ULONG new_sd_size;
+ DWORD buf_size;
+ char buf[1024];
+ BOOL success;
+ DWORD ret;
+
+ InitializeSecurityDescriptor(&old_sd, SECURITY_DESCRIPTOR_REVISION);
+
+ buf_size = sizeof(buf);
+ rel_sd = (SECURITY_DESCRIPTOR *)buf;
+ success = MakeSelfRelativeSD(&old_sd, rel_sd, &buf_size);
+ ok(success, "MakeSelfRelativeSD failed with %u\n", GetLastError());
+
+ new_sd = NULL;
+ new_sd_size = 0;
+ ret = BuildSecurityDescriptorW(NULL, NULL, 0, NULL, 0, NULL, NULL, &new_sd_size, (void **)&new_sd);
+ ok(ret == ERROR_SUCCESS, "BuildSecurityDescriptor failed with %u\n", ret);
+ ok(new_sd != NULL, "expected new_sd != NULL\n");
+ ok(new_sd_size == sizeof(old_sd), "expected new_sd_size == sizeof(old_sd), got %u\n", new_sd_size);
+ LocalFree(new_sd);
+
+ new_sd = (void *)0xdeadbeef;
+ ret = BuildSecurityDescriptorW(NULL, NULL, 0, NULL, 0, NULL, &old_sd, &new_sd_size, (void **)&new_sd);
+ ok(ret == ERROR_INVALID_SECURITY_DESCR, "expected ERROR_INVALID_SECURITY_DESCR, got %u\n", ret);
+ ok(new_sd == (void *)0xdeadbeef, "expected new_sd == 0xdeadbeef, got %p\n", new_sd);
+
+ new_sd = NULL;
+ new_sd_size = 0;
+ ret = BuildSecurityDescriptorW(NULL, NULL, 0, NULL, 0, NULL, rel_sd, &new_sd_size, (void **)&new_sd);
+ ok(ret == ERROR_SUCCESS, "BuildSecurityDescriptor failed with %u\n", ret);
+ ok(new_sd != NULL, "expected new_sd != NULL\n");
+ ok(new_sd_size == sizeof(old_sd), "expected new_sd_size == sizeof(old_sd), got %u\n", new_sd_size);
+ LocalFree(new_sd);
+}
+
START_TEST(security)
{
init();
@@ -7271,6 +7309,7 @@ START_TEST(security)
test_maximum_allowed();
test_token_label();
test_GetExplicitEntriesFromAclW();
+ test_BuildSecurityDescriptorW();
/* Must be the last test, modifies process token */
test_token_security_descriptor();
--
2.13.1

View File

@@ -0,0 +1,2 @@
Fixes: Initial implementation of advapi32.BuildSecurityDescriptorW
Depends: advapi32-GetExplicitEntriesFromAclW

View File

@@ -0,0 +1,315 @@
From 3f314cc8251f62f592013abe7b1c3b977de0699a Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Michael=20M=C3=BCller?= <michael@fds-team.de>
Date: Fri, 4 Aug 2017 02:33:14 +0200
Subject: ntdll: Implement NtFilterToken.
---
dlls/ntdll/nt.c | 59 ++++++++++++++++++++++++++++++++++++
dlls/ntdll/ntdll.spec | 2 +-
include/winnt.h | 5 +++
include/winternl.h | 1 +
server/process.c | 2 +-
server/protocol.def | 10 ++++++
server/security.h | 4 ++-
server/token.c | 84 +++++++++++++++++++++++++++++++++++++++++++++++++--
8 files changed, 162 insertions(+), 5 deletions(-)
diff --git a/dlls/ntdll/nt.c b/dlls/ntdll/nt.c
index 93554e929be..5822dec9b15 100644
--- a/dlls/ntdll/nt.c
+++ b/dlls/ntdll/nt.c
@@ -136,6 +136,65 @@ NTSTATUS WINAPI NtDuplicateToken(
}
/******************************************************************************
+ * NtFilterToken [NTDLL.@]
+ * ZwFilterToken [NTDLL.@]
+ */
+NTSTATUS WINAPI NtFilterToken( HANDLE token, ULONG flags, TOKEN_GROUPS *disable_sids,
+ TOKEN_PRIVILEGES *privileges, TOKEN_GROUPS *restrict_sids,
+ HANDLE *new_token )
+{
+ data_size_t privileges_len = 0;
+ data_size_t sids_len = 0;
+ SID *sids = NULL;
+ NTSTATUS status;
+
+ TRACE( "(%p, 0x%08x, %p, %p, %p, %p)\n", token, flags, disable_sids, privileges,
+ restrict_sids, new_token );
+
+ if (flags)
+ FIXME( "flags %x unsupported\n", flags );
+
+ if (restrict_sids)
+ FIXME( "support for restricting sids not yet implemented\n" );
+
+ if (privileges)
+ privileges_len = privileges->PrivilegeCount * sizeof(LUID_AND_ATTRIBUTES);
+
+ if (disable_sids)
+ {
+ DWORD len, i;
+ BYTE *tmp;
+
+ for (i = 0; i < disable_sids->GroupCount; i++)
+ sids_len += RtlLengthSid( disable_sids->Groups[i].Sid );
+
+ sids = RtlAllocateHeap( GetProcessHeap(), 0, sids_len );
+ if (!sids) return STATUS_NO_MEMORY;
+
+ for (i = 0, tmp = (BYTE *)sids; i < disable_sids->GroupCount; i++, tmp += len)
+ {
+ len = RtlLengthSid( disable_sids->Groups[i].Sid );
+ memcpy( tmp, disable_sids->Groups[i].Sid, len );
+ }
+ }
+
+ SERVER_START_REQ( filter_token )
+ {
+ req->handle = wine_server_obj_handle( token );
+ req->flags = flags;
+ req->privileges_size = privileges_len;
+ wine_server_add_data( req, privileges->Privileges, privileges_len );
+ wine_server_add_data( req, sids, sids_len );
+ status = wine_server_call( req );
+ if (!status) *new_token = wine_server_ptr_handle( reply->new_handle );
+ }
+ SERVER_END_REQ;
+
+ RtlFreeHeap( GetProcessHeap(), 0, sids );
+ return status;
+}
+
+/******************************************************************************
* NtOpenProcessToken [NTDLL.@]
* ZwOpenProcessToken [NTDLL.@]
*/
diff --git a/dlls/ntdll/ntdll.spec b/dlls/ntdll/ntdll.spec
index 4f7ee496437..275fda57970 100644
--- a/dlls/ntdll/ntdll.spec
+++ b/dlls/ntdll/ntdll.spec
@@ -179,7 +179,7 @@
# @ stub NtEnumerateSystemEnvironmentValuesEx
@ stdcall NtEnumerateValueKey(long long long ptr long ptr)
@ stub NtExtendSection
-# @ stub NtFilterToken
+@ stdcall NtFilterToken(long long ptr ptr ptr ptr)
@ stdcall NtFindAtom(ptr long ptr)
@ stdcall NtFlushBuffersFile(long ptr)
@ stdcall NtFlushInstructionCache(long ptr long)
diff --git a/include/winnt.h b/include/winnt.h
index f91f81eb559..891c9b6d4bb 100644
--- a/include/winnt.h
+++ b/include/winnt.h
@@ -3844,6 +3844,11 @@ typedef enum _TOKEN_INFORMATION_CLASS {
TOKEN_ADJUST_SESSIONID | \
TOKEN_ADJUST_DEFAULT )
+#define DISABLE_MAX_PRIVILEGE 0x1
+#define SANDBOX_INERT 0x2
+#define LUA_TOKEN 0x4
+#define WRITE_RESTRICTED 0x8
+
#ifndef _SECURITY_DEFINED
#define _SECURITY_DEFINED
diff --git a/include/winternl.h b/include/winternl.h
index 140669b0105..899e8324d67 100644
--- a/include/winternl.h
+++ b/include/winternl.h
@@ -2348,6 +2348,7 @@ NTSYSAPI NTSTATUS WINAPI NtDuplicateToken(HANDLE,ACCESS_MASK,POBJECT_ATTRIBUTES
NTSYSAPI NTSTATUS WINAPI NtEnumerateKey(HANDLE,ULONG,KEY_INFORMATION_CLASS,void *,DWORD,DWORD *);
NTSYSAPI NTSTATUS WINAPI NtEnumerateValueKey(HANDLE,ULONG,KEY_VALUE_INFORMATION_CLASS,PVOID,ULONG,PULONG);
NTSYSAPI NTSTATUS WINAPI NtExtendSection(HANDLE,PLARGE_INTEGER);
+NTSYSAPI NTSTATUS WINAPI NtFilterToken(HANDLE,ULONG,TOKEN_GROUPS*,TOKEN_PRIVILEGES*,TOKEN_GROUPS*,HANDLE*);
NTSYSAPI NTSTATUS WINAPI NtFindAtom(const WCHAR*,ULONG,RTL_ATOM*);
NTSYSAPI NTSTATUS WINAPI NtFlushBuffersFile(HANDLE,IO_STATUS_BLOCK*);
NTSYSAPI NTSTATUS WINAPI NtFlushInstructionCache(HANDLE,LPCVOID,SIZE_T);
diff --git a/server/process.c b/server/process.c
index cbe726afe81..f0f60edcd3f 100644
--- a/server/process.c
+++ b/server/process.c
@@ -571,7 +571,7 @@ struct thread *create_process( int fd, struct thread *parent_thread, int inherit
: alloc_handle_table( process, 0 );
/* Note: for security reasons, starting a new process does not attempt
* to use the current impersonation token for the new process */
- process->token = token_duplicate( parent->token, TRUE, 0, NULL );
+ process->token = token_duplicate( parent->token, TRUE, 0, NULL, NULL, 0, NULL, 0 );
process->affinity = parent->affinity;
}
if (!process->handles || !process->token) goto error;
diff --git a/server/protocol.def b/server/protocol.def
index fc6e343af52..b3dce66eb9c 100644
--- a/server/protocol.def
+++ b/server/protocol.def
@@ -3391,6 +3391,16 @@ enum caret_state
obj_handle_t new_handle; /* duplicated handle */
@END
+@REQ(filter_token)
+ obj_handle_t handle; /* handle to the token to duplicate */
+ unsigned int flags; /* flags */
+ data_size_t privileges_size; /* size of privileges */
+ VARARG(privileges,LUID_AND_ATTRIBUTES,privileges_size); /* privileges to remove from new token */
+ VARARG(disable_sids,SID); /* array of groups to remove from new token */
+@REPLY
+ obj_handle_t new_handle; /* filtered handle */
+@END
+
@REQ(access_check)
obj_handle_t handle; /* handle to the token */
unsigned int desired_access; /* desired access to the object */
diff --git a/server/security.h b/server/security.h
index 606dbb2ab2c..6c337143c3d 100644
--- a/server/security.h
+++ b/server/security.h
@@ -56,7 +56,9 @@ extern const PSID security_high_label_sid;
extern struct token *token_create_admin(void);
extern int token_assign_label( struct token *token, PSID label );
extern struct token *token_duplicate( struct token *src_token, unsigned primary,
- int impersonation_level, const struct security_descriptor *sd );
+ int impersonation_level, const struct security_descriptor *sd,
+ const LUID_AND_ATTRIBUTES *filter_privileges, unsigned int priv_count,
+ const SID *filter_groups, unsigned int group_count );
extern int token_check_privileges( struct token *token, int all_required,
const LUID_AND_ATTRIBUTES *reqprivs,
unsigned int count, LUID_AND_ATTRIBUTES *usedprivs);
diff --git a/server/token.c b/server/token.c
index 74db66e1e24..acd7a4dedb5 100644
--- a/server/token.c
+++ b/server/token.c
@@ -299,6 +299,19 @@ static int acl_is_valid( const ACL *acl, data_size_t size )
return TRUE;
}
+static unsigned int get_sid_count( const SID *sid, data_size_t size )
+{
+ unsigned int count;
+
+ for (count = 0; size >= sizeof(SID) && security_sid_len( sid ) <= size; count++)
+ {
+ size -= security_sid_len( sid );
+ sid = (const SID *)((char *)sid + security_sid_len( sid ));
+ }
+
+ return count;
+}
+
/* checks whether all members of a security descriptor fit inside the size
* of memory specified */
int sd_is_valid( const struct security_descriptor *sd, data_size_t size )
@@ -639,8 +652,36 @@ static struct token *create_token( unsigned primary, const SID *user,
return token;
}
+static int filter_group( struct group *group, const SID *filter, unsigned int count )
+{
+ unsigned int i;
+
+ for (i = 0; i < count; i++)
+ {
+ if (security_equal_sid( &group->sid, filter )) return 1;
+ filter = (const SID *)((char *)filter + security_sid_len( filter ));
+ }
+
+ return 0;
+}
+
+static int filter_privilege( struct privilege *privilege, const LUID_AND_ATTRIBUTES *filter, unsigned int count )
+{
+ unsigned int i;
+
+ for (i = 0; i < count; i++)
+ {
+ if (!memcmp( &privilege->luid, &filter[i].Luid, sizeof(LUID) ))
+ return 1;
+ }
+
+ return 0;
+}
+
struct token *token_duplicate( struct token *src_token, unsigned primary,
- int impersonation_level, const struct security_descriptor *sd )
+ int impersonation_level, const struct security_descriptor *sd,
+ const LUID_AND_ATTRIBUTES *filter_privileges, unsigned int priv_count,
+ const SID *filter_groups, unsigned int group_count)
{
const luid_t *modified_id =
primary || (impersonation_level == src_token->impersonation_level) ?
@@ -676,6 +717,12 @@ struct token *token_duplicate( struct token *src_token, unsigned primary,
return NULL;
}
memcpy( newgroup, group, size );
+ if (filter_group( group, filter_groups, group_count ))
+ {
+ newgroup->enabled = 0;
+ newgroup->def = 0;
+ newgroup->deny_only = 1;
+ }
list_add_tail( &token->groups, &newgroup->entry );
if (src_token->primary_group == &group->sid)
token->primary_group = &newgroup->sid;
@@ -684,11 +731,14 @@ struct token *token_duplicate( struct token *src_token, unsigned primary,
/* copy privileges */
LIST_FOR_EACH_ENTRY( privilege, &src_token->privileges, struct privilege, entry )
+ {
+ if (filter_privilege( privilege, filter_privileges, priv_count )) continue;
if (!privilege_add( token, &privilege->luid, privilege->enabled ))
{
release_object( token );
return NULL;
}
+ }
if (sd) default_set_sd( &token->obj, sd, OWNER_SECURITY_INFORMATION | GROUP_SECURITY_INFORMATION |
DACL_SECURITY_INFORMATION | SACL_SECURITY_INFORMATION );
@@ -1322,7 +1372,7 @@ DECL_HANDLER(duplicate_token)
TOKEN_DUPLICATE,
&token_ops )))
{
- struct token *token = token_duplicate( src_token, req->primary, req->impersonation_level, sd );
+ struct token *token = token_duplicate( src_token, req->primary, req->impersonation_level, sd, NULL, 0, NULL, 0 );
if (token)
{
reply->new_handle = alloc_handle_no_access_check( current->process, token, req->access, objattr->attributes );
@@ -1332,6 +1382,36 @@ DECL_HANDLER(duplicate_token)
}
}
+/* creates a restricted version of a token */
+DECL_HANDLER(filter_token)
+{
+ struct token *src_token;
+
+ if ((src_token = (struct token *)get_handle_obj( current->process, req->handle,
+ TOKEN_DUPLICATE,
+ &token_ops )))
+ {
+ const LUID_AND_ATTRIBUTES *filter_privileges = get_req_data();
+ unsigned int priv_count, group_count;
+ const SID *filter_groups;
+ struct token *token;
+
+ priv_count = min( req->privileges_size, get_req_data_size() ) / sizeof(LUID_AND_ATTRIBUTES);
+ filter_groups = (const SID *)((char *)filter_privileges + priv_count * sizeof(LUID_AND_ATTRIBUTES));
+ group_count = get_sid_count( filter_groups, get_req_data_size() - priv_count * sizeof(LUID_AND_ATTRIBUTES) );
+
+ token = token_duplicate( src_token, src_token->primary, src_token->impersonation_level, NULL,
+ filter_privileges, priv_count, filter_groups, group_count );
+ if (token)
+ {
+ unsigned int access = get_handle_access( current->process, req->handle );
+ reply->new_handle = alloc_handle_no_access_check( current->process, token, access, 0 );
+ release_object( token );
+ }
+ release_object( src_token );
+ }
+}
+
/* checks the specified privileges are held by the token */
DECL_HANDLER(check_token_privileges)
{
--
2.13.1

View File

@@ -0,0 +1,271 @@
From 2a1064c5f90beac2bd709ab5d1c454c90a16189b Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Michael=20M=C3=BCller?= <michael@fds-team.de>
Date: Fri, 4 Aug 2017 02:51:57 +0200
Subject: advapi32: Implement CreateRestrictedToken.
---
dlls/advapi32/security.c | 88 +++++++++++++++++++++++++++++++++++-------
dlls/advapi32/tests/security.c | 88 +++++++++++++++++++++++++++++++++++++++---
2 files changed, 157 insertions(+), 19 deletions(-)
diff --git a/dlls/advapi32/security.c b/dlls/advapi32/security.c
index 82bb6689d43..c531e45c9a0 100644
--- a/dlls/advapi32/security.c
+++ b/dlls/advapi32/security.c
@@ -840,6 +840,60 @@ BOOL WINAPI SetThreadToken(PHANDLE thread, HANDLE token)
ThreadImpersonationToken, &token, sizeof token ));
}
+static BOOL allocate_groups(TOKEN_GROUPS **groups_ret, SID_AND_ATTRIBUTES *sids, DWORD count)
+{
+ TOKEN_GROUPS *groups;
+ DWORD i;
+
+ if (!count)
+ {
+ *groups_ret = NULL;
+ return TRUE;
+ }
+
+ groups = (TOKEN_GROUPS *)heap_alloc(FIELD_OFFSET(TOKEN_GROUPS, Groups) +
+ count * sizeof(SID_AND_ATTRIBUTES));
+ if (!groups)
+ {
+ SetLastError(ERROR_OUTOFMEMORY);
+ return FALSE;
+ }
+
+ groups->GroupCount = count;
+ for (i = 0; i < count; i++)
+ groups->Groups[i] = sids[i];
+
+ *groups_ret = groups;
+ return TRUE;
+}
+
+static BOOL allocate_privileges(TOKEN_PRIVILEGES **privileges_ret, LUID_AND_ATTRIBUTES *privs, DWORD count)
+{
+ TOKEN_PRIVILEGES *privileges;
+ DWORD i;
+
+ if (!count)
+ {
+ *privileges_ret = NULL;
+ return TRUE;
+ }
+
+ privileges = (TOKEN_PRIVILEGES *)heap_alloc(FIELD_OFFSET(TOKEN_PRIVILEGES, Privileges) +
+ count * sizeof(LUID_AND_ATTRIBUTES));
+ if (!privileges)
+ {
+ SetLastError(ERROR_OUTOFMEMORY);
+ return FALSE;
+ }
+
+ privileges->PrivilegeCount = count;
+ for (i = 0; i < count; i++)
+ privileges->Privileges[i] = privs[i];
+
+ *privileges_ret = privileges;
+ return TRUE;
+}
+
/*************************************************************************
* CreateRestrictedToken [ADVAPI32.@]
*
@@ -871,25 +925,33 @@ BOOL WINAPI CreateRestrictedToken(
PSID_AND_ATTRIBUTES restrictSids,
PHANDLE newToken)
{
- TOKEN_TYPE type;
- SECURITY_IMPERSONATION_LEVEL level = SecurityAnonymous;
- DWORD size;
+ TOKEN_PRIVILEGES *delete_privs = NULL;
+ TOKEN_GROUPS *disable_groups = NULL;
+ TOKEN_GROUPS *restrict_sids = NULL;
+ BOOL ret = FALSE;
- FIXME("(%p, 0x%x, %u, %p, %u, %p, %u, %p, %p): stub\n",
+ TRACE("(%p, 0x%x, %u, %p, %u, %p, %u, %p, %p)\n",
baseToken, flags, nDisableSids, disableSids,
nDeletePrivs, deletePrivs,
nRestrictSids, restrictSids,
newToken);
- size = sizeof(type);
- if (!GetTokenInformation( baseToken, TokenType, &type, size, &size )) return FALSE;
- if (type == TokenImpersonation)
- {
- size = sizeof(level);
- if (!GetTokenInformation( baseToken, TokenImpersonationLevel, &level, size, &size ))
- return FALSE;
- }
- return DuplicateTokenEx( baseToken, MAXIMUM_ALLOWED, NULL, level, type, newToken );
+ if (!allocate_groups(&disable_groups, disableSids, nDisableSids))
+ goto done;
+
+ if (!allocate_privileges(&delete_privs, deletePrivs, nDeletePrivs))
+ goto done;
+
+ if (!allocate_groups(&restrict_sids, restrictSids, nRestrictSids))
+ goto done;
+
+ ret = set_ntstatus(NtFilterToken(baseToken, flags, disable_groups, delete_privs, restrict_sids, newToken));
+
+done:
+ heap_free(disable_groups);
+ heap_free(delete_privs);
+ heap_free(restrict_sids);
+ return ret;
}
/* ##############################
diff --git a/dlls/advapi32/tests/security.c b/dlls/advapi32/tests/security.c
index a1ecc409b73..0fd41fe82fa 100644
--- a/dlls/advapi32/tests/security.c
+++ b/dlls/advapi32/tests/security.c
@@ -5292,10 +5292,13 @@ static void test_GetUserNameW(void)
static void test_CreateRestrictedToken(void)
{
+ TOKEN_PRIMARY_GROUP *primary_group, *primary_group2;
HANDLE process_token, token, r_token;
PTOKEN_GROUPS token_groups, groups2;
SID_AND_ATTRIBUTES sattr;
SECURITY_IMPERSONATION_LEVEL level;
+ TOKEN_PRIVILEGES *privs;
+ PRIVILEGE_SET privset;
TOKEN_TYPE type;
BOOL is_member;
DWORD size;
@@ -5311,7 +5314,7 @@ static void test_CreateRestrictedToken(void)
ret = OpenProcessToken(GetCurrentProcess(), TOKEN_DUPLICATE|TOKEN_QUERY, &process_token);
ok(ret, "got error %d\n", GetLastError());
- ret = DuplicateTokenEx(process_token, TOKEN_DUPLICATE|TOKEN_ADJUST_GROUPS|TOKEN_QUERY,
+ ret = DuplicateTokenEx(process_token, TOKEN_DUPLICATE|TOKEN_ADJUST_GROUPS|TOKEN_ADJUST_PRIVILEGES|TOKEN_QUERY,
NULL, SecurityImpersonation, TokenImpersonation, &token);
ok(ret, "got error %d\n", GetLastError());
@@ -5342,11 +5345,21 @@ static void test_CreateRestrictedToken(void)
ok(ret, "got error %d\n", GetLastError());
ok(is_member, "not a member\n");
- /* disable a SID in new token */
+ privset.PrivilegeCount = 1;
+ privset.Control = PRIVILEGE_SET_ALL_NECESSARY;
+ ret = LookupPrivilegeValueA(NULL, "SeChangeNotifyPrivilege", &privset.Privilege[0].Luid);
+ ok(ret, "got error %d\n", GetLastError());
+
+ is_member = FALSE;
+ ret = PrivilegeCheck(token, &privset, &is_member);
+ ok(ret, "got error %d\n", GetLastError());
+ ok(is_member, "Expected SeChangeNotifyPrivilege to be enabled\n");
+
+ /* disable a SID and a privilege in new token */
sattr.Sid = token_groups->Groups[i].Sid;
sattr.Attributes = 0;
r_token = NULL;
- ret = pCreateRestrictedToken(token, 0, 1, &sattr, 0, NULL, 0, NULL, &r_token);
+ ret = pCreateRestrictedToken(token, 0, 1, &sattr, 1, &privset.Privilege[0], 0, NULL, &r_token);
ok(ret, "got error %d\n", GetLastError());
if (ret)
@@ -5355,7 +5368,7 @@ static void test_CreateRestrictedToken(void)
is_member = TRUE;
ret = pCheckTokenMembership(r_token, token_groups->Groups[i].Sid, &is_member);
ok(ret, "got error %d\n", GetLastError());
- todo_wine ok(!is_member, "not a member\n");
+ ok(!is_member, "not a member\n");
ret = GetTokenInformation(r_token, TokenGroups, NULL, 0, &size);
ok(!ret && GetLastError() == ERROR_INSUFFICIENT_BUFFER, "got %d with error %d\n",
@@ -5370,9 +5383,9 @@ static void test_CreateRestrictedToken(void)
break;
}
- todo_wine ok(groups2->Groups[j].Attributes & SE_GROUP_USE_FOR_DENY_ONLY,
+ ok(groups2->Groups[j].Attributes & SE_GROUP_USE_FOR_DENY_ONLY,
"got wrong attributes\n");
- todo_wine ok((groups2->Groups[j].Attributes & SE_GROUP_ENABLED) == 0,
+ ok((groups2->Groups[j].Attributes & SE_GROUP_ENABLED) == 0,
"got wrong attributes\n");
HeapFree(GetProcessHeap(), 0, groups2);
@@ -5386,10 +5399,73 @@ static void test_CreateRestrictedToken(void)
ret = GetTokenInformation(r_token, TokenImpersonationLevel, &level, size, &size);
ok(ret, "got error %d\n", GetLastError());
ok(level == SecurityImpersonation, "got level %u\n", type);
+
+ is_member = TRUE;
+ ret = PrivilegeCheck(r_token, &privset, &is_member);
+ ok(ret, "got error %d\n", GetLastError());
+ ok(!is_member, "Expected SeChangeNotifyPrivilege not to be enabled\n");
+
+ ret = GetTokenInformation(r_token, TokenPrivileges, NULL, 0, &size);
+ ok(!ret && GetLastError() == ERROR_INSUFFICIENT_BUFFER, "got %d with error %d\n",
+ ret, GetLastError());
+ privs = HeapAlloc(GetProcessHeap(), 0, size);
+ ret = GetTokenInformation(r_token, TokenPrivileges, privs, size, &size);
+ ok(ret, "got error %d\n", GetLastError());
+
+ is_member = FALSE;
+ for (j = 0; j < privs->PrivilegeCount; j++)
+ {
+ if (RtlEqualLuid(&privs->Privileges[j].Luid, &privset.Privilege[0].Luid))
+ {
+ is_member = TRUE;
+ break;
+ }
+ }
+
+ ok(!is_member, "Expected not to find privilege\n");
+ HeapFree(GetProcessHeap(), 0, privs);
}
HeapFree(GetProcessHeap(), 0, token_groups);
CloseHandle(r_token);
+
+ ret = GetTokenInformation(token, TokenPrimaryGroup, NULL, 0, &size);
+ ok(!ret && GetLastError() == ERROR_INSUFFICIENT_BUFFER, "got %d with error %d\n",
+ ret, GetLastError());
+ primary_group = HeapAlloc(GetProcessHeap(), 0, size);
+ ret = GetTokenInformation(token, TokenPrimaryGroup, primary_group, size, &size);
+ ok(ret, "got error %d\n", GetLastError());
+
+ /* disable primary group */
+ sattr.Sid = primary_group->PrimaryGroup;
+ sattr.Attributes = 0;
+ r_token = NULL;
+ ret = pCreateRestrictedToken(token, 0, 1, &sattr, 0, NULL, 0, NULL, &r_token);
+ ok(ret, "got error %d\n", GetLastError());
+
+ if (ret)
+ {
+ is_member = TRUE;
+ ret = pCheckTokenMembership(r_token, primary_group->PrimaryGroup, &is_member);
+ ok(ret, "got error %d\n", GetLastError());
+ ok(!is_member, "not a member\n");
+
+ ret = GetTokenInformation(r_token, TokenPrimaryGroup, NULL, 0, &size);
+ ok(!ret && GetLastError() == ERROR_INSUFFICIENT_BUFFER, "got %d with error %d\n",
+ ret, GetLastError());
+ primary_group2 = HeapAlloc(GetProcessHeap(), 0, size);
+ ret = GetTokenInformation(r_token, TokenPrimaryGroup, primary_group2, size, &size);
+ ok(ret, "got error %d\n", GetLastError());
+
+ ok(EqualSid(primary_group2->PrimaryGroup, primary_group->PrimaryGroup),
+ "Expected same primary group\n");
+
+ HeapFree(GetProcessHeap(), 0, primary_group2);
+ }
+
+ HeapFree(GetProcessHeap(), 0, primary_group);
+ CloseHandle(r_token);
+
CloseHandle(token);
CloseHandle(process_token);
}
--
2.13.1

View File

@@ -0,0 +1,36 @@
From 22a49dfa50cda9b1f5a5c64eabed2d17b0033896 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Michael=20M=C3=BCller?= <michael@fds-team.de>
Date: Fri, 4 Aug 2017 02:52:50 +0200
Subject: server: Correctly validate SID length in sd_is_valid.
---
server/token.c | 6 ++----
1 file changed, 2 insertions(+), 4 deletions(-)
diff --git a/server/token.c b/server/token.c
index acd7a4dedb5..7ab0f634c05 100644
--- a/server/token.c
+++ b/server/token.c
@@ -332,8 +332,7 @@ int sd_is_valid( const struct security_descriptor *sd, data_size_t size )
owner = sd_get_owner( sd );
if (owner)
{
- size_t needed_size = security_sid_len( owner );
- if ((sd->owner_len < sizeof(SID)) || (needed_size > sd->owner_len))
+ if ((sd->owner_len < sizeof(SID)) || (security_sid_len( owner ) > sd->owner_len))
return FALSE;
}
offset += sd->owner_len;
@@ -344,8 +343,7 @@ int sd_is_valid( const struct security_descriptor *sd, data_size_t size )
group = sd_get_group( sd );
if (group)
{
- size_t needed_size = security_sid_len( group );
- if ((sd->group_len < sizeof(SID)) || (needed_size > sd->group_len))
+ if ((sd->group_len < sizeof(SID)) || (security_sid_len( group ) > sd->group_len))
return FALSE;
}
offset += sd->group_len;
--
2.13.1

View File

@@ -0,0 +1 @@
Fixes: Implement advapi32.CreateRestrictedToken

Some files were not shown because too many files have changed in this diff Show More