Compare commits

..

165 Commits

Author SHA1 Message Date
Alistair Leslie-Hughes
b1066c7064 Release 4.0-rc3 2018-12-22 14:09:01 +11:00
Alistair Leslie-Hughes
b636153ec4 Added mf-MFCreateSequencerSource patchset 2018-12-21 08:56:45 +11:00
Alistair Leslie-Hughes
f8064b4dbe Rebase against f6896e062d30d6d5d6d94a34e3a622c83aa9d3f1 2018-12-21 08:16:38 +11:00
Zebediah Figura
b7a4aade29 user32-minimized_windows: Add patch set. 2018-12-20 12:40:39 -06:00
Alistair Leslie-Hughes
9e8d000f35 Rebase against 5a8e430b96ab429a85f82f26ba9d2de4729954c2 2018-12-18 11:02:25 +11:00
Alistair Leslie-Hughes
42b756066b Added winex11-ime-check-thread-data patchset 2018-12-18 08:44:19 +11:00
Alistair Leslie-Hughes
ee381d1ad0 Added imm32-message_on_focus patchset 2018-12-18 08:37:38 +11:00
Alistair Leslie-Hughes
9a858d4f4c Added wined3d-WINED3D_TEXF_ANISOTROPIC patchset 2018-12-17 16:26:32 +11:00
Alistair Leslie-Hughes
3878c8eb1b Updated uianimation-stubs patchset 2018-12-17 16:10:10 +11:00
Alistair Leslie-Hughes
5020088406 Added mfplat-MFGetSystemTime patchset 2018-12-17 11:36:45 +11:00
Alistair Leslie-Hughes
c119ae9eeb Release v4.0rc2 2018-12-16 13:15:30 +11:00
Zebediah Figura
476caa4a5f ucrtbase-_o_: Add patch set. 2018-12-15 10:15:17 -06:00
Zebediah Figura
9982d2e0ee dwmapi-DwmGetTransportAttributes: Add patch set. 2018-12-15 10:10:07 -06:00
Zebediah Figura
2b2bf8ac06 user32-dialog_focus: Update patch. 2018-12-15 09:49:32 -06:00
Zebediah Figura
088524a29e newupdate.py: Fix path. 2018-12-15 09:46:36 -06:00
Zebediah Figura
31d525e567 newupdate.py: Also regenerate patchinstall.sh. 2018-12-13 19:03:58 -06:00
Zebediah Figura
7d26828643 krnl386.exe16-_lclose16: Remove.
This was fixed by 414c73feabb6d33be969f3927f8b3e8a8075bcd4.
2018-12-13 18:58:44 -06:00
Alistair Leslie-Hughes
3dc3c4e0e2 Updated winex11-key_translation patchset
Fixed Russian layout.
2018-12-13 08:41:49 +11:00
Alistair Leslie-Hughes
154875b4e9 Remove dinput-map_dik_codes patchset
This was pointed out this patchset isn't required.
The right approach is the correctly map the keyboard correctly
eg. winex11-key_translation patchset
2018-12-13 08:37:37 +11:00
Alistair Leslie-Hughes
66148cb9b2 Updated wintab32-improvements patchset 2018-12-11 13:43:44 +11:00
Alistair Leslie-Hughes
cfbf5f7b86 Added winex11-key_translation patchset 2018-12-11 13:43:44 +11:00
Alistair Leslie-Hughes
6f1b2ab35a Added dinput-map_dik_codes patchset 2018-12-11 13:43:44 +11:00
Zebediah Figura
550e67b8a2 Rebase against 76bc23d8c6c1b2857cb7a4d14c5931094a12a82a. 2018-12-10 19:53:30 -06:00
Zebediah Figura
e45211698d wow64cpu-Wow64Transition: Load wow64cpu.dll after kernel32.dll.
Fixes bug 46251.
2018-12-10 19:48:41 -06:00
Alistair Leslie-Hughes
6be0dfd008 Release 4.0-rc1 2018-12-08 16:35:46 +11:00
Zebediah Figura
0121326c5a user32-dialog_focus: Add patchset. 2018-12-07 19:59:29 -06:00
Zebediah Figura
4912f27424 Rebase against ae5e029d2227b3a8024f597591f76fe0f37d52e3. 2018-12-07 19:39:19 -06:00
Alistair Leslie-Hughes
7a69c317fc Rebase against 5cc5b102c1b0a66aa63b66f43f2da9a1a9d15ab6 2018-12-07 12:34:46 +11:00
Alistair Leslie-Hughes
c9b23fb803 Rebase against cda846b8cbc39c07ce360a6660a1c8b2e2aca24b 2018-12-06 09:17:51 +11:00
Alistair Leslie-Hughes
c214f34a3d Rebase against e9231beb865da13941d19eca016a6ccac07cb3f4. (try 2) 2018-12-05 13:45:00 +11:00
Zebediah Figura
08623c69c9 Rebase against e9231beb865da13941d19eca016a6ccac07cb3f4. 2018-12-04 20:17:06 -06:00
Alistair Leslie-Hughes
6fb7d85916 Rebase against 0cc6233e2077c1ef679ecb8bd815d31484868294 2018-12-04 09:08:05 +11:00
Alistair Leslie-Hughes
178c0f6d74 Added shell32-IconCache patchset 2018-12-03 09:00:11 +11:00
Alistair Leslie-Hughes
735aa272dc Updated ddraw-Rendering_Targets patchset 2018-12-03 08:44:13 +11:00
Alistair Leslie-Hughes
ce62e30ee2 Rebase against 400dd1596ab7946e68278b3f8dc7c87b898c7e9f try 2 2018-12-01 16:47:16 +11:00
Zebediah Figura
f828952b4b Rebase against 400dd1596ab7946e68278b3f8dc7c87b898c7e9f. 2018-11-30 20:00:04 -06:00
Alistair Leslie-Hughes
4e9b9940d2 Rebease against 20e5920135476cc4e380823a694537fca7fdf7e1 2018-11-30 08:57:39 +11:00
Alistair Leslie-Hughes
3fe5e9d97b Rebase against 1582ae6b045bb1658f6d5bc83efc5f6ce042c06e 2018-11-29 08:49:50 +11:00
Alistair Leslie-Hughes
d792ec8a45 Updated winepulse-PulseAudio_Support patchset 2018-11-28 09:20:45 +11:00
Alistair Leslie-Hughes
c30bad1531 Rebase against 00b08fad99745db326ef060627c3e9dc668a734a 2018-11-28 09:19:40 +11:00
Zebediah Figura
7d49250016 dwrite-FontFallback: Restore.
By request from Nikolay Sivov.
2018-11-26 19:23:08 -06:00
Zebediah Figura
52ea1ee7af qwave-QOSCreateHandle: Update spec file. 2018-11-26 19:13:16 -06:00
Zebediah Figura
bfff924f04 Rebase against 92f38bc8790cbfb31badf97a211ed890ac00c1db. 2018-11-26 18:45:43 -06:00
Zebediah Figura
c45c01449e staging: New rebase script.
Got tired of finding bugs in the old one and being completely confused by its code, so here is a new one.
It doesn't have a fancy progress bar, but at least it actually tells you what patches break.
2018-11-26 18:43:09 -06:00
Alistair Leslie-Hughes
e6e67f2aab Release v3.21 2018-11-25 18:23:27 +11:00
Zebediah Figura
0a0998b398 Rebase against ea9253d6d3c9bb60d98b0d917292fc0b4babb3dd. 2018-11-23 20:56:43 -06:00
Alistair Leslie-Hughes
d373c19f75 Added qwave-QOSCreateHandle patchset 2018-11-23 11:56:07 +11:00
Alistair Leslie-Hughes
e871a1020b Rebase against 0c5ce58505e24bf07cbd4c09752ef2f949d64fd0 2018-11-23 11:53:30 +11:00
Alistair Leslie-Hughes
a56cf4623e Updated ntdll-RtlAddGrowableFunctionTable patchset 2018-11-22 14:33:16 +11:00
Alistair Leslie-Hughes
fc28dc3e4c Updated bcrypt-BCryptGenerateKeyPair patchset 2018-11-22 12:15:42 +11:00
Alistair Leslie-Hughes
ff24c240c5 Updated kernel32-Processor_Group patchset 2018-11-22 12:15:42 +11:00
Alistair Leslie-Hughes
c6466b849b Updated advapi32-RegLoadAppKey patchset 2018-11-22 12:15:42 +11:00
Alistair Leslie-Hughes
ad768e05ba Updated bcrypt-BCryptDeriveKeyPBKDF2 patchset 2018-11-22 12:15:42 +11:00
Alistair Leslie-Hughes
c90f89fe90 Updated user32-GetPointerType patchset 2018-11-22 12:15:41 +11:00
Alistair Leslie-Hughes
2fdb980d1a Rebase against 55bcfea8f011c7f31df81a0f05f11a1d5c0d11b1 2018-11-22 10:23:20 +11:00
Alistair Leslie-Hughes
bd5aed0c57 Rebase against 488432317206bc816432af0dd740e18979e37e58 2018-11-21 09:16:20 +11:00
Alistair Leslie-Hughes
c6956ccbda Rebase against 63ef9854fb6fc91a8c956a9d91abc07e906a4a33 2018-11-20 19:21:50 +11:00
Alistair Leslie-Hughes
e89028830e Disabled wined3d-Improved-RCP_Support patchset
This is causing regression in WOW.
https://bugs.winehq.org/show_bug.cgi?id=46148
2018-11-20 08:48:26 +11:00
Alistair Leslie-Hughes
f215d139b4 Added atl-AtlAxDialogBox patchset 2018-11-19 10:22:39 +11:00
Alistair Leslie-Hughes
d4deb4faac Added ntdll-RtlAddGrowableFunctionTable patchset 2018-11-19 09:00:30 +11:00
Zebediah Figura
b8e292a69c Rebase against 2ef62f90853d9903cdded2442e382b89a4c3a55f. 2018-11-16 19:15:02 -06:00
Alistair Leslie-Hughes
3e1acbd286 Rebase against ad576b6965fe9ce695bbf91ac229b04459af02d3 2018-11-16 10:08:31 +11:00
Alistair Leslie-Hughes
73c60b9896 Updated server-Signal_Thread patchset 2018-11-16 08:19:20 +11:00
Zebediah Figura
9d04d98ec8 Rebase against d9c7d4147b569553bc97ef57c6200002fe81565e. 2018-11-14 23:14:57 -06:00
Alistair Leslie-Hughes
3e32c05e8f Rebase against ead7e637c0d18760acd446d686ad18526e76e0f0 2018-11-14 10:21:24 +11:00
Alistair Leslie-Hughes
461bcc1e5f Added advapi32-RegLoadAppKey patchset 2018-11-14 08:22:14 +11:00
Alistair Leslie-Hughes
9bf2a46f26 Added ntdll-Manifest_Range patchset 2018-11-14 08:22:14 +11:00
Alistair Leslie-Hughes
50917334e1 Added wmvcore-WMCreateSyncReaderPriv patchset 2018-11-14 08:22:14 +11:00
Alistair Leslie-Hughes
dffcd7e6d6 Added wmvcore-WMCheckURlExtension patchset 2018-11-14 08:22:14 +11:00
Alistair Leslie-Hughes
efd52500f7 Added virtdisk-OpenVirtualDisk patchset 2018-11-14 08:22:14 +11:00
Alistair Leslie-Hughes
2d29324070 Added d3dx9_36-D3DXMatrixTransformation patchset 2018-11-14 08:22:14 +11:00
Zebediah Figura
84f6fd6c09 Rebase against ebae298aa4d2711fef35d4ac60c6012438f36d61. 2018-11-12 17:18:12 -06:00
Alistair Leslie-Hughes
a1b38470f1 Release v20 2018-11-11 13:32:22 +11:00
Zebediah Figura
cc4e783b69 Rebase against e9e12bda62fee68e9fbac5849f7ad1e199ee38b7. 2018-11-09 15:46:03 -06:00
Alistair Leslie-Hughes
566cd55d62 Rebase against 5e0d1c89ed774e78d60709e5239d56927150d03d 2018-11-09 18:41:23 +11:00
Alistair Leslie-Hughes
b4524898d6 Added wined3d-Improved-RCP_Support patchset 2018-11-07 11:04:24 +11:00
Alistair Leslie-Hughes
31e20daca3 Rebase against 9629769fe7a6fee0e5adaafad3545516ef478461 2018-11-07 10:25:37 +11:00
Alistair Leslie-Hughes
e4a3b5fc9d Rebase against b618a6c6a73deb78fa4d823b805fe03b99621cfd
This also disables a single patch which is causing an assert in
user32: struct user_thread_info

