Compare commits

...

149 Commits
v2.1 ... v2.7

Author SHA1 Message Date
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
Sebastian Lackner
73cb57f5b9 Release 2.3. 2017-03-06 19:00:30 +01:00
Sebastian Lackner
f473f9cb80 wined3d-buffer_create: Update and reenable patch. 2017-03-06 17:45:16 +01:00
Sebastian Lackner
9e463db339 wintrust-WinVerifyTrust: Do not use memory mapping. 2017-03-06 17:30:20 +01:00
Sebastian Lackner
943ffbfbbf Added patch to implement LsaLookupPrivilege[Display]Name stubs. 2017-03-06 03:20:09 +01:00
Sebastian Lackner
5ad5986215 Added patch to implement Bcrypt ECB chaining mode. 2017-03-05 23:19:20 +01:00
Sebastian Lackner
998dd35306 Added patch to implement FileAccessInformation class. 2017-03-05 21:49:35 +01:00
Sebastian Lackner
df5f35e1d1 Added patch for kernel32.GetCurrentPackageFullName stub. 2017-03-05 20:02:03 +01:00
Sebastian Lackner
f61db43e7f Added patch to fix compile error when O_CLOEXEC is not defined. 2017-03-05 19:38:10 +01:00
Sebastian Lackner
734b40739a Added patch to implement stubs for Ke{Aquire,Release}InStackQueuedSpinLock functions. 2017-03-05 19:31:03 +01:00
Sebastian Lackner
c97e444da2 msvcrt-CurrentScheduler_Id: Fix compile error on x86_64. 2017-03-05 19:12:18 +01:00
Sebastian Lackner
b84644bd63 Added patch to save rdi and rsi in raise_func_trampoline on x86_64. 2017-03-05 14:42:55 +01:00
Sebastian Lackner
1c3562d671 server-LABEL_SECURITY_INFORMATION: Add reference to upstream bug. 2017-03-05 00:12:59 +01:00
Sebastian Lackner
14f5eae731 Added patch to implement stub for virtdisk.GetStorageDependencyInformation. 2017-03-04 23:19:16 +01:00
Sebastian Lackner
534583d958 Added patch to populate AudioCompressorCategory registry keys. 2017-03-04 21:54:30 +01:00
Sebastian Lackner
aa957fe3a3 Added patch to improve FolderItemsImpl_get_Count stub in shell32. 2017-03-04 20:18:12 +01:00
Sebastian Lackner
e3bf95ebea Added patch to allow to set INTERNET_OPTION_HTTP_DECODING on wininet sessions and connections. 2017-03-04 20:09:43 +01:00
Sebastian Lackner
8c7825d1c0 api-ms-win-Stub_DLLs: Update specfile. 2017-03-04 19:18:57 +01:00
Sebastian Lackner
fae17cd83a Added patch to implement stub for Concurrency::details::_CurrentScheduler::_Id. 2017-03-04 19:13:14 +01:00
Sebastian Lackner
8caca32d08 Added patch for MS root certificates 2010/2011. 2017-03-04 19:02:34 +01:00
Sebastian Lackner
0be12d7669 Added patch for semi-stub of d3d10_device_CheckFormatSupport. 2017-03-04 18:55:10 +01:00
Sebastian Lackner
a99ad44fff Added patch for semi-stub of d3d10_device_ResolveSubresource. 2017-03-04 18:44:46 +01:00
Sebastian Lackner
a644cbf827 Rebase against a2460b2424163bbf5b885db6a5423c3d98f883e0. 2017-03-04 18:31:06 +01:00
Sebastian Lackner
88c85f01c3 Rebase against e918c6fd8b426e8298eca5951d917960e4236d95. 2017-03-03 05:40:34 +01:00
Sebastian Lackner
04a8307d45 Rebase against e6f8f136fa557d282f44654be509573cb45a831f. 2017-03-02 17:27:26 +01:00
Sebastian Lackner
c6708dbbbf Rebase against 89b75296128e8c2cadc77cb06ecd7faa1f80d012. 2017-03-01 00:46:59 +01:00
Sebastian Lackner
3dfeab6722 Rebase against b47487af999f48ba2700b4dd5ff6cd47891d4787. 2017-02-28 04:53:10 +01:00
Sebastian Lackner
147562e3e1 d3d9-Tests: Remove some todo_wines.
Probably fixed by cab9282d10e4b2868a0dd85383b1126c0d6c591a.
2017-02-26 20:15:58 +01:00
Sebastian Lackner
1383fc82bc Rebase against adedebf47a9a02694b79965eb2aa670b3906b398. 2017-02-26 20:15:58 +01:00
Sebastian Lackner
23560728b5 Rebase against 0dc677c05fb71ba459ad20711af6637ab92e8847. 2017-02-24 03:25:04 +01:00
Sebastian Lackner
3f25cd198a wined3d-buffer_create: Disable patchset. 2017-02-23 16:50:11 +01:00
Sebastian Lackner
5b58419a0e Rebase against 1cc93e3f05bce5ae9758fad44f69f44e1462d81b. 2017-02-23 14:29:11 +01:00
Sebastian Lackner
4136b55f1c wined3d-CSMT_Main: Enforce memory limit for CSMT blocks. 2017-02-23 02:29:00 +01:00
Sebastian Lackner
2ae8a0be02 Rebase against 3d62cd26d1b988b373efae0b9c4a0a988985d45f. 2017-02-22 06:50:16 +01:00
Sebastian Lackner
dc52cbef3c Rebase against 60c98caa94465799d0868b69149bce29cf767de4. 2017-02-21 05:05:05 +01:00
Sebastian Lackner
7881913b09 Release 2.2. 2017-02-20 21:43:50 +01:00
Sebastian Lackner
88a1a26f34 Added patch to fix compilation of winemp3.acm on Ubuntu Precise. 2017-02-20 19:06:50 +01:00
Sebastian Lackner
53aeae58ad Added patch to improve performance of LdrGetDllHandle when DLL is not loaded. 2017-02-20 15:56:33 +01:00
Sebastian Lackner
33efbf2440 Added patch to implement various missing columns in Win32_VideoController wbemprox class. 2017-02-20 15:37:09 +01:00
Sebastian Lackner
2a755a9b6f Added patch to use separate wineserver call for kernel32.K32GetPerformanceInfo. 2017-02-20 15:30:14 +01:00
Sebastian Lackner
60e835b183 wined3d-CSMT_Main: Use DISCARD when uploading full buffer. 2017-02-20 02:02:26 +01:00
Sebastian Lackner
c32efc1a79 wined3d-CSMT_Main: Improve performance of update_sub_resource by copying data. 2017-02-20 01:11:27 +01:00
Sebastian Lackner
1119b4401a wined3d-CSMT_Main: Some fixes to ensure wined3d-csmt also works with CSMT disabled. 2017-02-19 22:35:46 +01:00
Sebastian Lackner
c55ebfa2a4 wined3d-CSMT_Main: Initialize full state. 2017-02-19 18:17:33 +01:00
Sebastian Lackner
884a25c8bf wined3d-CSMT_Main: Rebase to upstream changes. 2017-02-19 08:33:33 +01:00
Sebastian Lackner
81e2fbadc8 Added patch to avoid some test failures in d3d11 / d3d10core tests. 2017-02-18 21:52:53 +01:00
Sebastian Lackner
d9d5df9f73 Rebase against 9eb56e25e37b4adec0d72875455ffb787238672f. 2017-02-18 02:37:25 +01:00
Sebastian Lackner
9c5d1ebec9 Rebase against a2f2de1e960d37840bb0df541e31d64941e65197. 2017-02-17 22:15:05 +01:00
Sebastian Lackner
6057508b9b Rebase against d00f7315e0cec0c2fe34ba5ab2b55cf5718860dd. 2017-02-17 01:48:52 +01:00
Sebastian Lackner
1ff77100b8 Rebase against 8af23cb93e4e1cd3686984399cb50d755f5171e3. 2017-02-15 03:40:50 +01:00
Sebastian Lackner
60d570e5f1 Rebase against e804e9a5bc9fde9ad8b84dfd121d44afbe177752. 2017-02-14 17:01:29 +01:00
Sebastian Lackner
76007a01a2 wined3d-DXTn: Remove reference to fixed bug. 2017-02-12 22:52:20 +01:00
Sebastian Lackner
d924318742 wined3d-CSMT_Main: Initialize critical sections with spincount. 2017-02-12 15:44:06 +01:00
Sebastian Lackner
1cc5d04346 Added patch to create buffers on default pool in wined3d_buffer_create. 2017-02-12 05:21:10 +01:00
Sebastian Lackner
ecf0d1c5c2 wined3d-CSMT_Main: Use priority queue for update_sub_resource. 2017-02-12 05:17:53 +01:00
Sebastian Lackner
d834b49a37 Added patch to implement support for PSPCB_ADDREF/PSPCB_RELEASE callback notifications. 2017-02-11 06:23:14 +01:00
Sebastian Lackner
230c30c8e3 Rebase against 9c72376c8cc03a4ea86dddaa6d18a93a1a33fc73. 2017-02-11 05:57:20 +01:00
Sebastian Lackner
89830856c3 ntdll-NtQueryVirtualMemory: Fix buffer size in tests (thanks Mark Jansen). 2017-02-11 05:57:19 +01:00
Sebastian Lackner
5f82b6610f Remove various disabled patchsets. 2017-02-11 05:57:19 +01:00
Sebastian Lackner
bdc0bd9ac4 wined3d-CSMT_Main: Update patchset. 2017-02-11 05:57:19 +01:00
Sebastian Lackner
2b415aff4f Rebase against 06c5a9ab55751b1c66ea0847aea4d4a45d8d343c. 2017-02-11 05:57:19 +01:00
Sebastian Lackner
253835e7c3 Rebase against 6bb8ca1e25a9cfc66f396b2ae6bc423a8057929c. 2017-02-11 05:57:00 +01:00
347 changed files with 12303 additions and 27001 deletions

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