xxx9-user32-Cache-the-result-of-GetForegroundWindow.patch
2018-11-06 12:29:57 +11:00
Alistair Leslie-Hughes
ec85f08e87 Updated definitions 2018-11-05 08:20:40 +11:00
Alistair Leslie-Hughes
ac5710e76d Rebase against 09a81b30f8ca458db22d73c33545f02fd510702a 2018-11-02 16:24:24 +11:00
Alistair Leslie-Hughes
a423a7087f Rebase against 3056f9beb95f66e598ab51d5d37b21a548b3e5f8 2018-11-01 10:22:09 +11:00
Zebediah Figura
6fc555874b Rebase against 3d5a2567977455d04e4896368a71db74e7b9074b. 2018-10-31 00:06:39 -05:00
Alistair Leslie-Hughes
b874b3656e Rebase against 853351698842c92db62bddedd2f531b7c5e745d1 2018-10-30 11:18:13 +11:00
Alistair Leslie-Hughes
5a85ab07af Release v3.19 2018-10-28 09:23:04 +11:00
Alistair Leslie-Hughes
4971d171bb Added shell32-SHGetStockIconInfo patchset 2018-10-28 08:07:29 +11:00
Alistair Leslie-Hughes
4f57895f06 Rebase against d279bc24934fd1b68324017ae1b9e70975640a0a 2018-10-27 17:54:53 +11:00
Alistair Leslie-Hughes
eb630f686f Rebase against 13cdcdae1a9e58f2eec9cd99b7b7f7899b4d111b 2018-10-26 08:23:40 +11:00
Alistair Leslie-Hughes
2802df41dc Added kernel32-NormalizeString patchset 2018-10-25 09:59:11 +11:00
Alistair Leslie-Hughes
f3f4f80a01 Rebase against 363326678cd2f473b6fcf3d141846fa79007837d 2018-10-25 08:43:57 +11:00
Alistair Leslie-Hughes
8710aa32b4 Rebase against 82dbf75dc064bb03b5dfc5d8a82b9782a7272ce2 2018-10-24 10:31:44 +11:00
Alistair Leslie-Hughes
f15b462860 Rebase against e52a20f5bf86d156e1130e8268c65e04032e8caa 2018-10-23 09:37:16 +11:00
Alistair Leslie-Hughes
616bf11236 Updated advapi32-Token_Integrity_Level patchset 2018-10-19 19:34:00 +11:00
Alistair Leslie-Hughes
20f1d05973 Rebase against 417e94f19936c738a274a2ae879fc6c17db113e1 2018-10-19 10:06:11 +11:00
Alistair Leslie-Hughes
8519a9eaf6 Remove deprecated Makefile 2018-10-17 11:22:54 +11:00
Alistair Leslie-Hughes
803ed475af Added xinput1_3-XInputSetState patchset 2018-10-17 10:25:14 +11:00
Alistair Leslie-Hughes
f5d03d51d3 Added hid-HidD_FlushQueue patchset 2018-10-17 10:24:14 +11:00
Alistair Leslie-Hughes
3d981b8d47 Rebase against e55aca8f498536af974a031c2e9a4d905de9a7cf 2018-10-17 09:54:05 +11:00
Alistair Leslie-Hughes
a804fed0f7 Rebase against a303f9cd101a06b7baf6302a90c8b3f6eb29a03c 2018-10-16 09:57:40 +11:00
Alistair Leslie-Hughes
ad4de04511 Updated browseui-Progress_Dialog patchset 2018-10-15 13:30:24 +11:00
Alistair Leslie-Hughes
a83917b70e Updated setupapi-SetupDiGetDeviceInterfaceDetail patchset 2018-10-15 12:18:07 +11:00
Alistair Leslie-Hughes
f4a4f3f5b7 Updated definition files 2018-10-15 11:20:53 +11:00
Alistair Leslie-Hughes
30dca36aeb Release v3.18 2018-10-13 20:11:22 +11:00
Alistair Leslie-Hughes
9556a78ab9 Added wined3d-Restore-DirectX10-Support patchset 2018-10-13 18:02:39 +11:00
Alistair Leslie-Hughes
b56e74f39d Added kernel32-Disable-GetQueuedCompletionStatusEx patchset 2018-10-13 18:01:42 +11:00
Alistair Leslie-Hughes
652a39caf1 Added user32-Implement-CascadeWindows patchset 2018-10-12 11:28:35 +11:00
Alistair Leslie-Hughes
6bb65ccf88 Rebase against b0c5a77e26c51f60b7d5e4df557f969a044b7fd4 2018-10-12 10:52:19 +11:00
Alistair Leslie-Hughes
4beed4a313 Rebase against 9f0534301321c9192c9e3a705b2bae84a2081745 2018-10-10 10:06:27 +11:00
Alistair Leslie-Hughes
5a2c1ea66d Updated README.md 2018-10-09 13:40:36 +11:00
Zebediah Figura
8dced4d4ac wined3d-mesa_texture_download: Add patch. 2018-10-08 16:19:25 -05:00
Zebediah Figura
15e36c54fc Rebase against cc4b28a99df649d2885c14fd28c2ad2f0c2abdad. 2018-10-08 16:16:28 -05:00
Alistair Leslie-Hughes
2de179532e Rebase against 2e754a652725c067bc44445cebe8b96487ec4a6e 2018-10-06 20:04:33 +10:00
Alistair Leslie-Hughes
f17ad5a016 Rebase against ee206a37609f99e9dc024dbe19d4a9b842433813 2018-10-05 09:06:15 +10:00
Alistair Leslie-Hughes
faf8498490 Added user32-GetPointerType patchset 2018-10-05 08:40:41 +10:00
Alistair Leslie-Hughes
9d20573c6e Added setupapi-CM_Request_Device_Eject patchset 2018-10-05 08:40:10 +10:00
Alistair Leslie-Hughes
be75db4704 Added user32-msgbox-Support-WM_COPY-mesg patchset 2018-10-05 08:08:48 +10:00
Alistair Leslie-Hughes
20a4649b84 Updated Compiler_Warnings patchset 2018-10-05 08:00:11 +10:00
Alistair Leslie-Hughes
1b1af92c85 Updated README.md 2018-10-03 14:00:07 +10:00
Alistair Leslie-Hughes
5cf1692e74 Rebase against c96eba60e347e9ce79f8b60e0fac9bf69c165ced 2018-10-03 13:55:21 +10:00
Alistair Leslie-Hughes
9146bbc3d4 Rebase against d8249c638c9e5bac2869c850d1449bddad01f404 2018-10-02 13:53:52 +10:00
Zebediah Figura
dc83f04f04 Release v3.17 2018-09-29 21:15:51 -05:00
Zebediah Figura
761ca063a0 Rebase against f11563c65fa50e2f8b7e39cade34bb7a998b26f7. 2018-09-28 16:57:12 -05:00
Zebediah Figura
732d40058d Rebase against d8f3f1b71726b793f2f9a86225a73a7d286e62b3. 2018-09-28 11:01:58 -05:00
Zebediah Figura
64561065d2 Rebase against dbaaee8e4d72b929e86c590a9e40c48ea86468c4. 2018-09-25 15:47:42 -05:00
Zebediah Figura
1bd95055a7 Rebase against 52fecef1a237368eee84ebc9b366107ee2509562. 2018-09-24 20:14:52 -05:00
Zebediah Figura
3f082c2d0a Rebase against b1a3b9e5ce74990777fca94658833802cb7b7a09. 2018-09-20 18:18:30 -05:00
Zebediah Figura
42312b1e3f Compiler_Warnings: Remove workarounds for older GCC version. 2018-09-19 16:52:37 -05:00
Zebediah Figura
a840ce50e7 ntoskrnl-Synchronization: Add patchset. 2018-09-18 21:31:16 -05:00
Zebediah Figura
912b650b76 Rebase against 93994dfc0b99789e3a9c1490b4d93082f34b8dcc. 2018-09-18 20:42:30 -05:00
Zebediah Figura
5ae728e2ec Rebase against 8a985174ebc1b041d9a4f1abbdc184fe692d25bf.
Also fix wined3d-Indexed_Vertex_Blending rebase, again.
2018-09-17 20:55:00 -05:00
Alistair Leslie-Hughes
9517e98320 Removed dsound-Revert_Cleanup patchset
This patchset appears not to correct anything and is just here
to make applying other patchsets easier.
2018-09-17 18:15:46 +10:00
Alistair Leslie-Hughes
bd3794c11e Removed opengl32-Revert_Disable_Ext patchset
All regression this was attempted to work around appear to be fixed.
Infact this is now causing a regression of its own
https://bugs.winehq.org/show_bug.cgi?id=45826
2018-09-17 18:15:46 +10:00
Alistair Leslie-Hughes
7cfceb78b2 Release v3.16 2018-09-15 20:05:19 +10:00
Zebediah Figura
1ee9d7c6e8 Rebase against 64d9f309b7f74d4154e685c5d1d78c1b8335c0bc. 2018-09-14 21:10:12 -05:00
Alistair Leslie-Hughes
5d3992d777 Rebase against 0799550075654094a3bed080aac722b9bea01307 2018-09-14 08:12:23 +10:00
Alistair Leslie-Hughes
d4710fd098 Added hnetcfg-NATUPnP patchset 2018-09-13 08:18:29 +10:00
Alistair Leslie-Hughes
6587db3575 Rebase against f274a198d21e5c89ea1dc6abdb5de5ad730c1233 2018-09-13 08:12:46 +10:00
Alistair Leslie-Hughes
8f0e72776f Rebase against b29cdbd5f23548d9631e5c98ec923b6d2d16a3f8 2018-09-12 08:28:34 +10:00
Zebediah Figura
6e0d8f18d9 Rebase against 18e2df401eb545f0ce490daaaf12a6c1c248119f. 2018-09-10 20:28:36 -05:00
Zebediah Figura
28e66e552f patchutils: Be less silent about patches that don't apply. 2018-09-10 19:32:35 -05:00
Zebediah Figura
3cc8f97398 Rebase against bfe8510ec0c7bcef0be1f6990c56ad235d8bccd6. 2018-09-07 18:44:22 -05:00
Alistair Leslie-Hughes
1cbabaac9d Rebase against d99f6821183ef16457f5cedb13289bc715d11f09 2018-09-06 08:51:44 +10:00
Alistair Leslie-Hughes
b9ae1089c7 Rebase against c4131f69d3b5fde9954cc11609e6f19196399d46 2018-09-05 07:49:07 +10:00
Alistair Leslie-Hughes
5a71716118 Rebase against 279ac253e5aa7132ec4960af175115befcdfefd0 2018-09-04 08:28:47 +10:00
Alistair Leslie-Hughes
214a0fd7bd Release v3.15 2018-09-02 13:05:52 +10:00
Zebediah Figura
94f314ccaa Rebase against 2346a4012aed5a150cd971ca1e929528722a4d12. 2018-08-31 19:16:27 -05:00
Alistair Leslie-Hughes
90c47aa854 Added winex11-mouse-movements patchset 2018-08-31 08:44:58 +10:00
Alistair Leslie-Hughes
51cfdc619e Rebase against a1e0a029b0ce80e6561e0656ae4530fb1a8d4316 2018-08-30 09:25:58 +10:00
Alistair Leslie-Hughes
d7154d5d3f Updated user32-Mouse_Message_Hwnd patchset 2018-08-28 22:13:18 +10:00
Alistair Leslie-Hughes
412e20cd9a Updated mfplat-MFCreateSample patchset 2018-08-28 19:28:13 +10:00
Alistair Leslie-Hughes
a043977b12 Added mfplat-MFCreateMemoryBuffer patchset 2018-08-28 10:47:04 +10:00
Alistair Leslie-Hughes
b64814b44a Updated winepulse-PulseAudio_Support patchset 2018-08-28 09:31:25 +10:00
Alistair Leslie-Hughes
f3b9983a5e Updated mfplat-MFCreateMFByteStreamOnStream patchset 2018-08-28 09:25:28 +10:00
Alistair Leslie-Hughes
d205b5f8e9 Rebase against 96a6053feda4e16480c21d01b3688a8d38e5ad6d 2018-08-28 08:27:10 +10:00
Alistair Leslie-Hughes
ab69e65646 Added mfplat-MFCreateSample patchset 2018-08-27 10:10:10 +10:00
Alistair Leslie-Hughes
965002dc53 Added mfplat-MFCreateMFByteStreamOnStream patchset 2018-08-27 10:10:10 +10:00
Alistair Leslie-Hughes
a6eddc4c25 Added mfplat-MFTRegisterLocal patchset 2018-08-27 10:10:10 +10:00
Alistair Leslie-Hughes
7a9913e0a9 Added xaudio2_7-CreateFX-FXEcho patchset 2018-08-27 10:09:34 +10:00
Alistair Leslie-Hughes
e8ba49a434 Remove crypt32-ECDSA_Cert_Chains
These test are what remains of the origial patchset, and they
are very unlikly to upstreamed.
2018-08-27 09:02:58 +10:00
Zebediah Figura
3dcb983637 Rebase against 70fbfa2cb8198f86efa19eda91cf769056b7da2c. 2018-08-24 17:37:59 -05:00
Zebediah Figura
74e9c4f8ce Rebase against f0ad5b5c546d17b281aef13fde996cda08d0c14e. 2018-08-23 17:35:08 -05:00
Zebediah Figura
8ff32873d6 ntdll-RtlCreateUserThread: Fix ARM64 compile, for real this time. 2018-08-23 16:57:18 -05:00
Alistair Leslie-Hughes
9190e30a15 Rebase against 18564c76fc613f61a3e13b7497dde4b29b35194e 2018-08-23 09:25:39 +10:00
Alistair Leslie-Hughes
8cf0e5c285 Rebase against 83e481fee20bc5c6598e65f8295be1b3f11fb70b 2018-08-22 09:09:03 +10:00
Zebediah Figura
110a6f6016 Rebase against 8204d04b7fd416c1b6296708937e3c06e058809b. 2018-08-20 20:20:07 -05:00
Zebediah Figura
720db34b6e ntdll-RtlCreateUserThread: Fix compilation for ARM.
* Fix field dereferencing, should fix bug 45678.
* Don't use __syscall_ wrappers on architectures where syscall thunks aren't
  implemented. (Ideally we'd just redirect them, but it turns out that this
  is very hard to do with the current infrastructure.) This should fix bug
  45677.
2018-08-20 19:33:26 -05:00
359 changed files with 16545 additions and 15621 deletions

View File