View File

@@ -0,0 +1,26 @@
From 43628d9b1905396ff6442e4f1e07c9dd48739b19 Mon Sep 17 00:00:00 2001
From: Sebastian Lackner <sebastian@fds-team.de>
Date: Fri, 14 Apr 2017 15:57:18 +0200
Subject: ole32: Fix compilation with recent versions of gcc.
---
dlls/ole32/storage32.h | 3 +++
1 file changed, 3 insertions(+)
diff --git a/dlls/ole32/storage32.h b/dlls/ole32/storage32.h
index 4fcfd9c362..2b23ab8eb8 100644
--- a/dlls/ole32/storage32.h
+++ b/dlls/ole32/storage32.h
@@ -526,6 +526,9 @@ StgStreamImpl* StgStreamImpl_Construct(
/******************************************************************************
* Endian conversion macros
*/
+#undef htole32
+#undef htole16
+
#ifdef WORDS_BIGENDIAN
#define htole32(x) RtlUlongByteSwap(x)
--
2.12.2

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,2 +0,0 @@
Depends: ntdll-WRITECOPY
Disabled: true

View File

@@ -1 +0,0 @@
Depends: kernel32-BeingDebugged

View File

@@ -0,0 +1,55 @@
From ce0ab0ccd6e4953a9673d15e00cf602668469c2c 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:04:36 +0100
Subject: advapi32: Fix error code when calling LsaOpenPolicy for non existing
remote machine.
---
dlls/advapi32/lsa.c | 2 +-
dlls/advapi32/tests/lsa.c | 10 ++++++++++
2 files changed, 11 insertions(+), 1 deletion(-)
diff --git a/dlls/advapi32/lsa.c b/dlls/advapi32/lsa.c
index b8dedbd6d58..e5e3b1649c0 100644
--- a/dlls/advapi32/lsa.c
+++ b/dlls/advapi32/lsa.c
@@ -692,7 +692,7 @@ NTSTATUS WINAPI LsaOpenPolicy(
ObjectAttributes, DesiredAccess, PolicyHandle);
ADVAPI_ForceLocalComputer(SystemName ? SystemName->Buffer : NULL,
- STATUS_ACCESS_VIOLATION);
+ RPC_NT_SERVER_UNAVAILABLE);
dumpLsaAttributes(ObjectAttributes);
if(PolicyHandle) *PolicyHandle = (LSA_HANDLE)0xcafe;
diff --git a/dlls/advapi32/tests/lsa.c b/dlls/advapi32/tests/lsa.c
index 4daf75f58d1..7ddda731be2 100644
--- a/dlls/advapi32/tests/lsa.c
+++ b/dlls/advapi32/tests/lsa.c
@@ -70,6 +70,8 @@ static BOOL init(void)
static void test_lsa(void)
{
+ static WCHAR machineW[] = {'W','i','n','e','N','o','M','a','c','h','i','n','e',0};
+ LSA_UNICODE_STRING machine;
NTSTATUS status;
LSA_HANDLE handle;
LSA_OBJECT_ATTRIBUTES object_attributes;
@@ -77,6 +79,14 @@ static void test_lsa(void)
ZeroMemory(&object_attributes, sizeof(object_attributes));
object_attributes.Length = sizeof(object_attributes);
+ machine.Buffer = machineW;
+ machine.Length = sizeof(machineW) - 2;
+ machine.MaximumLength = sizeof(machineW);
+
+ status = pLsaOpenPolicy( &machine, &object_attributes, POLICY_LOOKUP_NAMES, &handle);
+ ok(status == RPC_NT_SERVER_UNAVAILABLE,
+ "LsaOpenPolicy(POLICY_LOOKUP_NAMES) for invalid machine returned 0x%08x\n", status);
+
status = pLsaOpenPolicy( NULL, &object_attributes, POLICY_ALL_ACCESS, &handle);
ok(status == STATUS_SUCCESS || status == STATUS_ACCESS_DENIED,
"LsaOpenPolicy(POLICY_ALL_ACCESS) returned 0x%08x\n", status);
--
2.11.0

View File

@@ -0,0 +1,34 @@
From 1941137bff72a2297812bbd05fb6f6a1578426b0 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:05:54 +0100
Subject: advapi32: Use TRACE for LsaOpenPolicy/LsaClose.
---
dlls/advapi32/lsa.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/dlls/advapi32/lsa.c b/dlls/advapi32/lsa.c
index e5e3b1649c0..0f2167d19ab 100644
--- a/dlls/advapi32/lsa.c
+++ b/dlls/advapi32/lsa.c
@@ -136,7 +136,7 @@ NTSTATUS WINAPI LsaAddAccountRights(
*/
NTSTATUS WINAPI LsaClose(IN LSA_HANDLE ObjectHandle)
{
- FIXME("(%p) stub\n", ObjectHandle);
+ TRACE("(%p) semi-stub\n", ObjectHandle);
return STATUS_SUCCESS;
}
@@ -687,7 +687,7 @@ NTSTATUS WINAPI LsaOpenPolicy(
IN ACCESS_MASK DesiredAccess,
IN OUT PLSA_HANDLE PolicyHandle)
{
- FIXME("(%s,%p,0x%08x,%p) stub\n",
+ TRACE("(%s,%p,0x%08x,%p) semi-stub\n",
SystemName?debugstr_w(SystemName->Buffer):"(null)",
ObjectAttributes, DesiredAccess, PolicyHandle);
--
2.11.0

View File

@@ -0,0 +1,162 @@
From bee5e0baac722c66ad8c1034a65a2cecfe74716e 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/security.c | 27 ++++++++++++++++++---------
include/ntsecapi.h | 1 +
5 files changed, 60 insertions(+), 10 deletions(-)
diff --git a/dlls/advapi32/advapi32.spec b/dlls/advapi32/advapi32.spec
index 078bb8fc25..124f527282 100644
--- a/dlls/advapi32/advapi32.spec
+++ b/dlls/advapi32/advapi32.spec
@@ -469,7 +469,7 @@
@ stdcall LsaLookupNames(long long ptr ptr ptr)
@ stdcall LsaLookupNames2(ptr long long ptr ptr ptr)
@ stub LsaLookupPrivilegeDisplayName
-# @ stub LsaLookupPrivilegeName
+@ stdcall LsaLookupPrivilegeName(long ptr ptr)
# @ stub LsaLookupPrivilegeValue
@ stdcall LsaLookupSids(ptr long ptr ptr ptr)
# @ stub LsaLookupSids2
diff --git a/dlls/advapi32/advapi32_misc.h b/dlls/advapi32/advapi32_misc.h
index d116ecb836..ecb07f635a 100644
--- a/dlls/advapi32/advapi32_misc.h
+++ b/dlls/advapi32/advapi32_misc.h
@@ -68,4 +68,6 @@ static inline WCHAR *strdupAW( const char *src )
return dst;
}
+const WCHAR * const WellKnownPrivNames[SE_MAX_WELL_KNOWN_PRIVILEGE + 1];
+
#endif /* __WINE_ADVAPI32MISC_H */
diff --git a/dlls/advapi32/lsa.c b/dlls/advapi32/lsa.c
index 479201bfc1..ceb3b05c05 100644
--- a/dlls/advapi32/lsa.c
+++ b/dlls/advapi32/lsa.c
@@ -973,3 +973,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)
+{
+ UNICODE_STRING *priv_unicode;
+ size_t priv_size;
+ WCHAR *strW;
+
+ TRACE("(%p, %p, %p)\n", handle, lpLuid, name);
+
+ if (!handle)
+ return STATUS_INVALID_HANDLE;
+
+ if (!name)
+ return STATUS_INVALID_PARAMETER;
+
+ if (lpLuid->HighPart ||
+ (lpLuid->LowPart < SE_MIN_WELL_KNOWN_PRIVILEGE ||
+ lpLuid->LowPart > SE_MAX_WELL_KNOWN_PRIVILEGE))
+ return STATUS_NO_SUCH_PRIVILEGE;
+
+ priv_size = (strlenW(WellKnownPrivNames[lpLuid->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]);
+ RtlInitUnicodeString(priv_unicode, strW);
+
+ *name = priv_unicode;
+ return STATUS_SUCCESS;
+}
diff --git a/dlls/advapi32/security.c b/dlls/advapi32/security.c
index e36792cff4..3bc8f48b19 100644
--- a/dlls/advapi32/security.c
+++ b/dlls/advapi32/security.c
@@ -1840,7 +1840,7 @@ static const WCHAR SE_IMPERSONATE_NAME_W[] =
static const WCHAR SE_CREATE_GLOBAL_NAME_W[] =
{ 'S','e','C','r','e','a','t','e','G','l','o','b','a','l','P','r','i','v','i','l','e','g','e',0 };
-static const WCHAR * const WellKnownPrivNames[SE_MAX_WELL_KNOWN_PRIVILEGE + 1] =
+const WCHAR * const WellKnownPrivNames[SE_MAX_WELL_KNOWN_PRIVILEGE + 1] =
{
NULL,
NULL,
@@ -2043,33 +2043,42 @@ BOOL WINAPI
LookupPrivilegeNameW( LPCWSTR lpSystemName, PLUID lpLuid, LPWSTR lpName,
LPDWORD cchName)
{
+ UNICODE_STRING system_name, *priv;
+ LSA_HANDLE lsa;
+ NTSTATUS status;
size_t privNameLen;
TRACE("%s,%p,%p,%p\n",debugstr_w(lpSystemName), lpLuid, lpName, cchName);
- if (!ADVAPI_IsLocalComputer(lpSystemName))
+ RtlInitUnicodeString(&system_name, lpSystemName);
+ status = LsaOpenPolicy(&system_name, NULL, POLICY_LOOKUP_NAMES, &lsa);
+ if (status)
{
- SetLastError(RPC_S_SERVER_UNAVAILABLE);
+ SetLastError(LsaNtStatusToWinError(status));
return FALSE;
}
- if (lpLuid->HighPart || (lpLuid->LowPart < SE_MIN_WELL_KNOWN_PRIVILEGE ||
- lpLuid->LowPart > SE_MAX_WELL_KNOWN_PRIVILEGE))
+
+ status = LsaLookupPrivilegeName(&lsa, lpLuid, &priv);
+ LsaClose(lsa);
+ if (status)
{
- SetLastError(ERROR_NO_SUCH_PRIVILEGE);
+ SetLastError(LsaNtStatusToWinError(status));
return FALSE;
}
- privNameLen = strlenW(WellKnownPrivNames[lpLuid->LowPart]);
- /* Windows crashes if cchName is NULL, so will I */
+
+ privNameLen = priv->Length / sizeof(WCHAR);
if (*cchName <= privNameLen)
{
*cchName = privNameLen + 1;
+ LsaFreeMemory(priv);
SetLastError(ERROR_INSUFFICIENT_BUFFER);
return FALSE;
}
else
{
- strcpyW(lpName, WellKnownPrivNames[lpLuid->LowPart]);
+ strcpyW(lpName, priv->Buffer);
*cchName = privNameLen;
+ LsaFreeMemory(priv);
return TRUE;
}
}
diff --git a/include/ntsecapi.h b/include/ntsecapi.h
index 2bb3d312e4..0bf0eca43e 100644
--- a/include/ntsecapi.h
+++ b/include/ntsecapi.h
@@ -370,6 +370,7 @@ NTSTATUS WINAPI LsaLookupNames(LSA_HANDLE,ULONG,PLSA_UNICODE_STRING,PLSA_REFEREN
PLSA_TRANSLATED_SID*);
NTSTATUS WINAPI LsaLookupNames2(LSA_HANDLE,ULONG,ULONG,PLSA_UNICODE_STRING,PLSA_REFERENCED_DOMAIN_LIST*,
PLSA_TRANSLATED_SID2*);
+NTSTATUS WINAPI LsaLookupPrivilegeName(LSA_HANDLE,PLUID,PUNICODE_STRING*);
NTSTATUS WINAPI LsaLookupSids(LSA_HANDLE,ULONG,PSID *,PLSA_REFERENCED_DOMAIN_LIST *,PLSA_TRANSLATED_NAME *);
ULONG WINAPI LsaNtStatusToWinError(NTSTATUS);
NTSTATUS WINAPI LsaOpenPolicy(PLSA_UNICODE_STRING,PLSA_OBJECT_ATTRIBUTES,ACCESS_MASK,PLSA_HANDLE);
--
2.11.0

View File

@@ -0,0 +1,62 @@
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.
---
dlls/advapi32/advapi32.spec | 2 +-
dlls/advapi32/lsa.c | 21 +++++++++++++++++++++
2 files changed, 22 insertions(+), 1 deletion(-)
diff --git a/dlls/advapi32/advapi32.spec b/dlls/advapi32/advapi32.spec
index 124f527282..0b03cec3f5 100644
--- a/dlls/advapi32/advapi32.spec
+++ b/dlls/advapi32/advapi32.spec
@@ -468,7 +468,7 @@
# @ stub LsaICLookupSidsWithCreds
@ 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 ceb3b05c05..c2e02fb462 100644
--- a/dlls/advapi32/lsa.c
+++ b/dlls/advapi32/lsa.c
@@ -44,6 +44,12 @@ WINE_DEFAULT_DEBUG_CHANNEL(advapi);
return FailureCode; \
}
+static LPCSTR debugstr_us( const UNICODE_STRING *us )
+{
+ if (!us) return "(null)";
+ return debugstr_wn(us->Buffer, us->Length / sizeof(WCHAR));
+}
+
static void dumpLsaAttributes(const LSA_OBJECT_ATTRIBUTES *oa)
{
if (oa)
@@ -1011,3 +1017,18 @@ NTSTATUS WINAPI LsaLookupPrivilegeName(
*name = priv_unicode;
return STATUS_SUCCESS;
}
+
+/******************************************************************************
+ * LsaLookupPrivilegeDisplayName [ADVAPI32.@]
+ *
+ */
+NTSTATUS WINAPI LsaLookupPrivilegeDisplayName(
+ LSA_HANDLE handle,
+ PLSA_UNICODE_STRING name,
+ PLSA_UNICODE_STRING *dispname,
+ SHORT *language)
+{
+ FIXME("(%p, %s, %p, %p)\n", handle, debugstr_us(name), dispname, language);
+
+ return STATUS_NO_SUCH_PRIVILEGE;
+}
--
2.11.0

View File

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

View File

@@ -1,185 +0,0 @@
From 9904ee15d00d0809c12759446c09adc1981e3cf9 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Michael=20M=C3=BCller?= <michael@fds-team.de>
Date: Mon, 29 Aug 2016 19:45:47 +0200
Subject: advapi32: Implement AddMandatoryAce.
---
dlls/advapi32/security.c | 6 ++++--
dlls/advapi32/tests/security.c | 45 ++++++++++++++++++++++++++++++++++++++++++
dlls/ntdll/ntdll.spec | 1 +
dlls/ntdll/sec.c | 25 +++++++++++++++++++++++
include/winbase.h | 1 +
include/winternl.h | 1 +
6 files changed, 77 insertions(+), 2 deletions(-)
diff --git a/dlls/advapi32/security.c b/dlls/advapi32/security.c
index 28331df..45c0f7e 100644
--- a/dlls/advapi32/security.c
+++ b/dlls/advapi32/security.c
@@ -1711,10 +1711,12 @@ BOOL WINAPI AddAce(
return set_ntstatus(RtlAddAce(pAcl, dwAceRevision, dwStartingAceIndex, pAceList, nAceListLength));
}
+/******************************************************************************
+ * AddMandatoryAce [ADVAPI32.@]
+ */
BOOL WINAPI AddMandatoryAce(ACL *acl, DWORD ace_revision, DWORD ace_flags, DWORD mandatory_policy, PSID label_sid)
{
- FIXME("%p %x %x %x %p - stub\n", acl, ace_revision, ace_flags, mandatory_policy, label_sid);
- return FALSE;
+ return set_ntstatus(RtlAddMandatoryAce(acl, ace_revision, ace_flags, mandatory_policy, SYSTEM_MANDATORY_LABEL_ACE_TYPE, label_sid));
}
/******************************************************************************
diff --git a/dlls/advapi32/tests/security.c b/dlls/advapi32/tests/security.c
index 18f4e04..cdbe4f8 100644
--- a/dlls/advapi32/tests/security.c
+++ b/dlls/advapi32/tests/security.c
@@ -65,6 +65,7 @@
static BOOL (WINAPI *pAddAccessAllowedAceEx)(PACL, DWORD, DWORD, DWORD, PSID);
static BOOL (WINAPI *pAddAccessDeniedAceEx)(PACL, DWORD, DWORD, DWORD, PSID);
static BOOL (WINAPI *pAddAuditAccessAceEx)(PACL, DWORD, DWORD, DWORD, PSID, BOOL, BOOL);
+static BOOL (WINAPI *pAddMandatoryAce)(PACL,DWORD,DWORD,DWORD,PSID);
static VOID (WINAPI *pBuildTrusteeWithSidA)( PTRUSTEEA pTrustee, PSID pSid );
static VOID (WINAPI *pBuildTrusteeWithNameA)( PTRUSTEEA pTrustee, LPSTR pName );
static VOID (WINAPI *pBuildTrusteeWithObjectsAndNameA)( PTRUSTEEA pTrustee,
@@ -199,6 +200,7 @@ static void init(void)
pAddAccessAllowedAceEx = (void *)GetProcAddress(hmod, "AddAccessAllowedAceEx");
pAddAccessDeniedAceEx = (void *)GetProcAddress(hmod, "AddAccessDeniedAceEx");
pAddAuditAccessAceEx = (void *)GetProcAddress(hmod, "AddAuditAccessAceEx");
+ pAddMandatoryAce = (void *)GetProcAddress(hmod, "AddMandatoryAce");
pCheckTokenMembership = (void *)GetProcAddress(hmod, "CheckTokenMembership");
pConvertStringSecurityDescriptorToSecurityDescriptorA =
(void *)GetProcAddress(hmod, "ConvertStringSecurityDescriptorToSecurityDescriptorA" );
@@ -6064,6 +6066,48 @@ static void test_default_dacl_owner_sid(void)
CloseHandle( handle );
}
+static void test_integrity(void)
+{
+ static SID low_level = {SID_REVISION, 1, {SECURITY_MANDATORY_LABEL_AUTHORITY},
+ {SECURITY_MANDATORY_LOW_RID}};
+ SYSTEM_MANDATORY_LABEL_ACE *ace;
+ char buffer_acl[256];
+ ACL *pAcl = (ACL*)&buffer_acl;
+ BOOL ret, found;
+ DWORD index;
+
+ if (!pAddMandatoryAce)
+ {
+ win_skip("Mandatory integrity labels not supported, skipping test\n");
+ return;
+ }
+
+ ret = InitializeAcl(pAcl, 256, ACL_REVISION);
+ ok(ret, "InitializeAcl failed with %u\n", GetLastError());
+
+ ret = pAddMandatoryAce(pAcl, ACL_REVISION, 0, 0x1234, &low_level);
+ ok(!ret, "AddMandatoryAce succeeded\n");
+ ok(GetLastError() == ERROR_INVALID_PARAMETER, "Expected ERROR_INVALID_PARAMETER got %u\n", GetLastError());
+
+ ret = pAddMandatoryAce(pAcl, ACL_REVISION, 0, SYSTEM_MANDATORY_LABEL_NO_WRITE_UP, &low_level);
+ ok(ret, "AddMandatoryAce failed with %u\n", GetLastError());
+
+ index = 0;
+ found = FALSE;
+ while (pGetAce( pAcl, index++, (void **)&ace ))
+ {
+ if (ace->Header.AceType == SYSTEM_MANDATORY_LABEL_ACE_TYPE)
+ {
+ found = TRUE;
+ ok(ace->Header.AceFlags == 0, "Expected 0 as flags, got %x\n", ace->Header.AceFlags);
+ ok(ace->Mask == SYSTEM_MANDATORY_LABEL_NO_WRITE_UP,
+ "Expected SYSTEM_MANDATORY_LABEL_NO_WRITE_UP as flag, got %x\n", ace->Mask);
+ ok(EqualSid(&ace->SidStart, &low_level), "Expected low integrity level\n");
+ }
+ }
+ ok(found, "Could not find mandatory label\n");
+}
+
static void test_AdjustTokenPrivileges(void)
{
TOKEN_PRIVILEGES tp, prev;
@@ -6444,6 +6488,7 @@ START_TEST(security)
test_CreateRestrictedToken();
test_TokenIntegrityLevel();
test_default_dacl_owner_sid();
+ test_integrity();
test_AdjustTokenPrivileges();
test_AddAce();
test_system_security_access();
diff --git a/dlls/ntdll/ntdll.spec b/dlls/ntdll/ntdll.spec
index 28aa2df..f6f8eba 100644
--- a/dlls/ntdll/ntdll.spec
+++ b/dlls/ntdll/ntdll.spec
@@ -422,6 +422,7 @@
@ stdcall RtlAddAuditAccessAceEx(ptr long long long ptr long long)
@ stdcall RtlAddAuditAccessObjectAce(ptr long long long ptr ptr ptr long long)
# @ stub RtlAddCompoundAce
+@ stdcall RtlAddMandatoryAce(ptr long long long long ptr)
# @ stub RtlAddRange
@ cdecl -arch=arm,x86_64 RtlAddFunctionTable(ptr long long)
@ stdcall RtlAddRefActivationContext(ptr)
diff --git a/dlls/ntdll/sec.c b/dlls/ntdll/sec.c
index 3bc52ac..daa2cae 100644
--- a/dlls/ntdll/sec.c
+++ b/dlls/ntdll/sec.c
@@ -1379,6 +1379,31 @@ NTSTATUS WINAPI RtlAddAuditAccessObjectAce(
return STATUS_NOT_IMPLEMENTED;
}
+/**************************************************************************
+ * RtlAddMandatoryAce [NTDLL.@]
+ */
+NTSTATUS WINAPI RtlAddMandatoryAce(
+ IN OUT PACL pAcl,
+ IN DWORD dwAceRevision,
+ IN DWORD dwAceFlags,
+ IN DWORD dwMandatoryFlags,
+ IN DWORD dwAceType,
+ IN PSID pSid)
+{
+ static DWORD valid_flags = SYSTEM_MANDATORY_LABEL_NO_WRITE_UP | SYSTEM_MANDATORY_LABEL_NO_READ_UP |
+ SYSTEM_MANDATORY_LABEL_NO_EXECUTE_UP;
+
+ TRACE("(%p,%d,0x%08x,0x%08x,%u,%p)\n",pAcl,dwAceRevision,dwAceFlags,dwMandatoryFlags, dwAceType, pSid);
+
+ if (dwAceType != SYSTEM_MANDATORY_LABEL_ACE_TYPE)
+ return STATUS_INVALID_PARAMETER;
+
+ if (dwMandatoryFlags & ~valid_flags)
+ return STATUS_INVALID_PARAMETER;
+
+ return add_access_ace(pAcl, dwAceRevision, dwAceFlags, dwMandatoryFlags, pSid, dwAceType);
+}
+
/******************************************************************************
* RtlValidAcl [NTDLL.@]
*/
diff --git a/include/winbase.h b/include/winbase.h
index eff5972..42c826d 100644
--- a/include/winbase.h
+++ b/include/winbase.h
@@ -1693,6 +1693,7 @@ WINBASEAPI ATOM WINAPI AddAtomW(LPCWSTR);
#define AddAtom WINELIB_NAME_AW(AddAtom)
WINADVAPI BOOL WINAPI AddAuditAccessAce(PACL,DWORD,DWORD,PSID,BOOL,BOOL);
WINADVAPI BOOL WINAPI AddAuditAccessAceEx(PACL,DWORD,DWORD,DWORD,PSID,BOOL,BOOL);
+WINADVAPI BOOL WINAPI AddMandatoryAce(PACL,DWORD,DWORD,DWORD,PSID);
WINBASEAPI VOID WINAPI AddRefActCtx(HANDLE);
WINBASEAPI PVOID WINAPI AddVectoredExceptionHandler(ULONG,PVECTORED_EXCEPTION_HANDLER);
WINADVAPI BOOL WINAPI AdjustTokenGroups(HANDLE,BOOL,PTOKEN_GROUPS,DWORD,PTOKEN_GROUPS,PDWORD);
diff --git a/include/winternl.h b/include/winternl.h
index f35091c..c104e6f 100644
--- a/include/winternl.h
+++ b/include/winternl.h
@@ -2405,6 +2405,7 @@ NTSYSAPI NTSTATUS WINAPI RtlAddAtomToAtomTable(RTL_ATOM_TABLE,const WCHAR*,RTL_
NTSYSAPI NTSTATUS WINAPI RtlAddAuditAccessAce(PACL,DWORD,DWORD,PSID,BOOL,BOOL);
NTSYSAPI NTSTATUS WINAPI RtlAddAuditAccessAceEx(PACL,DWORD,DWORD,DWORD,PSID,BOOL,BOOL);
NTSYSAPI NTSTATUS WINAPI RtlAddAuditAccessObjectAce(PACL,DWORD,DWORD,DWORD,GUID*,GUID*,PSID,BOOL,BOOL);
+NTSYSAPI NTSTATUS WINAPI RtlAddMandatoryAce(PACL,DWORD,DWORD,DWORD,DWORD,PSID);
NTSYSAPI void WINAPI RtlAddRefActivationContext(HANDLE);
NTSYSAPI PVOID WINAPI RtlAddVectoredExceptionHandler(ULONG,PVECTORED_EXCEPTION_HANDLER);
NTSYSAPI NTSTATUS WINAPI RtlAdjustPrivilege(ULONG,BOOLEAN,BOOLEAN,PBOOLEAN);
--
2.9.0

View File

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

View File

@@ -1,4 +1,4 @@
From cb383abcb7d36d739092a93c1f276895622b6806 Mon Sep 17 00:00:00 2001
From b4469d7a12637ef2b57df3f6aebbe65c9b52ef57 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Michael=20M=C3=BCller?= <michael@fds-team.de>
Date: Sun, 28 Aug 2016 21:56:41 +0200
Subject: advapi32: Implement GetExplicitEntriesFromAclW.
@@ -9,7 +9,7 @@ Subject: advapi32: Implement GetExplicitEntriesFromAclW.
2 files changed, 221 insertions(+), 2 deletions(-)
diff --git a/dlls/advapi32/security.c b/dlls/advapi32/security.c
index 92a1789..c60aa4e 100644
index 7e41c0a7361..ccd0bf64cab 100644
--- a/dlls/advapi32/security.c
+++ b/dlls/advapi32/security.c
@@ -4202,8 +4202,85 @@ DWORD WINAPI GetExplicitEntriesFromAclA( PACL pacl, PULONG pcCountOfExplicitEntr
@@ -101,7 +101,7 @@ index 92a1789..c60aa4e 100644
/******************************************************************************
diff --git a/dlls/advapi32/tests/security.c b/dlls/advapi32/tests/security.c
index cf104ab..2bcb108 100644
index c31dfbeace3..23cbff58117 100644
--- a/dlls/advapi32/tests/security.c
+++ b/dlls/advapi32/tests/security.c
@@ -133,6 +133,7 @@ static BOOL (WINAPI *pGetWindowsAccountDomainSid)(PSID,PSID,DWORD*);
@@ -120,8 +120,8 @@ index cf104ab..2bcb108 100644
myARGC = winetest_get_mainargs( &myARGV );
}
@@ -6378,6 +6380,145 @@ static void test_pseudo_tokens(void)
"Expected ERROR_NO_TOKEN, got %u\n", GetLastError());
@@ -6451,6 +6453,145 @@ static void test_maximum_allowed(void)
CloseHandle(handle);
}
+static void test_GetExplicitEntriesFromAclW(void)
@@ -266,12 +266,12 @@ index cf104ab..2bcb108 100644
START_TEST(security)
{
init();
@@ -6424,4 +6565,5 @@ START_TEST(security)
test_system_security_access();
@@ -6499,4 +6640,5 @@ START_TEST(security)
test_GetSidIdentifierAuthority();
test_pseudo_tokens();
test_maximum_allowed();
+ test_GetExplicitEntriesFromAclW();
}
--
2.9.0
2.11.0

View File

@@ -1,61 +0,0 @@
From bb079b53bc79d44987d5f7ac93d0e1d2c5b00698 Mon Sep 17 00:00:00 2001
From: Austin English <austinenglish@gmail.com>
Date: Wed, 9 Nov 2016 21:46:10 -0600
Subject: advapi32: add LookupSecurityDescriptorPartsA/W stubs
Fixes https://bugs.winehq.org/show_bug.cgi?id=41682
---
dlls/advapi32/advapi32.spec | 4 ++--
dlls/advapi32/security.c | 24 ++++++++++++++++++++++++
2 files changed, 26 insertions(+), 2 deletions(-)
diff --git a/dlls/advapi32/advapi32.spec b/dlls/advapi32/advapi32.spec
index 6c57c88adf7..88d8634ef64 100644
--- a/dlls/advapi32/advapi32.spec
+++ b/dlls/advapi32/advapi32.spec
@@ -415,8 +415,8 @@
@ stdcall LookupPrivilegeNameW(wstr ptr ptr ptr)
@ stdcall LookupPrivilegeValueA(ptr ptr ptr)
@ stdcall LookupPrivilegeValueW(ptr ptr ptr)
-# @ stub LookupSecurityDescriptorPartsA
-# @ stub LookupSecurityDescriptorPartsW
+@ stdcall LookupSecurityDescriptorPartsA(ptr ptr ptr ptr ptr ptr ptr)
+@ stdcall LookupSecurityDescriptorPartsW(ptr ptr ptr ptr ptr ptr ptr)
@ stdcall LsaAddAccountRights(ptr ptr ptr long)
@ stub LsaAddPrivilegesToAccount
# @ stub LsaClearAuditLog
diff --git a/dlls/advapi32/security.c b/dlls/advapi32/security.c
index 3b5d7a42b6f..01e8ea02706 100644
--- a/dlls/advapi32/security.c
+++ b/dlls/advapi32/security.c
@@ -6199,3 +6199,27 @@ BOOL WINAPI SaferSetLevelInformation(SAFER_LEVEL_HANDLE handle, SAFER_OBJECT_INF
FIXME("(%p %u %p %u) stub\n", handle, infotype, buffer, size);
return FALSE;
}
+
+/******************************************************************************
+ * LookupSecurityDescriptorPartsA [ADVAPI32.@]
+ */
+DWORD WINAPI LookupSecurityDescriptorPartsA(TRUSTEEA *owner, TRUSTEEA *group, ULONG *access_count,
+ EXPLICIT_ACCESSA *access_list, ULONG *audit_count,
+ EXPLICIT_ACCESSA *audit_list, SECURITY_DESCRIPTOR *descriptor)
+{
+ FIXME("(%p %p %p %p %p %p %p) stub\n", owner, group, access_count,
+ access_list, audit_count, audit_list, descriptor);
+ return ERROR_CALL_NOT_IMPLEMENTED;
+}
+
+/******************************************************************************
+ * LookupSecurityDescriptorPartsW [ADVAPI32.@]
+ */
+DWORD WINAPI LookupSecurityDescriptorPartsW(TRUSTEEW *owner, TRUSTEEW *group, ULONG *access_count,
+ EXPLICIT_ACCESSW *access_list, ULONG *audit_count,
+ EXPLICIT_ACCESSW *audit_list, SECURITY_DESCRIPTOR *descriptor)
+{
+ FIXME("(%p %p %p %p %p %p %p) stub\n", owner, group, access_count,
+ access_list, audit_count, audit_list, descriptor);
+ return ERROR_CALL_NOT_IMPLEMENTED;
+}
--
2.11.0

View File

@@ -1 +0,0 @@
Fixes: [41682] Add stub for advapi32.LookupSecurityDescriptorPartsA/W

View File

@@ -1,65 +0,0 @@
From 97744349e9a23aa024910d87a89bd94652db4914 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Michael=20M=C3=BCller?= <michael@fds-team.de>
Date: Fri, 15 Jan 2016 13:07:09 +0100
Subject: api-ms-win-core-quirks-l1-1-0: Add dll.
---
configure.ac | 1 +
dlls/api-ms-win-core-quirks-l1-1-0/Makefile.in | 1 +
.../api-ms-win-core-quirks-l1-1-0.spec | 8 ++++++++
tools/make_specfiles | 4 ++++
4 files changed, 14 insertions(+)
create mode 100644 dlls/api-ms-win-core-quirks-l1-1-0/Makefile.in
create mode 100644 dlls/api-ms-win-core-quirks-l1-1-0/api-ms-win-core-quirks-l1-1-0.spec
diff --git a/configure.ac b/configure.ac
index 84316f9..e826dd0 100644
--- a/configure.ac
+++ b/configure.ac
@@ -2720,6 +2720,7 @@ WINE_CONFIG_DLL(api-ms-win-core-processthreads-l1-1-2)
WINE_CONFIG_DLL(api-ms-win-core-profile-l1-1-0)
WINE_CONFIG_DLL(api-ms-win-core-psapi-l1-1-0)
WINE_CONFIG_DLL(api-ms-win-core-psapi-obsolete-l1-1-0)
+WINE_CONFIG_DLL(api-ms-win-core-quirks-l1-1-0)
WINE_CONFIG_DLL(api-ms-win-core-realtime-l1-1-0)
WINE_CONFIG_DLL(api-ms-win-core-registry-l1-1-0)
WINE_CONFIG_DLL(api-ms-win-core-registryuserspecific-l1-1-0)
diff --git a/dlls/api-ms-win-core-quirks-l1-1-0/Makefile.in b/dlls/api-ms-win-core-quirks-l1-1-0/Makefile.in
new file mode 100644
index 0000000..9486e8b
--- /dev/null
+++ b/dlls/api-ms-win-core-quirks-l1-1-0/Makefile.in
@@ -0,0 +1 @@
+MODULE = api-ms-win-core-quirks-l1-1-0.dll
diff --git a/dlls/api-ms-win-core-quirks-l1-1-0/api-ms-win-core-quirks-l1-1-0.spec b/dlls/api-ms-win-core-quirks-l1-1-0/api-ms-win-core-quirks-l1-1-0.spec
new file mode 100644
index 0000000..54ce373
--- /dev/null
+++ b/dlls/api-ms-win-core-quirks-l1-1-0/api-ms-win-core-quirks-l1-1-0.spec
@@ -0,0 +1,8 @@
+@ stub QuirkGetData
+@ stub QuirkGetData2
+@ stdcall QuirkIsEnabled(ptr) kernelbase.QuirkIsEnabled
+@ stub QuirkIsEnabled2
+@ stub QuirkIsEnabled3
+@ stub QuirkIsEnabledForPackage
+@ stub QuirkIsEnabledForPackage2
+@ stub QuirkIsEnabledForProcess
diff --git a/tools/make_specfiles b/tools/make_specfiles
index eba8548..609f7a0 100755
--- a/tools/make_specfiles
+++ b/tools/make_specfiles
@@ -239,6 +239,10 @@ my @dll_groups =
"api-ms-win-core-bem-l1-1-0",
],
[
+ "kernelbase",
+ "api-ms-win-core-quirks-l1-1-0",
+ ],
+ [
"ole32",
"api-ms-win-downlevel-ole32-l1-1-0",
"api-ms-win-core-com-l1-1-0",
--
2.9.0

View File

@@ -1,58 +0,0 @@
From d0688788458f243ccef2c337d7ab8f59ead75a3b Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Michael=20M=C3=BCller?= <michael@fds-team.de>
Date: Thu, 4 Feb 2016 06:19:57 +0100
Subject: kernelbase: Add stub for QuirkIsEnabled3.
---
.../api-ms-win-core-quirks-l1-1-0.spec | 2 +-
dlls/kernelbase/kernelbase.spec | 2 +-
dlls/kernelbase/misc.c | 10 ++++++++++
3 files changed, 12 insertions(+), 2 deletions(-)
diff --git a/dlls/api-ms-win-core-quirks-l1-1-0/api-ms-win-core-quirks-l1-1-0.spec b/dlls/api-ms-win-core-quirks-l1-1-0/api-ms-win-core-quirks-l1-1-0.spec
index 54ce373..1485512 100644
--- a/dlls/api-ms-win-core-quirks-l1-1-0/api-ms-win-core-quirks-l1-1-0.spec
+++ b/dlls/api-ms-win-core-quirks-l1-1-0/api-ms-win-core-quirks-l1-1-0.spec
@@ -2,7 +2,7 @@
@ stub QuirkGetData2
@ stdcall QuirkIsEnabled(ptr) kernelbase.QuirkIsEnabled
@ stub QuirkIsEnabled2
-@ stub QuirkIsEnabled3
+@ stdcall QuirkIsEnabled3(ptr ptr) kernelbase.QuirkIsEnabled3
@ stub QuirkIsEnabledForPackage
@ stub QuirkIsEnabledForPackage2
@ stub QuirkIsEnabledForProcess
diff --git a/dlls/kernelbase/kernelbase.spec b/dlls/kernelbase/kernelbase.spec
index 8fdb80d..c0b2594 100644
--- a/dlls/kernelbase/kernelbase.spec
+++ b/dlls/kernelbase/kernelbase.spec
@@ -1189,7 +1189,7 @@
@ stub QuirkGetData2
@ stdcall QuirkIsEnabled(ptr)
@ stub QuirkIsEnabled2
-@ stub QuirkIsEnabled3
+@ stdcall QuirkIsEnabled3(ptr ptr)
@ stub QuirkIsEnabledForPackage
@ stub QuirkIsEnabledForPackage2
@ stub QuirkIsEnabledForPackage3
diff --git a/dlls/kernelbase/misc.c b/dlls/kernelbase/misc.c
index be1591a..e703e6d 100644
--- a/dlls/kernelbase/misc.c
+++ b/dlls/kernelbase/misc.c
@@ -35,3 +35,13 @@ BOOL WINAPI QuirkIsEnabled(void *arg)
FIXME("(%p): stub\n", arg);
return FALSE;
}
+
+/***********************************************************************
+ * QuirkIsEnabled3 (KERNELBASE.@)
+ */
+BOOL WINAPI QuirkIsEnabled3(void *arg1, void *arg2)
+{
+ static int once;
+ if (!once++) FIXME("(%p, %p): stub\n", arg1, arg2);
+ return FALSE;
+}
--
2.7.1

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