@@ -22,7 +22,7 @@ parallel. If this is the case for your distribution, you will have to type
`/opt/wine-staging/bin/wine` instead of just `wine`. The same also applies for
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).
[usage instructions](https://wiki.winehq.org/Wine-Staging_Usage).
Building
--------
@@ -73,7 +73,7 @@ Before you proceed with the compilation, please make sure that you installed all
additional build dependencies required for the Wine Staging features you are
interested in (check output of `./configure`). More information about building
Wine Staging, optional build dependencies, and hints for packagers are collected
in our [Wiki](https://github.com/wine-compholio/wine-staging/wiki/Packaging).
in our [Wiki](https://wiki.winehq.org/Wine-Staging).
Contributing
------------

View File

@@ -0,0 +1,61 @@
From fc5c0462f64e0976d596bd726da4d7f0e4857384 Mon Sep 17 00:00:00 2001
From: Alistair Leslie-Hughes <leslie_alistair@hotmail.com>
Date: Wed, 19 Sep 2018 09:03:19 +1000
Subject: [PATCH] windowscodecs: Avoid implicit cast of interface pointer.
---
dlls/windowscodecs/info.c | 10 +++++-----
1 file changed, 5 insertions(+), 5 deletions(-)
diff --git a/dlls/windowscodecs/info.c b/dlls/windowscodecs/info.c
index 0a86266..8c81574 100644
--- a/dlls/windowscodecs/info.c
+++ b/dlls/windowscodecs/info.c
@@ -222,7 +222,7 @@ typedef struct {
static inline BitmapDecoderInfo *impl_from_IWICBitmapDecoderInfo(IWICBitmapDecoderInfo *iface)
{
- return CONTAINING_RECORD(iface, BitmapDecoderInfo, base.IWICComponentInfo_iface);
+ return CONTAINING_RECORD((IWICComponentInfo*)iface, BitmapDecoderInfo, base.IWICComponentInfo_iface);
}
static HRESULT WINAPI BitmapDecoderInfo_QueryInterface(IWICBitmapDecoderInfo *iface, REFIID iid,
@@ -713,7 +713,7 @@ typedef struct {
static inline BitmapEncoderInfo *impl_from_IWICBitmapEncoderInfo(IWICBitmapEncoderInfo *iface)
{
- return CONTAINING_RECORD(iface, BitmapEncoderInfo, base.IWICComponentInfo_iface);
+ return CONTAINING_RECORD((IWICComponentInfo*)iface, BitmapEncoderInfo, base.IWICComponentInfo_iface);
}
static HRESULT WINAPI BitmapEncoderInfo_QueryInterface(IWICBitmapEncoderInfo *iface, REFIID iid,
@@ -1005,7 +1005,7 @@ typedef struct {
static inline FormatConverterInfo *impl_from_IWICFormatConverterInfo(IWICFormatConverterInfo *iface)
{
- return CONTAINING_RECORD(iface, FormatConverterInfo, base.IWICComponentInfo_iface);
+ return CONTAINING_RECORD((IWICComponentInfo*)iface, FormatConverterInfo, base.IWICComponentInfo_iface);
}
static HRESULT WINAPI FormatConverterInfo_QueryInterface(IWICFormatConverterInfo *iface, REFIID iid,
@@ -1219,7 +1219,7 @@ typedef struct {
static inline PixelFormatInfo *impl_from_IWICPixelFormatInfo2(IWICPixelFormatInfo2 *iface)
{
- return CONTAINING_RECORD(iface, PixelFormatInfo, base.IWICComponentInfo_iface);
+ return CONTAINING_RECORD((IWICComponentInfo*)iface, PixelFormatInfo, base.IWICComponentInfo_iface);
}
static HRESULT WINAPI PixelFormatInfo_QueryInterface(IWICPixelFormatInfo2 *iface, REFIID iid,
@@ -1531,7 +1531,7 @@ static struct metadata_container *get_metadata_container(MetadataReaderInfo *inf
static inline MetadataReaderInfo *impl_from_IWICMetadataReaderInfo(IWICMetadataReaderInfo *iface)
{
- return CONTAINING_RECORD(iface, MetadataReaderInfo, base.IWICComponentInfo_iface);
+ return CONTAINING_RECORD((IWICComponentInfo*)iface, MetadataReaderInfo, base.IWICComponentInfo_iface);
}
static HRESULT WINAPI MetadataReaderInfo_QueryInterface(IWICMetadataReaderInfo *iface,
--
1.9.1

View File

@@ -1,24 +0,0 @@
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,67 +0,0 @@
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/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 c8a6a1fa5a8..0261d3708e6 100644
--- a/dlls/d3d9/tests/visual.c
+++ b/dlls/d3d9/tests/visual.c
@@ -12304,7 +12304,7 @@ static void yuv_layout_test(void)
IDirect3D9 *d3d;
D3DCOLOR color;
DWORD ref_color;
- BYTE *buf, *chroma_buf, *u_buf, *v_buf;
+ BYTE *buf, *chroma_buf, *u_buf = NULL, *v_buf = NULL;
UINT width = 20, height = 16;
IDirect3DDevice9 *device;
ULONG refcount;
diff --git a/dlls/netapi32/netapi32.c b/dlls/netapi32/netapi32.c
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
static NET_API_STATUS share_add( LMSTR servername, DWORD level, LPBYTE buf, LPDWORD parm_err )
{
char *server = NULL;
- unsigned char *info;
+ unsigned char *info = NULL;
NET_API_STATUS status;
if (servername && !(server = strdup_unixcp( servername ))) return ERROR_OUTOFMEMORY;
diff --git a/dlls/wined3d/glsl_shader.c b/dlls/wined3d/glsl_shader.c
index f96f48d97d1..8fe3318cd78 100644
--- a/dlls/wined3d/glsl_shader.c
+++ b/dlls/wined3d/glsl_shader.c
@@ -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;
+ struct list *ps_list = NULL, *vs_list = NULL;
WORD attribs_map;
struct wined3d_string_buffer *tmp_name;
diff --git a/tools/makedep.c b/tools/makedep.c
index 296356b0a57..5a2873b56f1 100644
--- a/tools/makedep.c
+++ b/tools/makedep.c
@@ -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;
- char *p, *end, *expand, *tmp;
+ char *p, *end, *expand, *tmp = NULL;
var = get_make_variable( make, name );
if (!var) return NULL;
--
2.13.1

View File

@@ -1,18 +1,34 @@
From 79ff79dba6d5c8008c53e4bcf5e38c3a54271091 Mon Sep 17 00:00:00 2001
From 2aeb3a9e57142c3f4ff86cb81b206bdbc146552d 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.
Subject: [PATCH] d2d1: Avoid implicit cast of interface pointer.
---
dlls/d2d1/brush.c | 8 ++++----
dlls/d2d1/geometry.c | 6 +++---
2 files changed, 7 insertions(+), 7 deletions(-)
dlls/d2d1/bitmap.c | 2 +-
dlls/d2d1/brush.c | 8 ++++----
dlls/d2d1/dc_render_target.c | 2 +-
dlls/d2d1/device.c | 2 +-
dlls/d2d1/geometry.c | 6 +++---
dlls/d2d1/hwnd_render_target.c | 2 +-
dlls/d2d1/state_block.c | 2 +-
7 files changed, 12 insertions(+), 12 deletions(-)
diff --git a/dlls/d2d1/bitmap.c b/dlls/d2d1/bitmap.c
index c0aef3c..8a4b517 100644
--- a/dlls/d2d1/bitmap.c
+++ b/dlls/d2d1/bitmap.c
@@ -626,5 +626,5 @@ struct d2d_bitmap *unsafe_impl_from_ID2D1Bitmap(ID2D1Bitmap *iface)
if (!iface)
return NULL;
assert(iface->lpVtbl == (ID2D1BitmapVtbl *)&d2d_bitmap_vtbl);
- return CONTAINING_RECORD(iface, struct d2d_bitmap, ID2D1Bitmap1_iface);
+ return CONTAINING_RECORD((ID2D1Bitmap1*)iface, struct d2d_bitmap, ID2D1Bitmap1_iface);
}
diff --git a/dlls/d2d1/brush.c b/dlls/d2d1/brush.c
index 7f4c7bbb763..30d25fec4b4 100644
index 9c73ae1..a748669 100644
--- a/dlls/d2d1/brush.c
+++ b/dlls/d2d1/brush.c
@@ -251,7 +251,7 @@ static void d2d_brush_init(struct d2d_brush *brush, ID2D1Factory *factory,
@@ -256,7 +256,7 @@ static void d2d_brush_init(struct d2d_brush *brush, ID2D1Factory *factory,
static inline struct d2d_brush *impl_from_ID2D1SolidColorBrush(ID2D1SolidColorBrush *iface)
{
@@ -21,7 +37,7 @@ index 7f4c7bbb763..30d25fec4b4 100644
}
static HRESULT STDMETHODCALLTYPE d2d_solid_color_brush_QueryInterface(ID2D1SolidColorBrush *iface,
@@ -394,7 +394,7 @@ HRESULT d2d_solid_color_brush_create(ID2D1Factory *factory, const D2D1_COLOR_F *
@@ -399,7 +399,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 +46,7 @@ index 7f4c7bbb763..30d25fec4b4 100644
}
static HRESULT STDMETHODCALLTYPE d2d_linear_gradient_brush_QueryInterface(ID2D1LinearGradientBrush *iface,
@@ -580,7 +580,7 @@ HRESULT d2d_linear_gradient_brush_create(ID2D1Factory *factory, const D2D1_LINEA
@@ -586,7 +586,7 @@ HRESULT d2d_linear_gradient_brush_create(ID2D1Factory *factory,
static inline struct d2d_brush *impl_from_ID2D1RadialGradientBrush(ID2D1RadialGradientBrush *iface)
{
@@ -39,20 +55,46 @@ index 7f4c7bbb763..30d25fec4b4 100644
}
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
@@ -818,7 +818,7 @@ HRESULT d2d_radial_gradient_brush_create(ID2D1Factory *factory,
static inline struct d2d_brush *impl_from_ID2D1BitmapBrush(ID2D1BitmapBrush *iface)
static inline struct d2d_brush *impl_from_ID2D1BitmapBrush1(ID2D1BitmapBrush1 *iface)
{
- return CONTAINING_RECORD(iface, struct d2d_brush, ID2D1Brush_iface);
+ return CONTAINING_RECORD((ID2D1Brush *)iface, struct d2d_brush, ID2D1Brush_iface);
}
static HRESULT STDMETHODCALLTYPE d2d_bitmap_brush_QueryInterface(ID2D1BitmapBrush *iface,
static HRESULT STDMETHODCALLTYPE d2d_bitmap_brush_QueryInterface(ID2D1BitmapBrush1 *iface,
diff --git a/dlls/d2d1/dc_render_target.c b/dlls/d2d1/dc_render_target.c
index b095008..6030826 100644
--- a/dlls/d2d1/dc_render_target.c
+++ b/dlls/d2d1/dc_render_target.c
@@ -26,7 +26,7 @@ WINE_DEFAULT_DEBUG_CHANNEL(d2d);
static inline struct d2d_dc_render_target *impl_from_IUnknown(IUnknown *iface)
{
- return CONTAINING_RECORD(iface, struct d2d_dc_render_target, ID2D1DCRenderTarget_iface);
+ return CONTAINING_RECORD((ID2D1DCRenderTarget*)iface, struct d2d_dc_render_target, ID2D1DCRenderTarget_iface);
}
static HRESULT d2d_dc_render_target_present(IUnknown *outer_unknown)
diff --git a/dlls/d2d1/device.c b/dlls/d2d1/device.c
index 45b2258..bf32c23 100644
--- a/dlls/d2d1/device.c
+++ b/dlls/d2d1/device.c
@@ -207,7 +207,7 @@ static inline struct d2d_device_context *impl_from_ID2D1DeviceContext(ID2D1Devic
static inline struct d2d_device_context *impl_from_ID2D1RenderTarget(ID2D1RenderTarget *iface)
{
- return CONTAINING_RECORD(iface, struct d2d_device_context, ID2D1DeviceContext_iface);
+ return CONTAINING_RECORD((ID2D1DeviceContext*)iface, struct d2d_device_context, ID2D1DeviceContext_iface);
}
static HRESULT STDMETHODCALLTYPE d2d_device_context_inner_QueryInterface(IUnknown *iface, REFIID iid, void **out)
diff --git a/dlls/d2d1/geometry.c b/dlls/d2d1/geometry.c
index a9588985642..b8457a9e1ea 100644
index 421ba2b..f8db51c 100644
--- a/dlls/d2d1/geometry.c
+++ b/dlls/d2d1/geometry.c
@@ -3024,7 +3024,7 @@ static const struct ID2D1GeometrySinkVtbl d2d_geometry_sink_vtbl =
@@ -2987,7 +2987,7 @@ static const struct ID2D1GeometrySinkVtbl d2d_geometry_sink_vtbl =
static inline struct d2d_geometry *impl_from_ID2D1PathGeometry(ID2D1PathGeometry *iface)
{
@@ -61,7 +103,7 @@ index a9588985642..b8457a9e1ea 100644
}
static HRESULT STDMETHODCALLTYPE d2d_path_geometry_QueryInterface(ID2D1PathGeometry *iface, REFIID iid, void **out)
@@ -3540,7 +3540,7 @@ void d2d_path_geometry_init(struct d2d_geometry *geometry, ID2D1Factory *factory
@@ -3503,7 +3503,7 @@ void d2d_path_geometry_init(struct d2d_geometry *geometry, ID2D1Factory *factory
static inline struct d2d_geometry *impl_from_ID2D1RectangleGeometry(ID2D1RectangleGeometry *iface)
{
@@ -70,7 +112,7 @@ index a9588985642..b8457a9e1ea 100644
}
static HRESULT STDMETHODCALLTYPE d2d_rectangle_geometry_QueryInterface(ID2D1RectangleGeometry *iface,
@@ -3876,7 +3876,7 @@ fail:
@@ -3838,7 +3838,7 @@ fail:
static inline struct d2d_geometry *impl_from_ID2D1TransformedGeometry(ID2D1TransformedGeometry *iface)
{
@@ -79,6 +121,30 @@ index a9588985642..b8457a9e1ea 100644
}
static HRESULT STDMETHODCALLTYPE d2d_transformed_geometry_QueryInterface(ID2D1TransformedGeometry *iface,
diff --git a/dlls/d2d1/hwnd_render_target.c b/dlls/d2d1/hwnd_render_target.c
index d0b9695..429561e 100644
--- a/dlls/d2d1/hwnd_render_target.c
+++ b/dlls/d2d1/hwnd_render_target.c
@@ -26,7 +26,7 @@ WINE_DEFAULT_DEBUG_CHANNEL(d2d);
static inline struct d2d_hwnd_render_target *impl_from_IUnknown(IUnknown *iface)
{
- return CONTAINING_RECORD(iface, struct d2d_hwnd_render_target, ID2D1HwndRenderTarget_iface);
+ return CONTAINING_RECORD((ID2D1HwndRenderTarget*)iface, struct d2d_hwnd_render_target, ID2D1HwndRenderTarget_iface);
}
static HRESULT d2d_hwnd_render_target_present(IUnknown *outer_unknown)
diff --git a/dlls/d2d1/state_block.c b/dlls/d2d1/state_block.c
index b15384e..4e7e34b 100644
--- a/dlls/d2d1/state_block.c
+++ b/dlls/d2d1/state_block.c
@@ -190,5 +190,5 @@ struct d2d_state_block *unsafe_impl_from_ID2D1DrawingStateBlock(ID2D1DrawingStat
if (!iface)
return NULL;
assert(iface->lpVtbl == (ID2D1DrawingStateBlockVtbl *)&d2d_state_block_vtbl);
- return CONTAINING_RECORD(iface, struct d2d_state_block, ID2D1DrawingStateBlock1_iface);
+ return CONTAINING_RECORD((ID2D1DrawingStateBlock1*)iface, struct d2d_state_block, ID2D1DrawingStateBlock1_iface);
}
--
2.14.1
1.9.1

View File

@@ -1,21 +0,0 @@
#
# This file is deprecated and will be deleted in the future.
# Please use patchinstall.sh instead, to apply the Wine Staging patches.
#
CURDIR ?= ${.CURDIR}
.PHONY: install
install:
@echo "WARNING: Using this Makefile is deprecated!" >&2
"$(CURDIR)/patchinstall.sh" DESTDIR="$(DESTDIR)" --all
.PHONY: install-git
install-git:
@echo "WARNING: Using this Makefile is deprecated!" >&2
"$(CURDIR)/patchinstall.sh" DESTDIR="$(DESTDIR)" --all --backend=git-am
.PHONY: series
series:
@echo "ERROR: Using this Makefile is deprecated!" >&2
@false

View File

@@ -1,25 +1,25 @@
From 2e1a505fedd43f0f03ba36e1a8413bf04f8afa83 Mon Sep 17 00:00:00 2001
From 05ca39b029f8f710ca53aeafc36384fd39fd6b89 Mon Sep 17 00:00:00 2001
From: Sebastian Lackner <sebastian@fds-team.de>
Date: Thu, 2 Oct 2014 19:53:46 +0200
Subject: winelib: Append '(Staging)' at the end of the version string.
Subject: [PATCH] winelib: Append '(Staging)' at the end of the version string.
---
libs/wine/Makefile.in | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/libs/wine/Makefile.in b/libs/wine/Makefile.in
index 1b7fea8..780be10 100644
index 4833eb5..3cfa4f4 100644
--- a/libs/wine/Makefile.in
+++ b/libs/wine/Makefile.in
@@ -112,7 +112,7 @@ libwine_LDFLAGS = $(LIBWINE_LDFLAGS)
@@ -31,7 +31,7 @@ libwine_LDFLAGS = $(LIBWINE_LDFLAGS)
libwine_DEPS = $(LIBWINE_DEPENDS)
version.c: dummy
- version=`(GIT_DIR=$(top_srcdir)/.git git describe HEAD 2>/dev/null || echo "wine-$(PACKAGE_VERSION)") | sed -n -e '$$s/\(.*\)/const char wine_build[] = "\1";/p'` && (echo $$version | cmp -s - $@) || echo $$version >$@ || ($(RM) $@ && exit 1)
+ version=`(GIT_DIR=$(top_srcdir)/.git git describe HEAD 2>/dev/null || echo "wine-$(PACKAGE_VERSION)") | sed -n -e '$$s/\(.*\)/const char wine_build[] = "\1 (Staging)";/p'` && (echo $$version | cmp -s - $@) || echo $$version >$@ || ($(RM) $@ && exit 1)
- version=`(GIT_DIR=$(top_srcdir)/.git git describe HEAD 2>/dev/null || echo "wine-$(PACKAGE_VERSION)") | sed -n -e '$$s/\(.*\)/const char wine_build[] = "\1";/p'` && (echo $$version | cmp -s - $@) || echo $$version >$@ || (rm -f $@ && exit 1)
+ version=`(GIT_DIR=$(top_srcdir)/.git git describe HEAD 2>/dev/null || echo "wine-$(PACKAGE_VERSION)") | sed -n -e '$$s/\(.*\)/const char wine_build[] = "\1 (Staging)";/p'` && (echo $$version | cmp -s - $@) || echo $$version >$@ || (rm -f $@ && exit 1)
dummy:
.PHONY: dummy
--
2.6.2
1.9.1

View File

@@ -1,28 +1,23 @@
From b4a2543264f9eb91fc259a81dea872eee3c14aba Mon Sep 17 00:00:00 2001
From 07ca5e888c3265c57c88ef1758e6c47fbea4fb07 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Michael=20M=C3=BCller?= <michael@fds-team.de>
Date: Sat, 27 Jun 2015 19:28:51 +0200
Subject: loader: Print library paths for --check-libs on Mac OS X.
---
loader/main.c | 27 ++++++++++++++++++++++++++-
1 file changed, 26 insertions(+), 1 deletion(-)
loader/main.c | 30 +++++++++++++++++++++++++++++-
1 file changed, 29 insertions(+), 1 deletion(-)
diff --git a/loader/main.c b/loader/main.c
index 44804e1..4d9126e 100644
index a2dc40c51c..1642fb0965 100644
--- a/loader/main.c
+++ b/loader/main.c
@@ -48,6 +48,7 @@
#include "main.h"
@@ -50,6 +50,30 @@
/* the preloader will set this variable */
const struct wine_preload_info *wine_main_preload_info = NULL;
#ifdef __APPLE__
+#ifdef __APPLE__
+#include <mach-o/dyld.h>
#ifndef __clang__
__asm__(".zerofill WINE_DOS, WINE_DOS, ___wine_dos, 0x40000000");
@@ -73,6 +74,26 @@ static inline void reserve_area( void *addr, size_t size )
wine_mmap_add_reserved_area( addr, size );
}
+
+static const char *get_macho_library_path( const char *libname )
+{
+ unsigned int path_len, libname_len = strlen( libname );
@@ -30,7 +25,7 @@ index 44804e1..4d9126e 100644
+
+ for (i = 0; i < count; i++)
+ {
+ const char *path = _dyld_get_image_name( i );
+ const char *path = _dyld_get_image_name( i );
+ if (!path) continue;
+
+ path_len = strlen( path );
@@ -42,11 +37,12 @@ index 44804e1..4d9126e 100644
+ }
+ return NULL;
+}
+#endif
+
#else /* __APPLE__ */
/* the preloader will set this variable */
@@ -181,7 +202,11 @@ static void check_command_line( int argc, char *argv[] )
/***********************************************************************
* check_command_line
*
@@ -146,7 +170,11 @@ static void check_command_line( int argc, char *argv[] )
else
#endif
{
@@ -60,5 +56,5 @@ index 44804e1..4d9126e 100644
wine_dlclose( lib_handle, NULL, 0 );
}
--
2.4.3
2.14.1

View File

@@ -1,2 +1 @@
Depends: server-Misc_ACL
Depends: server-CreateProcess_ACLs

View File

@@ -0,0 +1,125 @@
From 2b29014573fcb38388dd82e33fa16f67b1a43a8c Mon Sep 17 00:00:00 2001
From: Austin English <austinenglish@gmail.com>
Date: Sun, 23 Oct 2016 16:15:45 -0500
Subject: [PATCH] advapi32: Add RegLoadAppKeyA/RegLoadAppKeyW stubs
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=41591
Signed-off-by: Austin English <austinenglish@gmail.com>
---
dlls/advapi32/advapi32.spec | 4 ++--
dlls/advapi32/registry.c | 24 ++++++++++++++++++++++
.../api-ms-win-core-registry-l1-1-0.spec | 4 ++--
.../api-ms-win-downlevel-advapi32-l1-1-0.spec | 4 ++--
dlls/kernelbase/kernelbase.spec | 4 ++--
include/winreg.h | 3 +++
6 files changed, 35 insertions(+), 8 deletions(-)
diff --git a/dlls/advapi32/advapi32.spec b/dlls/advapi32/advapi32.spec
index e870a5d..042a523 100644
--- a/dlls/advapi32/advapi32.spec
+++ b/dlls/advapi32/advapi32.spec
@@ -648,8 +648,8 @@
@ stdcall RegGetKeySecurity(long long ptr ptr)
@ stdcall RegGetValueA(long str str long ptr ptr ptr)
@ stdcall RegGetValueW(long wstr wstr long ptr ptr ptr)
-# @ stub RegLoadAppKeyA
-# @ stub RegLoadAppKeyW
+@ stdcall RegLoadAppKeyA(str ptr long long long)
+@ stdcall RegLoadAppKeyW(wstr ptr long long long)
@ stdcall RegLoadKeyA(long str str)
@ stdcall RegLoadKeyW(long wstr wstr)
@ stdcall RegLoadMUIStringA(long str str long ptr long str)
diff --git a/dlls/advapi32/registry.c b/dlls/advapi32/registry.c
index 3018372..55df6de 100644
--- a/dlls/advapi32/registry.c
+++ b/dlls/advapi32/registry.c
@@ -3513,3 +3513,27 @@ LONG WINAPI RegDisableReflectionKey(HKEY base)
FIXME("%p: stub\n", base);
return ERROR_SUCCESS;
}
+
+/******************************************************************************
+ * RegLoadAppKeyA [ADVAPI32.@]
+ *
+ */
+LSTATUS WINAPI RegLoadAppKeyA(const char *file, HKEY *result, REGSAM sam, DWORD options, DWORD reserved)
+{
+ FIXME("%s %p %u %u %u: stub\n", wine_dbgstr_a(file), result, sam, options, reserved);
+
+ *result = (HKEY)0xbeefcafe;
+ return ERROR_SUCCESS;
+}
+
+/******************************************************************************
+ * RegLoadAppKeyW [ADVAPI32.@]
+ *
+ */
+LSTATUS WINAPI RegLoadAppKeyW(const WCHAR *file, HKEY *result, REGSAM sam, DWORD options, DWORD reserved)
+{
+ FIXME("%s %p %u %u %u: stub\n", wine_dbgstr_w(file), result, sam, options, reserved);
+
+ *result = (HKEY)0xbeefcafe;
+ return ERROR_SUCCESS;
+}
diff --git a/dlls/api-ms-win-core-registry-l1-1-0/api-ms-win-core-registry-l1-1-0.spec b/dlls/api-ms-win-core-registry-l1-1-0/api-ms-win-core-registry-l1-1-0.spec
index 7a48e3b..f81f027 100644
--- a/dlls/api-ms-win-core-registry-l1-1-0/api-ms-win-core-registry-l1-1-0.spec
+++ b/dlls/api-ms-win-core-registry-l1-1-0/api-ms-win-core-registry-l1-1-0.spec
@@ -17,8 +17,8 @@
@ stdcall RegGetKeySecurity(long long ptr ptr) advapi32.RegGetKeySecurity
@ stdcall RegGetValueA(long str str long ptr ptr ptr) advapi32.RegGetValueA
@ stdcall RegGetValueW(long wstr wstr long ptr ptr ptr) advapi32.RegGetValueW
-@ stub RegLoadAppKeyA
-@ stub RegLoadAppKeyW
+@ stdcall RegLoadAppKeyA(str ptr long long long) advapi32.RegLoadAppKeyA
+@ stdcall RegLoadAppKeyW(wstr ptr long long long) advapi32.RegLoadAppKeyW
@ stdcall RegLoadKeyA(long str str) advapi32.RegLoadKeyA
@ stdcall RegLoadKeyW(long wstr wstr) advapi32.RegLoadKeyW
@ stdcall RegLoadMUIStringA(long str str long ptr long str) advapi32.RegLoadMUIStringA
diff --git a/dlls/api-ms-win-downlevel-advapi32-l1-1-0/api-ms-win-downlevel-advapi32-l1-1-0.spec b/dlls/api-ms-win-downlevel-advapi32-l1-1-0/api-ms-win-downlevel-advapi32-l1-1-0.spec
index 5bdad41..b2dcc17 100644
--- a/dlls/api-ms-win-downlevel-advapi32-l1-1-0/api-ms-win-downlevel-advapi32-l1-1-0.spec
+++ b/dlls/api-ms-win-downlevel-advapi32-l1-1-0/api-ms-win-downlevel-advapi32-l1-1-0.spec
@@ -102,8 +102,8 @@
@ stdcall RegGetKeySecurity(long long ptr ptr) advapi32.RegGetKeySecurity
@ stdcall RegGetValueA(long str str long ptr ptr ptr) advapi32.RegGetValueA
@ stdcall RegGetValueW(long wstr wstr long ptr ptr ptr) advapi32.RegGetValueW
-@ stub RegLoadAppKeyA
-@ stub RegLoadAppKeyW
+@ stdcall RegLoadAppKeyA(str ptr long long long) advapi32.RegLoadAppKeyA
+@ stdcall RegLoadAppKeyW(wstr ptr long long long) advapi32.RegLoadAppKeyW
@ stdcall RegLoadKeyA(long str str) advapi32.RegLoadKeyA
@ stdcall RegLoadKeyW(long wstr wstr) advapi32.RegLoadKeyW
@ stdcall RegLoadMUIStringA(long str str long ptr long str) advapi32.RegLoadMUIStringA
diff --git a/dlls/kernelbase/kernelbase.spec b/dlls/kernelbase/kernelbase.spec
index 286dae0..c114622 100644
--- a/dlls/kernelbase/kernelbase.spec
+++ b/dlls/kernelbase/kernelbase.spec
@@ -1288,8 +1288,8 @@
# @ stub RegKrnResetAppKeyLoaded
# @ stub RegKrnSetDllHasThreadStateGlobal
# @ stub RegKrnSetTermsrvRegistryExtensionFlags
-# @ stub RegLoadAppKeyA
-# @ stub RegLoadAppKeyW
+@ stdcall RegLoadAppKeyA(str ptr long long long) advapi32.RegLoadAppKeyA
+@ stdcall RegLoadAppKeyW(wstr ptr long long long) advapi32.RegLoadAppKeyW
@ stdcall -private RegLoadKeyA(long str str) kernel32.RegLoadKeyA
@ stdcall -private RegLoadKeyW(long wstr wstr) kernel32.RegLoadKeyW
@ stdcall -private RegLoadMUIStringA(long str str long ptr long str) kernel32.RegLoadMUIStringA
diff --git a/include/winreg.h b/include/winreg.h
index 51e9f02..5656eec 100644
--- a/include/winreg.h
+++ b/include/winreg.h
@@ -133,6 +133,9 @@ WINADVAPI LSTATUS WINAPI RegGetKeySecurity(HKEY,SECURITY_INFORMATION,PSECURITY
WINADVAPI LSTATUS WINAPI RegGetValueA(HKEY,LPCSTR,LPCSTR,DWORD,LPDWORD,PVOID,LPDWORD);
WINADVAPI LSTATUS WINAPI RegGetValueW(HKEY,LPCWSTR,LPCWSTR,DWORD,LPDWORD,PVOID,LPDWORD);
#define RegGetValue WINELIB_NAME_AW(RegGetValue)
+WINADVAPI LSTATUS WINAPI RegLoadAppKeyA(const char*,HKEY*,REGSAM,DWORD,DWORD);
+WINADVAPI LSTATUS WINAPI RegLoadAppKeyW(const WCHAR*,HKEY*,REGSAM,DWORD,DWORD);
+#define RegLoadAppKey WINELIB_NAME_AW(RegLoadAppKey)
WINADVAPI LSTATUS WINAPI RegLoadKeyA(HKEY,LPCSTR,LPCSTR);
WINADVAPI LSTATUS WINAPI RegLoadKeyW(HKEY,LPCWSTR,LPCWSTR);
#define RegLoadKey WINELIB_NAME_AW(RegLoadKey)
--
1.9.1

View File

@@ -0,0 +1 @@
Fixes: [41591] advapi32: Add RegLoadAppKeyA/RegLoadAppKeyW stubs

View File

@@ -1,7 +1,7 @@
From 4b428e09733605affb987d369f56ec09d2525858 Mon Sep 17 00:00:00 2001
From c8dc0ec6406e8449b59c219ede2e9bd88d8a56fa Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Michael=20M=C3=BCller?= <michael@fds-team.de>
Date: Sat, 5 Aug 2017 00:26:03 +0200
Subject: server: Implement token elevation information.
Subject: [PATCH] server: Implement token elevation information.
---
dlls/ntdll/nt.c | 16 ++++++++++++----
@@ -10,10 +10,10 @@ Subject: server: Implement token elevation information.
3 files changed, 39 insertions(+), 7 deletions(-)
diff --git a/dlls/ntdll/nt.c b/dlls/ntdll/nt.c
index 5822dec9b15..dda6cabe1cf 100644
index cd271fde9c..b1dd999cf5 100644
--- a/dlls/ntdll/nt.c
+++ b/dlls/ntdll/nt.c
@@ -597,18 +597,26 @@ NTSTATUS WINAPI NtQueryInformationToken(
@@ -625,18 +625,26 @@ NTSTATUS WINAPI NtQueryInformationToken(
SERVER_END_REQ;
break;
case TokenElevationType:
@@ -45,10 +45,10 @@ index 5822dec9b15..dda6cabe1cf 100644
case TokenSessionId:
{
diff --git a/server/protocol.def b/server/protocol.def
index b3dce66eb9c..33f1d5f0ab8 100644
index 90af9df7f4..93afaabca1 100644
--- a/server/protocol.def
+++ b/server/protocol.def
@@ -3673,6 +3673,14 @@ struct handle_info
@@ -3643,6 +3643,14 @@ struct handle_info
@END
@@ -64,10 +64,10 @@ index b3dce66eb9c..33f1d5f0ab8 100644
@REQ(create_completion)
unsigned int access; /* desired access to a port */
diff --git a/server/token.c b/server/token.c
index 7ab0f634c05..6a1085bae12 100644
index 6d193603b4..64f20e1b57 100644
--- a/server/token.c
+++ b/server/token.c
@@ -126,6 +126,7 @@ struct token
@@ -112,6 +112,7 @@ struct token
ACL *default_dacl; /* the default DACL to assign to objects created by this user */
TOKEN_SOURCE source; /* source of the token */
int impersonation_level; /* impersonation level this token is capable of if non-primary token */
@@ -75,7 +75,7 @@ index 7ab0f634c05..6a1085bae12 100644
};
struct privilege
@@ -566,7 +567,7 @@ static struct token *create_token( unsigned primary, const SID *user,
@@ -545,7 +546,7 @@ static struct token *create_token( unsigned primary, const SID *user,
const LUID_AND_ATTRIBUTES *privs, unsigned int priv_count,
const ACL *default_dacl, TOKEN_SOURCE source,
const luid_t *modified_id,
@@ -84,7 +84,7 @@ index 7ab0f634c05..6a1085bae12 100644
{
struct token *token = alloc_object( &token_ops );
if (token)
@@ -588,6 +589,7 @@ static struct token *create_token( unsigned primary, const SID *user,
@@ -567,6 +568,7 @@ static struct token *create_token( unsigned primary, const SID *user,
token->impersonation_level = impersonation_level;
token->default_dacl = NULL;
token->primary_group = NULL;
@@ -92,7 +92,7 @@ index 7ab0f634c05..6a1085bae12 100644
/* copy user */
token->user = memdup( user, security_sid_len( user ));
@@ -700,7 +702,8 @@ struct token *token_duplicate( struct token *src_token, unsigned primary,
@@ -682,7 +684,8 @@ struct token *token_duplicate( struct token *src_token, unsigned primary,
token = create_token( primary, src_token->user, NULL, 0,
NULL, 0, src_token->default_dacl,
src_token->source, modified_id,
@@ -102,16 +102,16 @@ index 7ab0f634c05..6a1085bae12 100644
if (!token) return token;
/* copy groups */
@@ -904,7 +907,7 @@ struct token *token_create_admin( void )
@@ -888,7 +891,7 @@ struct token *token_create_admin( void )
static const TOKEN_SOURCE admin_source = {"SeMgr", {0, 0}};
token = create_token( TRUE, user_sid, admin_groups, sizeof(admin_groups)/sizeof(admin_groups[0]),
admin_privs, sizeof(admin_privs)/sizeof(admin_privs[0]), default_dacl,
token = create_token( TRUE, user_sid, admin_groups, ARRAY_SIZE( admin_groups ),
admin_privs, ARRAY_SIZE( admin_privs ), default_dacl,
- admin_source, NULL, -1 );
+ admin_source, NULL, -1, TokenElevationTypeFull );
/* we really need a primary group */
assert( token->primary_group );
}
@@ -1652,6 +1655,19 @@ DECL_HANDLER(get_token_statistics)
@@ -1627,6 +1630,19 @@ DECL_HANDLER(get_token_statistics)
}
}
@@ -132,5 +132,5 @@ index 7ab0f634c05..6a1085bae12 100644
{
struct token *token;
--
2.13.1
2.19.1

View File

@@ -1,4 +1,4 @@
From 971789f2af6149998e54382522569b3790309cf2 Mon Sep 17 00:00:00 2001
From ae503e8e7eb8f4fcb9bf3e642458c2a1bba6ccaa Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Michael=20M=C3=BCller?= <michael@fds-team.de>
Date: Mon, 7 Aug 2017 02:28:35 +0200
Subject: [PATCH] server: Implement token integrity level.
@@ -10,19 +10,19 @@ Subject: [PATCH] server: Implement token integrity level.
3 files changed, 48 insertions(+), 12 deletions(-)
diff --git a/dlls/ntdll/nt.c b/dlls/ntdll/nt.c
index 9e60196..59c6e49 100644
index ca26ab15..8aab0a48 100644
--- a/dlls/ntdll/nt.c
+++ b/dlls/ntdll/nt.c
@@ -340,7 +340,7 @@ NTSTATUS WINAPI NtQueryInformationToken(
@@ -400,7 +400,7 @@ NTSTATUS WINAPI NtQueryInformationToken(
0, /* TokenAccessInformation */
0, /* TokenVirtualizationAllowed */
0, /* TokenVirtualizationEnabled */
sizeof(DWORD), /* TokenVirtualizationEnabled */
- sizeof(TOKEN_MANDATORY_LABEL) + sizeof(SID), /* TokenIntegrityLevel [sizeof(SID) includes one SubAuthority] */
+ 0, /* TokenIntegrityLevel */
0, /* TokenUIAccess */
0, /* TokenMandatoryPolicy */
0, /* TokenLogonSid */
@@ -593,18 +593,23 @@ NTSTATUS WINAPI NtQueryInformationToken(
@@ -659,18 +659,23 @@ NTSTATUS WINAPI NtQueryInformationToken(
}
break;
case TokenIntegrityLevel:
@@ -55,10 +55,10 @@ index 9e60196..59c6e49 100644
case TokenAppContainerSid:
{
diff --git a/server/protocol.def b/server/protocol.def
index c961eaf..0bb04cd 100644
index 11221d7d..1bfe3234 100644
--- a/server/protocol.def
+++ b/server/protocol.def
@@ -3388,6 +3388,13 @@ enum caret_state
@@ -3405,6 +3405,13 @@ enum caret_state
VARARG(sid,SID); /* the sid specified by which_sid from the token */
@END
@@ -73,10 +73,10 @@ index c961eaf..0bb04cd 100644
obj_handle_t handle; /* handle to the token */
@REPLY
diff --git a/server/token.c b/server/token.c
index 355a523..1ed994a 100644
index ccde0c2d..2d81118a 100644
--- a/server/token.c
+++ b/server/token.c
@@ -112,6 +112,7 @@ struct token
@@ -113,6 +113,7 @@ struct token
TOKEN_SOURCE source; /* source of the token */
int impersonation_level; /* impersonation level this token is capable of if non-primary token */
TOKEN_ELEVATION_TYPE elevation; /* elevation level */
@@ -84,7 +84,7 @@ index 355a523..1ed994a 100644
};
struct privilege
@@ -544,7 +545,8 @@ static struct token *create_token( unsigned primary, const SID *user,
@@ -546,7 +547,8 @@ static struct token *create_token( unsigned primary, const SID *user,
const LUID_AND_ATTRIBUTES *privs, unsigned int priv_count,
const ACL *default_dacl, TOKEN_SOURCE source,
const luid_t *modified_id,
@@ -94,7 +94,7 @@ index 355a523..1ed994a 100644
{
struct token *token = alloc_object( &token_ops );
if (token)
@@ -625,6 +627,7 @@ static struct token *create_token( unsigned primary, const SID *user,
@@ -630,6 +632,7 @@ static struct token *create_token( unsigned primary, const SID *user,
}
token->source = source;
@@ -102,7 +102,7 @@ index 355a523..1ed994a 100644
}
return token;
}
@@ -680,7 +683,8 @@ struct token *token_duplicate( struct token *src_token, unsigned primary,
@@ -685,7 +688,8 @@ struct token *token_duplicate( struct token *src_token, unsigned primary,
NULL, 0, src_token->default_dacl,
src_token->source, modified_id,
impersonation_level,
@@ -112,16 +112,16 @@ index 355a523..1ed994a 100644
if (!token) return token;
/* copy groups */
@@ -884,7 +888,7 @@ struct token *token_create_admin( void )
@@ -890,7 +894,7 @@ struct token *token_create_admin( void )
static const TOKEN_SOURCE admin_source = {"SeMgr", {0, 0}};
token = create_token( TRUE, user_sid, admin_groups, sizeof(admin_groups)/sizeof(admin_groups[0]),
admin_privs, sizeof(admin_privs)/sizeof(admin_privs[0]), default_dacl,
token = create_token( TRUE, user_sid, admin_groups, ARRAY_SIZE( admin_groups ),
admin_privs, ARRAY_SIZE( admin_privs ), default_dacl,
- admin_source, NULL, -1, TokenElevationTypeFull );
+ admin_source, NULL, -1, TokenElevationTypeFull, &high_label_sid );
/* we really need a primary group */
assert( token->primary_group );
}
@@ -1530,6 +1534,26 @@ DECL_HANDLER(get_token_sid)
@@ -1524,6 +1528,26 @@ DECL_HANDLER(get_token_sid)
}
}
@@ -149,5 +149,5 @@ index 355a523..1ed994a 100644
DECL_HANDLER(get_token_groups)
{
--
1.9.1
2.19.1

View File

@@ -1,109 +0,0 @@
From 45713db2d90bd8833415ad2af1920cc792767535 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Michael=20M=C3=BCller?= <michael@fds-team.de>
Date: Sat, 5 Aug 2017 04:02:16 +0200
Subject: [PATCH] kernel32: Implement CreateProcessInternalW.
---
dlls/kernel32/kernel32.spec | 2 +-
dlls/kernel32/process.c | 24 ++++++++++++++----------
dlls/kernelbase/kernelbase.spec | 2 +-
include/winbase.h | 1 +
4 files changed, 17 insertions(+), 12 deletions(-)
diff --git a/dlls/kernel32/kernel32.spec b/dlls/kernel32/kernel32.spec
index de6f007..a3607d1 100644
--- a/dlls/kernel32/kernel32.spec
+++ b/dlls/kernel32/kernel32.spec
@@ -315,7 +315,7 @@
@ stdcall CreateProcessA(str str ptr ptr long long ptr str ptr ptr)
# @ stub CreateProcessAsUserW
# @ stub CreateProcessInternalA
-# @ stub CreateProcessInternalW
+@ stdcall CreateProcessInternalW(long wstr wstr ptr ptr long long ptr wstr ptr ptr ptr)
# @ stub CreateProcessInternalWSecure
@ stdcall CreateProcessW(wstr wstr ptr ptr long long ptr wstr ptr ptr)
@ stdcall CreateRemoteThread(long ptr long ptr long long ptr)
diff --git a/dlls/kernel32/process.c b/dlls/kernel32/process.c
index f568022..e270ca7 100644
--- a/dlls/kernel32/process.c
+++ b/dlls/kernel32/process.c
@@ -2438,12 +2438,13 @@ static LPWSTR get_file_name( LPCWSTR appname, LPWSTR cmdline, LPWSTR buffer,
return ret;
}
-
-/* Steam hotpatches CreateProcessA and W, so to prevent it from crashing use an internal function */
-static BOOL create_process_impl( LPCWSTR app_name, LPWSTR cmd_line, LPSECURITY_ATTRIBUTES process_attr,
- LPSECURITY_ATTRIBUTES thread_attr, BOOL inherit, DWORD flags,
- LPVOID env, LPCWSTR cur_dir, LPSTARTUPINFOW startup_info,
- LPPROCESS_INFORMATION info )
+/**********************************************************************
+ * CreateProcessInternalW (KERNEL32.@)
+ */
+BOOL WINAPI CreateProcessInternalW( HANDLE token, LPCWSTR app_name, LPWSTR cmd_line, LPSECURITY_ATTRIBUTES process_attr,
+ LPSECURITY_ATTRIBUTES thread_attr, BOOL inherit, DWORD flags,
+ LPVOID env, LPCWSTR cur_dir, LPSTARTUPINFOW startup_info,
+ LPPROCESS_INFORMATION info, HANDLE *new_token )
{
BOOL retv = FALSE;
HANDLE hFile = 0;
@@ -2456,6 +2457,9 @@ static BOOL create_process_impl( LPCWSTR app_name, LPWSTR cmd_line, LPSECURITY_A
TRACE("app %s cmdline %s\n", debugstr_w(app_name), debugstr_w(cmd_line) );
+ if (token) FIXME("Creating a process with a token is not yet implemented\n");
+ if (new_token) FIXME("No support for returning created process token\n");
+
if (!(tidy_cmdline = get_file_name( app_name, cmd_line, name, ARRAY_SIZE( name ),
&hFile, &binary_info )))
return FALSE;
@@ -2607,8 +2611,8 @@ BOOL WINAPI DECLSPEC_HOTPATCH CreateProcessA( LPCSTR app_name, LPSTR cmd_line, L
FIXME("StartupInfo.lpReserved is used, please report (%s)\n",
debugstr_a(startup_info->lpReserved));
- ret = create_process_impl( app_nameW, cmd_lineW, process_attr, thread_attr,
- inherit, flags, env, cur_dirW, &infoW, info );
+ ret = CreateProcessInternalW( NULL, app_nameW, cmd_lineW, process_attr, thread_attr,
+ inherit, flags, env, cur_dirW, &infoW, info, NULL );
done:
HeapFree( GetProcessHeap(), 0, app_nameW );
HeapFree( GetProcessHeap(), 0, cmd_lineW );
@@ -2627,8 +2631,8 @@ BOOL WINAPI DECLSPEC_HOTPATCH CreateProcessW( LPCWSTR app_name, LPWSTR cmd_line,
LPVOID env, LPCWSTR cur_dir, LPSTARTUPINFOW startup_info,
LPPROCESS_INFORMATION info )
{
- return create_process_impl( app_name, cmd_line, process_attr, thread_attr,
- inherit, flags, env, cur_dir, startup_info, info);
+ return CreateProcessInternalW( NULL, app_name, cmd_line, process_attr, thread_attr,
+ inherit, flags, env, cur_dir, startup_info, info, NULL);
}
diff --git a/dlls/kernelbase/kernelbase.spec b/dlls/kernelbase/kernelbase.spec
index fb7fafe..9d6c5f9 100644
--- a/dlls/kernelbase/kernelbase.spec
+++ b/dlls/kernelbase/kernelbase.spec
@@ -209,7 +209,7 @@
@ stdcall CreateProcessAsUserA(long str str ptr ptr long long ptr str ptr ptr) advapi32.CreateProcessAsUserA
@ stdcall CreateProcessAsUserW(long wstr wstr ptr ptr long long ptr wstr ptr ptr) advapi32.CreateProcessAsUserW
# @ stub CreateProcessInternalA
-# @ stub CreateProcessInternalW
+@ stdcall CreateProcessInternalW(long wstr wstr ptr ptr long long ptr wstr ptr ptr ptr) kernel32.CreateProcessInternalW
@ stdcall CreateProcessW(wstr wstr ptr ptr long long ptr wstr ptr ptr) kernel32.CreateProcessW
@ stdcall CreateRemoteThread(long ptr long ptr long long ptr) kernel32.CreateRemoteThread
@ stdcall CreateRemoteThreadEx(long ptr long ptr ptr long ptr ptr) kernel32.CreateRemoteThreadEx
diff --git a/include/winbase.h b/include/winbase.h
index 667df96..b77bced 100644
--- a/include/winbase.h
+++ b/include/winbase.h
@@ -1856,6 +1856,7 @@ WINBASEAPI BOOL WINAPI CreateProcessW(LPCWSTR,LPWSTR,LPSECURITY_ATTRIBUTE
WINADVAPI BOOL WINAPI CreateProcessAsUserA(HANDLE,LPCSTR,LPSTR,LPSECURITY_ATTRIBUTES,LPSECURITY_ATTRIBUTES,BOOL,DWORD,LPVOID,LPCSTR,LPSTARTUPINFOA,LPPROCESS_INFORMATION);
WINADVAPI BOOL WINAPI CreateProcessAsUserW(HANDLE,LPCWSTR,LPWSTR,LPSECURITY_ATTRIBUTES,LPSECURITY_ATTRIBUTES,BOOL,DWORD,LPVOID,LPCWSTR,LPSTARTUPINFOW,LPPROCESS_INFORMATION);
#define CreateProcessAsUser WINELIB_NAME_AW(CreateProcessAsUser)
+WINBASEAPI BOOL WINAPI CreateProcessInternalW(HANDLE,LPCWSTR,LPWSTR,LPSECURITY_ATTRIBUTES,LPSECURITY_ATTRIBUTES,BOOL,DWORD,LPVOID,LPCWSTR,LPSTARTUPINFOW,LPPROCESS_INFORMATION,HANDLE*);
WINADVAPI BOOL WINAPI CreateProcessWithLogonW(LPCWSTR,LPCWSTR,LPCWSTR,DWORD,LPCWSTR,LPWSTR,DWORD,LPVOID,LPCWSTR,LPSTARTUPINFOW,LPPROCESS_INFORMATION);
WINBASEAPI HANDLE WINAPI CreateRemoteThread(HANDLE,LPSECURITY_ATTRIBUTES,SIZE_T,LPTHREAD_START_ROUTINE,LPVOID,DWORD,LPDWORD);
WINBASEAPI HANDLE WINAPI CreateRemoteThreadEx(HANDLE,LPSECURITY_ATTRIBUTES,SIZE_T,LPTHREAD_START_ROUTINE,LPVOID,DWORD,LPPROC_THREAD_ATTRIBUTE_LIST,LPDWORD);
--
1.9.1

View File

@@ -1,79 +1,80 @@
From b534f2d905c3ba205c9a4f895149e6be8425b31e Mon Sep 17 00:00:00 2001
From e571cdf9236e083f196c09d0fc96ed7c98fae440 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Michael=20M=C3=BCller?= <michael@fds-team.de>
Date: Sun, 6 Aug 2017 02:08:05 +0200
Subject: [PATCH] server: Implement support for creating processes using a
token.
---
dlls/kernel32/process.c | 33 ++++++++++++++++++---------------
server/process.c | 29 +++++++++++++++++++++++++----
dlls/kernel32/process.c | 27 +++++++++++++++------------
server/process.c | 39 +++++++++++++++++++++++++++++++++++----
server/process.h | 2 +-
server/protocol.def | 1 +
server/request.c | 2 +-
server/security.h | 2 ++
server/token.c | 11 +++++++++++
7 files changed, 59 insertions(+), 21 deletions(-)
7 files changed, 66 insertions(+), 18 deletions(-)
diff --git a/dlls/kernel32/process.c b/dlls/kernel32/process.c
index e270ca7..633065b 100644
index bb6cc3e..7b202db 100644
--- a/dlls/kernel32/process.c
+++ b/dlls/kernel32/process.c
@@ -2036,7 +2036,7 @@ static NTSTATUS create_struct_sd(PSECURITY_DESCRIPTOR nt_sd, struct security_des
@@ -2289,7 +2289,7 @@ static BOOL replace_process( HANDLE handle, const RTL_USER_PROCESS_PARAMETERS *p
* Create a new process. If hFile is a valid handle we have an exe
* file, otherwise it is a Winelib app.
*/
-static BOOL create_process( HANDLE hFile, LPCWSTR filename, LPWSTR cmd_line, LPWSTR env,
+static BOOL create_process( HANDLE token, HANDLE hFile, LPCWSTR filename, LPWSTR cmd_line, LPWSTR env,
LPCWSTR cur_dir, LPSECURITY_ATTRIBUTES psa, LPSECURITY_ATTRIBUTES tsa,
BOOL inherit, DWORD flags, LPSTARTUPINFOW startup,
LPPROCESS_INFORMATION info, LPCSTR unixdir,
@@ -2182,6 +2182,7 @@ static BOOL create_process( HANDLE hFile, LPCWSTR filename, LPWSTR cmd_line, LPW
-static BOOL create_process( HANDLE hFile, LPSECURITY_ATTRIBUTES psa, LPSECURITY_ATTRIBUTES tsa,
+static BOOL create_process( HANDLE token, HANDLE hFile, LPSECURITY_ATTRIBUTES psa, LPSECURITY_ATTRIBUTES tsa,
BOOL inherit, DWORD flags, const RTL_USER_PROCESS_PARAMETERS *params,
LPPROCESS_INFORMATION info, LPCSTR unixdir, const pe_image_info_t *pe_info )
{
@@ -2356,6 +2356,7 @@ static BOOL create_process( HANDLE hFile, LPSECURITY_ATTRIBUTES psa, LPSECURITY_
req->access = PROCESS_ALL_ACCESS;
req->cpu = pe_info->cpu;
req->info_size = startup_info_size;
req->env_size = (env_end - env) * sizeof(WCHAR);
req->process_sd_size = process_sd_size;
+ req->token = wine_server_obj_handle( token );
wine_server_add_data( req, objattr, attr_len );
wine_server_add_data( req, startup_info, startup_info_size );
wine_server_add_data( req, env, (env_end - env) * sizeof(WCHAR) );
@@ -2282,7 +2283,7 @@ error:
wine_server_add_data( req, params->Environment, (env_end - params->Environment) * sizeof(WCHAR) );
@@ -2526,7 +2527,7 @@ static RTL_USER_PROCESS_PARAMETERS *get_vdm_params( const RTL_USER_PROCESS_PARAM
*
* Create a new VDM process for a 16-bit or DOS application.
*/
-static BOOL create_vdm_process( LPCWSTR filename, LPWSTR cmd_line, LPWSTR env, LPCWSTR cur_dir,
+static BOOL create_vdm_process( HANDLE token, LPCWSTR filename, LPWSTR cmd_line, LPWSTR env, LPCWSTR cur_dir,
LPSECURITY_ATTRIBUTES psa, LPSECURITY_ATTRIBUTES tsa,
BOOL inherit, DWORD flags, LPSTARTUPINFOW startup,
LPPROCESS_INFORMATION info, LPCSTR unixdir,
@@ -2306,7 +2307,7 @@ static BOOL create_vdm_process( LPCWSTR filename, LPWSTR cmd_line, LPWSTR env, L
return FALSE;
}
sprintfW(new_cmd_line, argsW, winevdmW, buffer, cmd_line);
- ret = create_process( 0, winevdmW, new_cmd_line, env, cur_dir, psa, tsa, inherit,
+ ret = create_process( token, 0, winevdmW, new_cmd_line, env, cur_dir, psa, tsa, inherit,
flags, startup, info, unixdir, binary_info, exec_only );
HeapFree( GetProcessHeap(), 0, new_cmd_line );
-static BOOL create_vdm_process( LPSECURITY_ATTRIBUTES psa, LPSECURITY_ATTRIBUTES tsa,
+static BOOL create_vdm_process( HANDLE token, LPSECURITY_ATTRIBUTES psa, LPSECURITY_ATTRIBUTES tsa,
BOOL inherit, DWORD flags, const RTL_USER_PROCESS_PARAMETERS *params,
LPPROCESS_INFORMATION info, LPCSTR unixdir )
{
@@ -2536,7 +2537,7 @@ static BOOL create_vdm_process( LPSECURITY_ATTRIBUTES psa, LPSECURITY_ATTRIBUTES
if (!(new_params = get_vdm_params( params, &pe_info ))) return FALSE;
- ret = create_process( 0, psa, tsa, inherit, flags, new_params, info, unixdir, &pe_info );
+ ret = create_process( token, 0, psa, tsa, inherit, flags, new_params, info, unixdir, &pe_info );
RtlDestroyProcessParameters( new_params );
return ret;
@@ -2318,7 +2319,7 @@ static BOOL create_vdm_process( LPCWSTR filename, LPWSTR cmd_line, LPWSTR env, L
}
@@ -2547,7 +2548,7 @@ static BOOL create_vdm_process( LPSECURITY_ATTRIBUTES psa, LPSECURITY_ATTRIBUTES
*
* Create a new cmd shell process for a .BAT file.
*/
-static BOOL create_cmd_process( LPCWSTR filename, LPWSTR cmd_line, LPVOID env, LPCWSTR cur_dir,
+static BOOL create_cmd_process( HANDLE token, LPCWSTR filename, LPWSTR cmd_line, LPVOID env, LPCWSTR cur_dir,
LPSECURITY_ATTRIBUTES psa, LPSECURITY_ATTRIBUTES tsa,
-static BOOL create_cmd_process( LPSECURITY_ATTRIBUTES psa, LPSECURITY_ATTRIBUTES tsa,
+static BOOL create_cmd_process( HANDLE token, LPSECURITY_ATTRIBUTES psa, LPSECURITY_ATTRIBUTES tsa,
BOOL inherit, DWORD flags, LPSTARTUPINFOW startup,
const RTL_USER_PROCESS_PARAMETERS *params,
LPPROCESS_INFORMATION info )
@@ -2346,8 +2347,8 @@ static BOOL create_cmd_process( LPCWSTR filename, LPWSTR cmd_line, LPVOID env, L
strcatW( newcmdline, quotW );
strcatW( newcmdline, cmd_line );
@@ -2577,9 +2578,9 @@ static BOOL create_cmd_process( LPSECURITY_ATTRIBUTES psa, LPSECURITY_ATTRIBUTES
strcatW( newcmdline, params->CommandLine.Buffer );
strcatW( newcmdline, quotW );
if (params->CurrentDirectory.DosPath.Length) cur_dir = params->CurrentDirectory.DosPath.Buffer;
- ret = CreateProcessW( comspec, newcmdline, psa, tsa, inherit,
- flags, env, cur_dir, startup, info );
+ ret = CreateProcessInternalW( token, comspec, newcmdline, psa, tsa, inherit,
+ flags, env, cur_dir, startup, info, NULL );
flags | CREATE_UNICODE_ENVIRONMENT, params->Environment, cur_dir,
- startup, info );
+ startup, info, NULL );
HeapFree( GetProcessHeap(), 0, newcmdline );
return ret;
}
@@ -2457,7 +2458,9 @@ BOOL WINAPI CreateProcessInternalW( HANDLE token, LPCWSTR app_name, LPWSTR cmd_l
@@ -2692,7 +2693,9 @@ BOOL WINAPI CreateProcessInternalW( HANDLE token, LPCWSTR app_name, LPWSTR cmd_l
TRACE("app %s cmdline %s\n", debugstr_w(app_name), debugstr_w(cmd_line) );
@@ -83,87 +84,59 @@ index e270ca7..633065b 100644
+
if (new_token) FIXME("No support for returning created process token\n");
if (!(tidy_cmdline = get_file_name( app_name, cmd_line, name, ARRAY_SIZE( name ),
@@ -2515,20 +2518,20 @@ BOOL WINAPI CreateProcessInternalW( HANDLE token, LPCWSTR app_name, LPWSTR cmd_l
debugstr_w(name), (binary_info.flags & BINARY_FLAG_64BIT) ? 64 : 32,
wine_dbgstr_longlong(binary_info.res_start), wine_dbgstr_longlong(binary_info.res_end),
binary_info.arch, (binary_info.flags & BINARY_FLAG_FAKEDLL) ? ", fakedll" : "" );
- retv = create_process( hFile, name, tidy_cmdline, envW, cur_dir, process_attr, thread_attr,
+ retv = create_process( token, hFile, name, tidy_cmdline, envW, cur_dir, process_attr, thread_attr,
inherit, flags, startup_info, info, unixdir, &binary_info, FALSE );
if (!(tidy_cmdline = get_file_name( app_name, cmd_line, name, ARRAY_SIZE( name ), &hFile, &is_64bit )))
@@ -2760,17 +2763,17 @@ BOOL WINAPI CreateProcessInternalW( HANDLE token, LPCWSTR app_name, LPWSTR cmd_l
debugstr_w(name), is_64bit_arch(pe_info.cpu) ? 64 : 32,
wine_dbgstr_longlong(pe_info.base), wine_dbgstr_longlong(pe_info.base + pe_info.map_size),
cpu_names[pe_info.cpu] );
- retv = create_process( hFile, process_attr, thread_attr,
+ retv = create_process( token, hFile, process_attr, thread_attr,
inherit, flags, params, info, unixdir, &pe_info );
break;
case BINARY_OS216:
case BINARY_WIN16:
case BINARY_DOS:
TRACE( "starting %s as Win16/DOS binary\n", debugstr_w(name) );
- retv = create_vdm_process( name, tidy_cmdline, envW, cur_dir, process_attr, thread_attr,
+ retv = create_vdm_process( token, name, tidy_cmdline, envW, cur_dir, process_attr, thread_attr,
inherit, flags, startup_info, info, unixdir, &binary_info, FALSE );
- retv = create_vdm_process( process_attr, thread_attr, inherit, flags, params, info, unixdir );
+ retv = create_vdm_process( token, process_attr, thread_attr, inherit, flags, params, info, unixdir );
break;
case BINARY_UNIX_LIB:
TRACE( "starting %s as %d-bit Winelib app\n",
debugstr_w(name), (binary_info.flags & BINARY_FLAG_64BIT) ? 64 : 32 );
- retv = create_process( hFile, name, tidy_cmdline, envW, cur_dir, process_attr, thread_attr,
+ retv = create_process( token, hFile, name, tidy_cmdline, envW, cur_dir, process_attr, thread_attr,
inherit, flags, startup_info, info, unixdir, &binary_info, FALSE );
debugstr_w(name), is_64bit_arch(pe_info.cpu) ? 64 : 32 );
- retv = create_process( hFile, process_attr, thread_attr,
+ retv = create_process( token, hFile, process_attr, thread_attr,
inherit, flags, params, info, unixdir, &pe_info );
break;
case BINARY_UNKNOWN:
@@ -2540,7 +2543,7 @@ BOOL WINAPI CreateProcessInternalW( HANDLE token, LPCWSTR app_name, LPWSTR cmd_l
@@ -2780,14 +2783,14 @@ BOOL WINAPI CreateProcessInternalW( HANDLE token, LPCWSTR app_name, LPWSTR cmd_l
if (!strcmpiW( p, comW ) || !strcmpiW( p, pifW ))
{
TRACE( "starting %s as DOS binary\n", debugstr_w(name) );
binary_info.type = BINARY_DOS;
binary_info.arch = IMAGE_FILE_MACHINE_I386;
- retv = create_vdm_process( name, tidy_cmdline, envW, cur_dir, process_attr, thread_attr,
+ retv = create_vdm_process( token, name, tidy_cmdline, envW, cur_dir, process_attr, thread_attr,
inherit, flags, startup_info, info, unixdir,
&binary_info, FALSE );
- retv = create_vdm_process( process_attr, thread_attr,
+ retv = create_vdm_process( token, process_attr, thread_attr,
inherit, flags, params, info, unixdir );
break;
@@ -2548,7 +2551,7 @@ BOOL WINAPI CreateProcessInternalW( HANDLE token, LPCWSTR app_name, LPWSTR cmd_l
}
if (!strcmpiW( p, batW ) || !strcmpiW( p, cmdW ) )
{
TRACE( "starting %s as batch binary\n", debugstr_w(name) );
- retv = create_cmd_process( name, tidy_cmdline, envW, cur_dir, process_attr, thread_attr,
+ retv = create_cmd_process( token, name, tidy_cmdline, envW, cur_dir, process_attr, thread_attr,
inherit, flags, startup_info, info );
- retv = create_cmd_process( process_attr, thread_attr,
+ retv = create_cmd_process( token, process_attr, thread_attr,
inherit, flags, startup_info, params, info );
break;
}
@@ -2668,12 +2671,12 @@ static void exec_process( LPCWSTR name )
debugstr_w(name), (binary_info.flags & BINARY_FLAG_64BIT) ? 64 : 32,
wine_dbgstr_longlong(binary_info.res_start), wine_dbgstr_longlong(binary_info.res_end),
binary_info.arch );
- create_process( hFile, name, GetCommandLineW(), NULL, NULL, NULL, NULL,
+ create_process( NULL, hFile, name, GetCommandLineW(), NULL, NULL, NULL, NULL,
FALSE, 0, &startup_info, &info, NULL, &binary_info, TRUE );
break;
case BINARY_UNIX_LIB:
TRACE( "%s is a Unix library, starting as Winelib app\n", debugstr_w(name) );
- create_process( hFile, name, GetCommandLineW(), NULL, NULL, NULL, NULL,
+ create_process( NULL, hFile, name, GetCommandLineW(), NULL, NULL, NULL, NULL,
FALSE, 0, &startup_info, &info, NULL, &binary_info, TRUE );
break;
case BINARY_UNKNOWN:
@@ -2687,7 +2690,7 @@ static void exec_process( LPCWSTR name )
case BINARY_WIN16:
case BINARY_DOS:
TRACE( "starting %s as Win16/DOS binary\n", debugstr_w(name) );
- create_vdm_process( name, GetCommandLineW(), NULL, NULL, NULL, NULL,
+ create_vdm_process( NULL, name, GetCommandLineW(), NULL, NULL, NULL, NULL,
FALSE, 0, &startup_info, &info, NULL, &binary_info, TRUE );
break;
default:
diff --git a/server/process.c b/server/process.c
index 81cea2f..7d2206f 100644
index af2ba3d..57bf0ec 100644
--- a/server/process.c
+++ b/server/process.c
@@ -496,7 +496,7 @@ static void start_sigkill_timer( struct process *process )
/* create a new process and its main thread */
@@ -486,7 +486,7 @@ static void start_sigkill_timer( struct process *process )
/* create a new process */
/* if the function fails the fd is closed */
-struct thread *create_process( int fd, struct thread *parent_thread, int inherit_all )
+struct thread *create_process( int fd, struct thread *parent_thread, int inherit_all, struct token *token )
struct process *create_process( int fd, struct process *parent, int inherit_all,
- const struct security_descriptor *sd )
+ const struct security_descriptor *sd, struct token *token )
{
struct process *process;
struct thread *thread = NULL;
@@ -567,7 +567,7 @@ struct thread *create_process( int fd, struct thread *parent_thread, int inherit
@@ -561,7 +561,7 @@ struct process *create_process( int fd, struct process *parent, int inherit_all,
: 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 */
@@ -172,15 +145,15 @@ index 81cea2f..7d2206f 100644
process->affinity = parent->affinity;
}
if (!process->handles || !process->token) goto error;
@@ -1147,6 +1147,7 @@ DECL_HANDLER(new_process)
struct startup_info *info;
struct thread *thread;
struct process *process;
@@ -1127,6 +1127,7 @@ DECL_HANDLER(new_process)
const struct security_descriptor *sd;
const struct object_attributes *objattr = get_req_object_attributes( &sd, &name, NULL );
struct process *process = NULL;
+ struct token *token = NULL;
struct process *parent = current->process;
int socket_fd = thread_get_inflight_fd( current, req->socket_fd );
const struct security_descriptor *process_sd = NULL, *thread_sd = NULL;
@@ -1182,9 +1183,27 @@ DECL_HANDLER(new_process)
@@ -1167,10 +1168,39 @@ DECL_HANDLER(new_process)
return;
}
@@ -201,77 +174,89 @@ index 81cea2f..7d2206f 100644
+ }
+ }
+
if (!req->info_size) /* create an orphaned process */
{
- create_process( socket_fd, NULL, 0 );
+ create_process( socket_fd, NULL, 0, token );
+ if (!req->info_size) /* create an orphaned process */
+ {
+ if ((process = create_process( socket_fd, NULL, 0, sd, token )))
+ {
+ create_thread( -1, process, NULL );
+ release_object( process );
+ }
+ if (token) release_object( token );
return;
}
@@ -1192,6 +1211,7 @@ DECL_HANDLER(new_process)
+ return;
+ }
+
/* build the startup info for a new process */
if (!(info = alloc_object( &startup_info_ops )))
{
close( socket_fd );
+ if (token) release_object( token );
return;
}
info->exe_file = NULL;
@@ -1274,7 +1294,7 @@ DECL_HANDLER(new_process)
}
info->process = NULL;
@@ -1217,7 +1247,7 @@ DECL_HANDLER(new_process)
#undef FIXUP_LEN
}
- if (!(thread = create_process( socket_fd, current, req->inherit_all ))) goto done;
+ if (!(thread = create_process( socket_fd, current, req->inherit_all, token ))) goto done;
process = thread->process;
- if (!(process = create_process( socket_fd, parent, req->inherit_all, sd ))) goto done;
+ if (!(process = create_process( socket_fd, parent, req->inherit_all, sd, token ))) goto done;
process->startup_info = (struct startup_info *)grab_object( info );
@@ -1356,6 +1376,7 @@ DECL_HANDLER(new_process)
}
@@ -1279,6 +1309,7 @@ DECL_HANDLER(new_process)
reply->handle = alloc_handle_no_access_check( parent, process, req->access, objattr->attributes );
done:
+ if (token) release_object( token );
if (process) release_object( process );
release_object( info );
}
@@ -1311,7 +1342,7 @@ DECL_HANDLER(exec_process)
close( socket_fd );
return;
}
- if (!(process = create_process( socket_fd, NULL, 0, NULL ))) return;
+ if (!(process = create_process( socket_fd, NULL, 0, NULL, NULL ))) return;
create_thread( -1, process, NULL );
release_object( process );
}
diff --git a/server/process.h b/server/process.h
index 78e88ec..313c36a 100644
index 029b328..ea28091 100644
--- a/server/process.h
+++ b/server/process.h
@@ -114,7 +114,7 @@ struct process_snapshot
extern unsigned int alloc_ptid( void *ptr );
@@ -116,7 +116,7 @@ extern unsigned int alloc_ptid( void *ptr );
extern void free_ptid( unsigned int id );
extern void *get_ptid_entry( unsigned int id );
-extern struct thread *create_process( int fd, struct thread *parent_thread, int inherit_all );
+extern struct thread *create_process( int fd, struct thread *parent_thread, int inherit_all, struct token *token );
extern struct process *create_process( int fd, struct process *parent, int inherit_all,
- const struct security_descriptor *sd );
+ const struct security_descriptor *sd, struct token *token );
extern data_size_t init_process( struct thread *thread );
extern struct thread *get_process_first_thread( struct process *process );
extern struct process *get_process_from_id( process_id_t id );
diff --git a/server/protocol.def b/server/protocol.def
index b29df0a..95a120e 100644
index 607644e..1b5e6de 100644
--- a/server/protocol.def
+++ b/server/protocol.def
@@ -748,6 +748,7 @@ struct rawinput_device
@@ -744,6 +744,7 @@ struct rawinput_device
unsigned int access; /* access rights for process object */
cpu_type_t cpu; /* CPU that the new process will use */
data_size_t info_size; /* size of startup info */
data_size_t env_size; /* size of the environment */
data_size_t process_sd_size;/* size of the process security descriptor */
+ obj_handle_t token; /* token for the new process */
VARARG(objattr,object_attributes); /* object attributes */
VARARG(info,startup_info,info_size); /* startup information */
VARARG(env,unicode_str,env_size); /* environment for new process */
VARARG(process_sd,security_descriptor,process_sd_size); /* security descriptor to set on the process */
VARARG(env,unicode_str); /* environment for new process */
diff --git a/server/request.c b/server/request.c
index 6120bc5..a648c30 100644
index c10c4e6..86f293f 100644
--- a/server/request.c
+++ b/server/request.c
@@ -570,7 +570,7 @@ static void master_socket_poll_event( struct fd *fd, int event )
@@ -577,7 +577,7 @@ static void master_socket_poll_event( struct fd *fd, int event )
int client = accept( get_unix_fd( master_socket->fd ), (struct sockaddr *) &dummy, &len );
if (client == -1) return;
fcntl( client, F_SETFL, O_NONBLOCK );
- create_process( client, NULL, 0 );
+ create_process( client, NULL, 0, NULL );
}
}
- if ((process = create_process( client, NULL, 0, NULL )))
+ if ((process = create_process( client, NULL, 0, NULL, NULL )))
{
create_thread( -1, process, NULL );
release_object( process );
diff --git a/server/security.h b/server/security.h
index 21e90cc..32dfe5f 100644
--- a/server/security.h
@@ -286,7 +271,7 @@ index 21e90cc..32dfe5f 100644
static inline const ACE_HEADER *ace_next( const ACE_HEADER *ace )
{
diff --git a/server/token.c b/server/token.c
index de1d624..2804247 100644
index 1184241..5db97b4 100644
--- a/server/token.c
+++ b/server/token.c
@@ -836,6 +836,12 @@ int token_assign_label( struct token *token, PSID label )
@@ -302,7 +287,7 @@ index de1d624..2804247 100644
struct token *token_create_admin( void )
{
struct token *token = NULL;
@@ -1263,6 +1269,11 @@ const SID *token_get_primary_group( struct token *token )
@@ -1262,6 +1268,11 @@ const SID *token_get_primary_group( struct token *token )
return token->primary_group;
}

View File

@@ -1,62 +0,0 @@
From bddfc5e460ca5d5751bf7d9069379e0e0462ae94 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Michael=20M=C3=BCller?= <michael@fds-team.de>
Date: Sun, 6 Aug 2017 02:11:15 +0200
Subject: advapi32: Use token in CreateProcessAsUserW and
CreateProcessWithTokenW.
---
dlls/advapi32/security.c | 14 ++++++++------
1 file changed, 8 insertions(+), 6 deletions(-)
diff --git a/dlls/advapi32/security.c b/dlls/advapi32/security.c
index c531e45c9a0..4fc27ef82f9 100644
--- a/dlls/advapi32/security.c
+++ b/dlls/advapi32/security.c
@@ -5700,13 +5700,14 @@ BOOL WINAPI DECLSPEC_HOTPATCH CreateProcessAsUserW(
LPSTARTUPINFOW lpStartupInfo,
LPPROCESS_INFORMATION lpProcessInformation )
{
- FIXME("%p %s %s %p %p %d 0x%08x %p %s %p %p - semi-stub\n", hToken,
+ TRACE("%p %s %s %p %p %d 0x%08x %p %s %p %p\n", hToken,
debugstr_w(lpApplicationName), debugstr_w(lpCommandLine), lpProcessAttributes,
lpThreadAttributes, bInheritHandles, dwCreationFlags, lpEnvironment,
debugstr_w(lpCurrentDirectory), lpStartupInfo, lpProcessInformation);
/* We should create the process with a suspended main thread */
- if (!CreateProcessW (lpApplicationName,
+ if (!CreateProcessInternalW(hToken,
+ lpApplicationName,
lpCommandLine,
lpProcessAttributes,
lpThreadAttributes,
@@ -5715,7 +5716,8 @@ BOOL WINAPI DECLSPEC_HOTPATCH CreateProcessAsUserW(
lpEnvironment,
lpCurrentDirectory,
lpStartupInfo,
- lpProcessInformation))
+ lpProcessInformation,
+ NULL))
{
return FALSE;
}
@@ -5742,14 +5744,14 @@ BOOL WINAPI CreateProcessWithTokenW(HANDLE token, DWORD logon_flags, LPCWSTR app
DWORD creation_flags, void *environment, LPCWSTR current_directory, STARTUPINFOW *startup_info,
PROCESS_INFORMATION *process_information )
{
- FIXME("%p 0x%08x %s %s 0x%08x %p %s %p %p - semi-stub\n", token,
+ TRACE("%p 0x%08x %s %s 0x%08x %p %s %p %p\n", token,
logon_flags, debugstr_w(application_name), debugstr_w(command_line),
creation_flags, environment, debugstr_w(current_directory),
startup_info, process_information);
/* FIXME: check if handles should be inherited */
- return CreateProcessW( application_name, command_line, NULL, NULL, FALSE, creation_flags, environment,
- current_directory, startup_info, process_information );
+ return CreateProcessInternalW( token, application_name, command_line, NULL, NULL, FALSE, creation_flags, environment,
+ current_directory, startup_info, process_information, NULL );
}
/******************************************************************************
--
2.13.1

View File

@@ -1,20 +1,20 @@
From b14282d138ff6a5ad1d5c152d0a556c9ca648c36 Mon Sep 17 00:00:00 2001
From 6d8fd34cabbcbc64062675be610fb8704fcdc3ec Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Michael=20M=C3=BCller?= <michael@fds-team.de>
Date: Mon, 7 Aug 2017 03:33:26 +0200
Subject: [PATCH] server: Correctly assign security labels for tokens.
---
dlls/advapi32/tests/security.c | 21 +++++++++--------
server/process.c | 8 +------
dlls/advapi32/tests/security.c | 21 ++++++++++-----------
server/process.c | 8 +-------
server/security.h | 2 +-
server/token.c | 41 ++++++++++++++++++++--------------
server/token.c | 41 ++++++++++++++++++++++++-----------------
4 files changed, 36 insertions(+), 36 deletions(-)
diff --git a/dlls/advapi32/tests/security.c b/dlls/advapi32/tests/security.c
index 0271cd72e0..3b07e7cd2f 100644
index bf4161c..0610ec7 100644
--- a/dlls/advapi32/tests/security.c
+++ b/dlls/advapi32/tests/security.c
@@ -7215,7 +7215,6 @@ static void test_token_security_descriptor(void)
@@ -7186,7 +7186,6 @@ static void test_token_security_descriptor(void)
defaulted = TRUE;
ret = GetSecurityDescriptorDacl(sd2, &present, &acl2, &defaulted);
ok(ret, "GetSecurityDescriptorDacl failed with error %u\n", GetLastError());
@@ -22,7 +22,7 @@ index 0271cd72e0..3b07e7cd2f 100644
ok(present, "DACL not present\n");
if (present)
@@ -7336,7 +7335,7 @@ static void test_token_security_descriptor(void)
@@ -7307,7 +7306,7 @@ static void test_token_security_descriptor(void)
ok(ret, "GetAce failed with error %u\n", GetLastError());
ok(ace->Header.AceType == SYSTEM_MANDATORY_LABEL_ACE_TYPE,
"Unexpected ACE type %#x\n", ace->Header.AceType);
@@ -31,7 +31,7 @@ index 0271cd72e0..3b07e7cd2f 100644
"Expected medium integrity level\n");
}
@@ -7389,8 +7388,8 @@ static void test_token_security_descriptor(void)
@@ -7360,8 +7359,8 @@ static void test_token_security_descriptor(void)
sacl = NULL;
ret = GetSecurityDescriptorSacl(sd3, &present, &sacl, &defaulted);
ok(ret, "GetSecurityDescriptorSacl failed with error %u\n", GetLastError());
@@ -42,7 +42,7 @@ index 0271cd72e0..3b07e7cd2f 100644
if (sacl)
{
@@ -7439,8 +7438,8 @@ static void test_token_security_descriptor(void)
@@ -7410,8 +7409,8 @@ static void test_token_security_descriptor(void)
sacl = NULL;
ret = GetSecurityDescriptorSacl(sd3, &present, &sacl, &defaulted);
ok(ret, "GetSecurityDescriptorSacl failed with error %u\n", GetLastError());
@@ -53,7 +53,7 @@ index 0271cd72e0..3b07e7cd2f 100644
if (sacl)
{
@@ -7504,8 +7503,8 @@ static void test_token_security_descriptor(void)
@@ -7475,8 +7474,8 @@ static void test_token_security_descriptor(void)
ret = GetSecurityDescriptorSacl(sd3, &present, &sacl, &defaulted);
ok(ret, "GetSecurityDescriptorSacl failed with error %u\n", GetLastError());
@@ -64,7 +64,7 @@ index 0271cd72e0..3b07e7cd2f 100644
if (sacl)
{
@@ -7542,8 +7541,8 @@ static void test_token_security_descriptor(void)
@@ -7513,8 +7512,8 @@ static void test_token_security_descriptor(void)
sacl = NULL;
ret = GetSecurityDescriptorSacl(sd3, &present, &sacl, &defaulted);
ok(ret, "GetSecurityDescriptorSacl failed with error %u\n", GetLastError());
@@ -75,7 +75,7 @@ index 0271cd72e0..3b07e7cd2f 100644
if (sacl)
{
@@ -7761,7 +7760,7 @@ static void test_child_token_sd_medium(void)
@@ -7732,7 +7731,7 @@ static void test_child_token_sd_medium(void)
ok(ret, "GetAce failed with error %u\n", GetLastError());
ok(ace_label->Header.AceType == SYSTEM_MANDATORY_LABEL_ACE_TYPE,
"Unexpected ACE type %#x\n", ace_label->Header.AceType);
@@ -85,10 +85,10 @@ index 0271cd72e0..3b07e7cd2f 100644
memset(buffer_integrity, 0, sizeof(buffer_integrity));
diff --git a/server/process.c b/server/process.c
index 7d2206f274..74cc320f44 100644
index b7c9da3..250f777 100644
--- a/server/process.c
+++ b/server/process.c
@@ -567,17 +567,11 @@ struct thread *create_process( int fd, struct thread *parent_thread, int inherit
@@ -562,17 +562,11 @@ struct process *create_process( int fd, struct thread *parent_thread, int inheri
: 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 */
@@ -104,11 +104,11 @@ index 7d2206f274..74cc320f44 100644
- if (!token_assign_label( process->token, security_high_label_sid ))
- goto error;
-
/* create the main thread */
if (pipe( request_pipe ) == -1)
{
set_fd_events( process->msg_fd, POLLIN ); /* start listening to events */
return process;
diff --git a/server/security.h b/server/security.h
index 32dfe5f8db..87377ccd67 100644
index 32dfe5f..87377cc 100644
--- a/server/security.h
+++ b/server/security.h
@@ -59,7 +59,7 @@ extern int token_assign_label( struct token *token, PSID label );
@@ -121,7 +121,7 @@ index 32dfe5f8db..87377ccd67 100644
const LUID_AND_ATTRIBUTES *reqprivs,
unsigned int count, LUID_AND_ATTRIBUTES *usedprivs);
diff --git a/server/token.c b/server/token.c
index 28042471b0..e5639fc0d5 100644
index 5db97b4..bd251c7 100644
--- a/server/token.c
+++ b/server/token.c
@@ -668,7 +668,7 @@ static int filter_privilege( struct privilege *privilege, const LUID_AND_ATTRIBU
@@ -146,7 +146,7 @@ index 28042471b0..e5639fc0d5 100644
return token;
}
@@ -907,6 +913,12 @@ struct token *token_create_admin( void )
@@ -906,6 +912,12 @@ struct token *token_create_admin( void )
admin_source, NULL, -1, TokenElevationTypeFull, &high_label_sid );
/* we really need a primary group */
assert( token->primary_group );
@@ -159,7 +159,7 @@ index 28042471b0..e5639fc0d5 100644
}
free( logon_sid );
@@ -965,6 +977,12 @@ static struct token *token_create_limited( void )
@@ -964,6 +976,12 @@ static struct token *token_create_limited( void )
admin_source, NULL, -1, TokenElevationTypeLimited, &medium_label_sid );
/* we really need a primary group */
assert( token->primary_group );
@@ -172,7 +172,7 @@ index 28042471b0..e5639fc0d5 100644
}
free( logon_sid );
@@ -1433,7 +1451,8 @@ DECL_HANDLER(duplicate_token)
@@ -1432,7 +1450,8 @@ DECL_HANDLER(duplicate_token)
TOKEN_DUPLICATE,
&token_ops )))
{
@@ -182,7 +182,7 @@ index 28042471b0..e5639fc0d5 100644
if (token)
{
unsigned int access = req->access ? req->access : get_handle_access( current->process, req->handle );
@@ -1463,7 +1482,7 @@ DECL_HANDLER(filter_token)
@@ -1462,7 +1481,7 @@ DECL_HANDLER(filter_token)
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,
@@ -191,7 +191,7 @@ index 28042471b0..e5639fc0d5 100644
if (token)
{
unsigned int access = get_handle_access( current->process, req->handle );
@@ -1789,23 +1808,11 @@ DECL_HANDLER(set_token_default_dacl)
@@ -1788,23 +1807,11 @@ DECL_HANDLER(set_token_default_dacl)
DECL_HANDLER(create_token)
{
struct token *token;
@@ -218,5 +218,5 @@ index 28042471b0..e5639fc0d5 100644
}
}
--
2.18.0
2.7.4

View File

@@ -1,7 +1,5 @@
Fixes: [40613] Basic implementation for token integrity levels and UAC handling
Fixes: [39262] Run explorer.exe as unevaluated process
Depends: advapi32-CreateRestrictedToken
Depends: kernel32-COMSPEC
Depends: server-CreateProcess_ACLs
Depends: server-Misc_ACL
Depends: Staging

View File

@@ -1,26 +0,0 @@
From e71a9b9a10c2de28a617f9490c3d135b1e12adf1 Mon Sep 17 00:00:00 2001
From: Dmitry Timoshkov <dmitry@baikal.ru>
Date: Fri, 16 Dec 2016 13:20:32 +0800
Subject: advapi32: SDDL assigns the "AC" abbreviation to
WinBuiltinAnyPackageSid.
---
dlls/advapi32/security.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/dlls/advapi32/security.c b/dlls/advapi32/security.c
index 28331df..3b585aa 100644
--- a/dlls/advapi32/security.c
+++ b/dlls/advapi32/security.c
@@ -135,7 +135,7 @@ static const WELLKNOWNSID WellKnownSids[] =
{ {'M','E'}, WinMediumLabelSid, { SID_REVISION, 1, { SECURITY_MANDATORY_LABEL_AUTHORITY}, { SECURITY_MANDATORY_MEDIUM_RID } } },
{ {'H','I'}, WinHighLabelSid, { SID_REVISION, 1, { SECURITY_MANDATORY_LABEL_AUTHORITY}, { SECURITY_MANDATORY_HIGH_RID } } },
{ {'S','I'}, WinSystemLabelSid, { SID_REVISION, 1, { SECURITY_MANDATORY_LABEL_AUTHORITY}, { SECURITY_MANDATORY_SYSTEM_RID } } },
- { {0,0}, WinBuiltinAnyPackageSid, { SID_REVISION, 2, { SECURITY_APP_PACKAGE_AUTHORITY }, { SECURITY_APP_PACKAGE_BASE_RID, SECURITY_BUILTIN_PACKAGE_ANY_PACKAGE } } },
+ { {'A','C'}, WinBuiltinAnyPackageSid, { SID_REVISION, 2, { SECURITY_APP_PACKAGE_AUTHORITY }, { SECURITY_APP_PACKAGE_BASE_RID, SECURITY_BUILTIN_PACKAGE_ANY_PACKAGE } } },
};
/* these SIDs must be constructed as relative to some domain - only the RID is well-known */
--
2.9.0

View File

@@ -1,227 +0,0 @@
From 393f8906d8b26414fb4fc89c692cb5247be6b4c2 Mon Sep 17 00:00:00 2001
From: Dmitry Timoshkov <dmitry@baikal.ru>
Date: Fri, 16 Dec 2016 13:23:15 +0800
Subject: advapi32/tests: Add a test that compares a well-known SID to a SID
created from a SDDL abbreviation.
---
dlls/advapi32/tests/security.c | 130 +++++++++++++++++++++++++++++------------
1 file changed, 92 insertions(+), 38 deletions(-)
diff --git a/dlls/advapi32/tests/security.c b/dlls/advapi32/tests/security.c
index dfe2f871d42..808547ddbc0 100644
--- a/dlls/advapi32/tests/security.c
+++ b/dlls/advapi32/tests/security.c
@@ -2,7 +2,7 @@
* Unit tests for security functions
*
* Copyright (c) 2004 Mike McCormack
- * Copyright (c) 2011 Dmitry Timoshkov
+ * Copyright (c) 2011,2013,2014,2016 Dmitry Timoshkov
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
@@ -138,14 +138,6 @@ static HMODULE hmod;
static int myARGC;
static char** myARGV;
-struct strsid_entry
-{
- const char *str;
- DWORD flags;
-};
-#define STRSID_OK 0
-#define STRSID_OPT 1
-
#define SID_SLOTS 4
static char debugsid_str[SID_SLOTS][256];
static int debugsid_index = 0;
@@ -174,12 +166,6 @@ static const char* debugstr_sid(PSID sid)
return res;
}
-struct sidRef
-{
- SID_IDENTIFIER_AUTHORITY auth;
- const char *refStr;
-};
-
static void init(void)
{
HMODULE hntdll;
@@ -297,7 +283,11 @@ static void test_group_equal(HANDLE Handle, PSID expected, int line)
static void test_sid(void)
{
- struct sidRef refs[] = {
+ static struct
+ {
+ SID_IDENTIFIER_AUTHORITY auth;
+ const char *refStr;
+ } refs[] = {
{ { {0x00,0x00,0x33,0x44,0x55,0x66} }, "S-1-860116326-1" },
{ { {0x00,0x00,0x01,0x02,0x03,0x04} }, "S-1-16909060-1" },
{ { {0x00,0x00,0x00,0x01,0x02,0x03} }, "S-1-66051-1" },
@@ -305,24 +295,60 @@ static void test_sid(void)
{ { {0x00,0x00,0x00,0x00,0x00,0x02} }, "S-1-2-1" },
{ { {0x00,0x00,0x00,0x00,0x00,0x0c} }, "S-1-12-1" },
};
- struct strsid_entry strsid_table[] = {
- {"AO", STRSID_OK}, {"RU", STRSID_OK}, {"AN", STRSID_OK}, {"AU", STRSID_OK},
- {"BA", STRSID_OK}, {"BG", STRSID_OK}, {"BO", STRSID_OK}, {"BU", STRSID_OK},
- {"CA", STRSID_OPT}, {"CG", STRSID_OK}, {"CO", STRSID_OK}, {"DA", STRSID_OPT},
- {"DC", STRSID_OPT}, {"DD", STRSID_OPT}, {"DG", STRSID_OPT}, {"DU", STRSID_OPT},
- {"EA", STRSID_OPT}, {"ED", STRSID_OK}, {"WD", STRSID_OK}, {"PA", STRSID_OPT},
- {"IU", STRSID_OK}, {"LA", STRSID_OK}, {"LG", STRSID_OK}, {"LS", STRSID_OK},
- {"SY", STRSID_OK}, {"NU", STRSID_OK}, {"NO", STRSID_OK}, {"NS", STRSID_OK},
- {"PO", STRSID_OK}, {"PS", STRSID_OK}, {"PU", STRSID_OK}, {"RS", STRSID_OPT},
- {"RD", STRSID_OK}, {"RE", STRSID_OK}, {"RC", STRSID_OK}, {"SA", STRSID_OPT},
- {"SO", STRSID_OK}, {"SU", STRSID_OK}};
-
+ static const struct
+ {
+ const char *str;
+ WELL_KNOWN_SID_TYPE sid_type;
+ BOOL optional;
+ } strsid_table[] = {
+ /* Please keep the list sorted. */
+ { "AC", WinBuiltinAnyPackageSid, TRUE },
+ { "AN", WinAnonymousSid },
+ { "AO", WinBuiltinAccountOperatorsSid },
+ { "AU", WinAuthenticatedUserSid },
+ { "BA", WinBuiltinAdministratorsSid },
+ { "BG", WinBuiltinGuestsSid },
+ { "BO", WinBuiltinBackupOperatorsSid },
+ { "BU", WinBuiltinUsersSid },
+ { "CA", WinAccountCertAdminsSid, TRUE},
+ { "CG", WinCreatorGroupSid },
+ { "CO", WinCreatorOwnerSid },
+ { "DA", WinAccountDomainAdminsSid, TRUE},
+ { "DC", WinAccountComputersSid, TRUE},
+ { "DD", WinAccountControllersSid, TRUE},
+ { "DG", WinAccountDomainGuestsSid, TRUE},
+ { "DU", WinAccountDomainUsersSid, TRUE},
+ { "EA", WinAccountEnterpriseAdminsSid, TRUE},
+ { "ED", WinEnterpriseControllersSid },
+ { "IU", WinInteractiveSid },
+ { "LA", WinAccountAdministratorSid },
+ { "LG", WinAccountGuestSid },
+ { "LS", WinLocalServiceSid },
+ { "NO", WinBuiltinNetworkConfigurationOperatorsSid },
+ { "NS", WinNetworkServiceSid },
+ { "NU", WinNetworkSid },
+ { "PA", WinAccountPolicyAdminsSid, TRUE},
+ { "PO", WinBuiltinPrintOperatorsSid },
+ { "PS", WinSelfSid },
+ { "PU", WinBuiltinPowerUsersSid },
+ { "RC", WinRestrictedCodeSid },
+ { "RD", WinBuiltinRemoteDesktopUsersSid },
+ { "RE", WinBuiltinReplicatorSid },
+ { "RS", WinAccountRasAndIasServersSid, TRUE },
+ { "RU", WinBuiltinPreWindows2000CompatibleAccessSid },
+ { "SA", WinAccountSchemaAdminsSid, TRUE },
+ { "SO", WinBuiltinSystemOperatorsSid },
+ { "SU", WinServiceSid },
+ { "SY", WinLocalSystemSid },
+ { "WD", WinWorldSid },
+ };
+ SID_IDENTIFIER_AUTHORITY domain_ident = { SECURITY_NT_AUTHORITY };
const char noSubAuthStr[] = "S-1-5";
unsigned int i;
- PSID psid = NULL;
+ PSID psid, domain_sid;
SID *pisid;
BOOL r;
- LPSTR str = NULL;
+ LPSTR str;
if( !pConvertStringSidToSidA )
{
@@ -402,7 +428,7 @@ static void test_sid(void)
}
/* string constant format not supported before XP */
- r = pConvertStringSidToSidA(strsid_table[0].str, &psid);
+ r = pConvertStringSidToSidA("AN", &psid);
if(!r)
{
win_skip("String constant format not supported\n");
@@ -410,25 +436,51 @@ static void test_sid(void)
}
LocalFree(psid);
+ AllocateAndInitializeSid(&domain_ident, 4, SECURITY_NT_NON_UNIQUE, 0, 0, 0, 0, 0, 0, 0, &domain_sid);
+
for(i = 0; i < ARRAY_SIZE(strsid_table); i++)
{
- char *temp;
-
SetLastError(0xdeadbeef);
r = pConvertStringSidToSidA(strsid_table[i].str, &psid);
- if (!(strsid_table[i].flags & STRSID_OPT))
+ if (!(strsid_table[i].optional))
{
ok(r, "%s: got %u\n", strsid_table[i].str, GetLastError());
}
if (r)
{
- if ((winetest_debug > 1) && (ConvertSidToStringSidA(psid, &temp)))
+ char buf[SECURITY_MAX_SID_SIZE];
+ char *sid_string, *well_known_sid_string;
+ DWORD n, size;
+
+ /* zero out domain id before comparison to simplify things */
+ if (strsid_table[i].sid_type == WinAccountAdministratorSid ||
+ strsid_table[i].sid_type == WinAccountGuestSid)
{
- trace(" %s: %s\n", strsid_table[i].str, temp);
- LocalFree(temp);
+ for (n = 1; n <= 3; n++)
+ *GetSidSubAuthority(psid, n) = 0;
}
+
+ r = ConvertSidToStringSidA(psid, &sid_string);
+ ok(r, "%s: ConvertSidToStringSid error %u\n", strsid_table[i].str, GetLastError());
+ if (winetest_debug > 1)
+ trace("%s => %s\n", strsid_table[i].str, sid_string);
+
+ size = sizeof(buf);
+ r = pCreateWellKnownSid(strsid_table[i].sid_type, domain_sid, buf, &size);
+ ok(r, "%u: CreateWellKnownSid(%u) error %u\n", i, strsid_table[i].sid_type, GetLastError());
+
+ r = ConvertSidToStringSidA(buf, &well_known_sid_string);
+ ok(r, "%u: ConvertSidToStringSi(%u) error %u\n", i, strsid_table[i].sid_type, GetLastError());
+ if (winetest_debug > 1)
+ trace("%u => %s\n", strsid_table[i].sid_type, well_known_sid_string);
+
+ ok(strcmp(sid_string, well_known_sid_string) == 0,
+ "%u: (%u) expected %s, got %s\n", i, strsid_table[i].sid_type, well_known_sid_string, sid_string);
+
+ LocalFree(well_known_sid_string);
+ LocalFree(sid_string);
LocalFree(psid);
}
else
@@ -439,6 +491,8 @@ static void test_sid(void)
trace(" %s: couldn't be converted\n", strsid_table[i].str);
}
}
+
+ LocalFree(domain_sid);
}
static void test_trustee(void)
@@ -2288,7 +2342,7 @@ static void test_LookupAccountSid(void)
if (pCreateWellKnownSid)
{
trace("Well Known SIDs:\n");
- for (i = 0; i <= 60; i++)
+ for (i = 0; i <= 84; i++)
{
size = SECURITY_MAX_SID_SIZE;
if (pCreateWellKnownSid(i, NULL, &max_sid.sid, &size))
--
2.13.1

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