Compare commits

...

114 Commits
v4.20 ... v5.1

Author SHA1 Message Date
Alistair Leslie-Hughes
b7c9feb3c1 Release v5.1 2020-02-03 08:11:52 +11:00
Zebediah Figura
c263c4f896 Rebase against bdf8d94e2a40f82c618ba5587cc82382c5230ac0. 2020-02-02 13:43:29 -06:00
Zebediah Figura
fa188fd6b0 wined3d-UAV_Counters: Remove patch.
The parameter checks in d3d11 are not particularly necessary; there is no known application that passes NULL here, and such an application would be easy to detect.

The additional reference to the UAV resource need not be taken, since wined3d_cs_exec_copy_uav_counter() never touches the resource (only the UAV itself).

The offset parameter check is not borne out by native Windows; indeed passing an invalid offset leaves the device in a broken state.
2020-01-30 23:47:25 -06:00
Zebediah Figura
6e474e34fb More definition file updates. 2020-01-30 23:45:19 -06:00
Alistair Leslie-Hughes
f917b2fc24 Removed wusa-MSU_Package_Installer patchset
This patch was to correct an issue with window Vista and none of the
MSU which had this issue are available.
2020-01-30 10:51:05 +11:00
Alistair Leslie-Hughes
44115dbd63 Rebase against 1bb953c6766c9cc4372ca23a7c5b7de101324218 2020-01-30 10:30:07 +11:00
Paul Gofman
59f43478d6 Updated wined3d-SWVP-shaders patchset 2020-01-29 11:46:30 +03:00
Alistair Leslie-Hughes
d83b9f53fb Updated d3dx9_36-D3DXCreateKeyframedAnimationSet patchset 2020-01-29 12:02:22 +11:00
Alistair Leslie-Hughes
f57d1b8d02 Updated ntdll-RtlIpv4StringToAddress patchset 2020-01-29 11:32:19 +11:00
Zebediah Figura
f397af1c7f Rebase against 4588f10f8d3895624a8a2087f2e5c3c1b51e576f. 2020-01-28 15:57:00 -06:00
Zebediah Figura
44fb25d66d advapi32-LsaLookupSids: Remove patches working around a Cygwin bug.
See <https://www.winehq.org/pipermail/wine-patches/2015-April/138516.html>.
There is no known current application that attempts this, and in fact simple
testing shows that the assertion that "native has similar handling" is quite
simply false.
2020-01-27 19:33:07 -06:00
Zebediah Figura
4ad9169f53 Rebase against cf6546fb3b914dc1d87b23d6920526b7487cfd6d. 2020-01-27 17:05:03 -06:00
Zebediah Figura
bbc86a61db comctrl-rebar-capture: Fix name. 2020-01-27 16:55:18 -06:00
Zebediah Figura
537b6dd5e3 Lots more definition file updates. 2020-01-27 16:53:09 -06:00
Zebediah Figura
8b862038c5 oleaut32-CreateTypeLib: Fix a misplaced address operator. 2020-01-27 16:05:11 -06:00
Zebediah Figura
3b2fb113fa user32-DrawMenuItem: Remove patch.
The attached bug is fixed; and there does not seem to be any legitimate way in which the "text" field can be set to anything other than NULL or a valid pointer.
2020-01-27 15:25:53 -06:00
Zebediah Figura
964b6c1ab5 d2d1-ID2D1Factory1: Remove patch.
This contains no functional change.
2020-01-27 15:25:00 -06:00
Zebediah Figura
fc87fb74db Various documentation updates. 2020-01-27 11:56:43 -06:00
Zebediah Figura
8bbe365bfc server-Timestamp_Compat: Remove patch.
This is only useful for converting Staging trees last used before August 2015;
it is far past time it was removed.
2020-01-26 15:35:28 -06:00
Alistair Leslie-Hughes
07ef9c93b8 Rebase against 9a9a1821a34d10bb3e96ce1e42a8d046133f0958 2020-01-25 15:42:12 +11:00
Alistair Leslie-Hughes
050435f28e Rebase against c55e8822ae3bbb8b1d3ab9b363214e4ad2f478d9 2020-01-24 09:53:05 +11:00
Alistair Leslie-Hughes
00f288b12e Updated dxva2-Video_Decoder patchset
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=48497
2020-01-23 12:13:03 +11:00
Alistair Leslie-Hughes
b1e9ef0294 Rebase against 84f2ce5139bb840ee2cf381d039d3787a0cdf2b6 2020-01-23 10:56:01 +11:00
Alistair Leslie-Hughes
3ac1519f34 Release v5.0 2020-01-22 08:45:01 +11:00
Alistair Leslie-Hughes
9a2a33ee2b Correct typo
Fixes macos compile error.
2020-01-21 10:42:39 +11:00
Paul Gofman
9c3a91903e Updated ntdll-ForceBottomUpAlloc patchset
Includes various performance optimizations and fixes
stuttering in Darksiders III reported by some users.
2020-01-20 18:37:08 +03:00
Alistair Leslie-Hughes
dd581d0b2f Cleanup whitespace noise 2020-01-20 20:17:31 +11:00
Alistair Leslie-Hughes
506efa392c Updated winedevice-Default_Drivers patchset 2020-01-20 10:46:31 +11:00
Alistair Leslie-Hughes
a45597f811 Updated dsdmo-new-dll patchset 2020-01-20 10:40:10 +11:00
Alistair Leslie-Hughes
7073073fcc Added gdiplus-FontFamily-RefCount patchset 2020-01-20 10:15:48 +11:00
Rémi Bernon
9dc9c57bbf patchinstall: Test for .git presence, regardless of its type.
It's possible that .git is a file, for example when using multiple
worktrees, and in this case git apply will still work fine.
2020-01-18 21:29:42 -06:00
Alistair Leslie-Hughes
915ed2cec1 Release v5.0-rc6 2020-01-19 12:39:57 +11:00
Alistair Leslie-Hughes
329005baaf Rebase against 287dabd9b6887e94cabfa2a5f9bfe822522095e5 2020-01-15 09:12:06 +11:00
Alistair Leslie-Hughes
d8496cacd1 Disabled user32-rawinput-keyboard patchset
Disabled by request

Causing regressions
https://bugs.winehq.org/show_bug.cgi?id=48419
https://bugs.winehq.org/show_bug.cgi?id=48462
2020-01-15 08:36:02 +11:00
Alistair Leslie-Hughes
695a835b0a Rebase against 287dabd9b6887e94cabfa2a5f9bfe822522095e5 2020-01-14 09:28:28 +11:00
Paul Gofman
68bfc31be4 Updated winebuild-Fake_Dlls patchset
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=48410
2020-01-13 12:40:40 +03:00
Alistair Leslie-Hughes
23960d9862 Release v5.0-rc5 2020-01-12 08:48:00 +11:00
Alistair Leslie-Hughes
bca3c546d2 Added dsound-SRW patchset 2020-01-11 17:30:43 +11:00
Alistair Leslie-Hughes
1e3eb08c69 Added dinput-DIPROP_BUFFERSIZE patchset 2020-01-11 17:07:24 +11:00
Alistair Leslie-Hughes
bd8f35fad1 Rebase against 4f0212c4fd35ac4b03a082cab27e629130ac1b13 2020-01-10 10:35:41 +11:00
Alistair Leslie-Hughes
ccd0bc4ccd Updated user32-rawinput-nolegacy patchset
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=48433
2020-01-10 08:45:05 +11:00
Paul Gofman
89af635b94 Updated ntdll-ForceBottomUpAlloc patchset
Fixes hang on start in Far Cry 5.
2020-01-09 15:49:08 +03:00
Alistair Leslie-Hughes
f05f084d9a Rebase against 21003538619cb22bf35d7cf68ee0ef13ff658424 2020-01-09 10:21:50 +11:00
Alistair Leslie-Hughes
93a708bf2b Rebase against 6b839a0f85236aac2cc794d5d586f1ba371866b1 2020-01-08 11:08:54 +11:00
Alistair Leslie-Hughes
b9f34bbbc3 Update Copyright year 2020-01-07 12:25:46 +11:00
Alistair Leslie-Hughes
8be2c25e19 Dropped gdiplus-DC_Handling patchset
This patchset has been disabled for 2 years and the bug it referenced is marked as fixed.
2020-01-07 10:25:10 +11:00
Alistair Leslie-Hughes
7059b2e1ec Updated activeds-ADsOpenObject patchset 2020-01-07 08:30:38 +11:00
Alistair Leslie-Hughes
7044b0dc98 Updated dxva2-Video_Decoder patchset
Thanks Gabriel Ivăncescu.
2020-01-07 08:24:24 +11:00
Alistair Leslie-Hughes
a1bf11e38a Release v5.0-rc4 2020-01-04 10:38:31 +11:00
Alistair Leslie-Hughes
703c84ce70 Added comctl32-version_6 2020-01-03 18:23:08 +11:00
Alistair Leslie-Hughes
b79e576574 Updated winepulse-PulseAudio_Support patchset 2020-01-03 18:23:08 +11:00
Zebediah Figura
db1f94bae4 libs-Unicode_Collation: Patch dlls/kernelbase/collation.c too. 2019-12-31 19:18:22 -06:00
Alistair Leslie-Hughes
0f52b315d6 Disable ntoskrnl-safedisc-2 patchset
https://bugs.winehq.org/show_bug.cgi?id=48341
https://bugs.winehq.org/show_bug.cgi?id=48379
2019-12-31 09:09:18 +11:00
Paul Gofman
ce3fc5723d Added ntdll-User_shared_data_fields patchset 2019-12-30 14:31:01 +03:00
Paul Gofman
595f2f9860 Added ntdll-Syscall_Emulation patchset 2019-12-30 13:46:05 +03:00
Alistair Leslie-Hughes
c01051f313 Updated ntdll-ThreadHideFromDebugger patchset 2019-12-30 11:18:46 +11:00
Alistair Leslie-Hughes
d163510e1e Release v5.0-rc3 2019-12-28 18:27:35 +11:00
Alistair Leslie-Hughes
c675804204 Rebase against fa97cbdf14883fb301dcc0a5264369f8ed184182 2019-12-28 09:32:05 +11:00
Zebediah Figura
d729a7b132 Update some documentation. 2019-12-23 22:29:13 -06:00
Alistair Leslie-Hughes
2782e6db1e Updated user32-rawinput-mouse-experimental patchset 2019-12-24 08:50:21 +11:00
Alistair Leslie-Hughes
a08376bca0 Correct commit id 2019-12-24 07:58:24 +11:00
Zebediah Figura
3371e62824 gdiplus-GdipCreateBitmapFromHBITMAP: Add reference to a bug report. 2019-12-23 09:52:45 -06:00
Alistair Leslie-Hughes
8218a78955 Updated rawinput patchsets
This is a completely updated rawinput patchsets from Rémi Bernon,
replacing the current user32-rawinput.
2019-12-23 21:47:16 +11:00
Alistair Leslie-Hughes
a8cb853708 Added gdiplus-GdipCreateBitmapFromHBITMAP patchset 2019-12-23 18:07:23 +11:00
Alistair Leslie-Hughes
6cbb6dc117 Updated directmanipulation-new-dll patchset 2019-12-22 20:59:58 +11:00
Alistair Leslie-Hughes
34302e77dd Release v5.0-rc2 2019-12-21 14:31:48 +11:00
Alistair Leslie-Hughes
ae0343f628 Rebase against 6dd84c53b55ecfa2e2735a914cb126fa0c4b23a5 2019-12-21 14:28:42 +11:00
Alistair Leslie-Hughes
5905340060 Updated dmime-PChannel-range patchset 2019-12-20 10:21:04 +11:00
Paul Gofman
c8e3795e69 Updated ntoskrnl-safedisc-2 patchset
Fix kernel32 pipe tests and crash in GTAV launcher.
2019-12-19 12:40:41 +03:00
Alistair Leslie-Hughes
108662b1cc Rebase against fa66c1b3011a32036b42c436320212aa3b30ae3f 2019-12-19 09:45:39 +11:00
Paul Gofman
088d7f9ddf Added include-LdrData patchset 2019-12-18 13:23:52 +03:00
Alistair Leslie-Hughes
b788fe9549 Rebase against 238c6be5b81cbfcf8cd147b1cbb25d16803efbe1 2019-12-18 09:13:09 +11:00
Alistair Leslie-Hughes
b8b836e43d Added activeds-ADsOpenObject patchset 2019-12-17 19:08:25 +11:00
Alistair Leslie-Hughes
d44f4885f2 Added user32-window-activation patchset 2019-12-17 11:31:16 +11:00
Alistair Leslie-Hughes
73caf7ace2 Added ntoskrnl-safedisc-2 patchset 2019-12-17 11:12:41 +11:00
Paul Gofman
d36d63ac84 Updated winebuild-Fake_Dlls patchset.
Fix stack alignment in x64 syscall thunks, again.
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=48274
2019-12-16 16:45:05 +03:00
Alistair Leslie-Hughes
8e8259db69 Release v5.0-rc1 2019-12-14 18:41:55 +11:00
Zebediah Figura
e6aac5d240 Rebase against ce7e10868a1279573acc5be5a9659d254e936b27. 2019-12-13 21:47:52 -06:00
Paul Gofman
40d020d66e Updated winebuild-Fake_Dlls patchset.
Fix stack alignment in x64 syscall thunks.
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=48274
2019-12-13 19:18:23 +03:00
Alistair Leslie-Hughes
0db8c6ad3c Updated dsdmo-new-dll patchset
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=48255
2019-12-13 20:58:23 +11:00
Paul Gofman
45d69ec48b Rebase against 750d382f54e494771128c6b331122be2bc747484 2019-12-13 02:37:28 +03:00
Alistair Leslie-Hughes
2326756550 Updated wintab32-improvements patchset 2019-12-12 11:46:00 +11:00
Alistair Leslie-Hughes
4522654f1c Rebase against 5f0b5d350566a46f0f999e4cff7ad9e280fcfa05 2019-12-12 11:16:40 +11:00
Alistair Leslie-Hughes
dc9fa12a14 Rebase against 626162f7db979360d231698ab1288cda97940bb9 2019-12-11 09:43:03 +11:00
Alistair Leslie-Hughes
b011002d55 comctrl-rebar-capture: Update email address 2019-12-10 18:45:50 +11:00
Zebediah Figura
3e6d6e3909 Rebase against f870aa4988fa8e980919c144682da72865364ff0. 2019-12-09 21:29:30 -06:00
Alistair Leslie-Hughes
62c069eb9f Rebase against ac245040345e2039252b26f5c44841fc730f0854 2019-12-07 14:51:02 +11:00
Zebediah Figura
cb9aa710d5 Rebase against 7ca1c4900e42d608150822ef87a7ce2847a59b6f. 2019-12-05 22:31:23 -06:00
Zebediah Figura
3a14d63abf kernelbase-ReOpenFile: Use a handle we know is invalid.
Also fixes a compiler warning spotted by Marcus Meissner.
2019-12-05 10:43:54 -06:00
Alistair Leslie-Hughes
af616c5fc3 Rebase against 67d1321c2b8eb5d54aa8fbe0807d9052ae56c1ed 2019-12-05 09:32:37 +11:00
Alistair Leslie-Hughes
7167c4d6ad Rebase against 5cf64084fb6f277c3453099a65a78817d5c9f1db 2019-12-04 10:46:54 +11:00
Alistair Leslie-Hughes
d388288e2e Updated Compiler_Warnings 2019-12-03 15:57:36 +11:00
Alistair Leslie-Hughes
7b177b15fa Updated d2d1-ID2D1Factory1 patchset 2019-12-03 15:47:34 +11:00
Alistair Leslie-Hughes
70aaee4bf8 Updated wusa-MSU_Package_Installer patchset 2019-12-03 15:27:38 +11:00
Zebediah Figura
f23d30bc06 wusa-MSU_Package_Installer: Rebase and re-enable. 2019-12-02 19:28:46 -06:00
Paul Gofman
2f95fb4782 Rebase against 5536df1ee1042c6cf20a7d96c43520003a547092 2019-12-03 03:43:30 +03:00
Alistair Leslie-Hughes
9be789b289 Release v4.21 2019-11-30 15:52:08 +11:00
Paul Gofman
0da25307db Rebase against 2935bab96569dcd734a8e855ec9a20ae27c18973 2019-11-29 22:41:24 +03:00
Alistair Leslie-Hughes
9f10bba729 Rebase against ec9eddf86b144cc0fcf975a9cc864cf08ba84eaf 2019-11-29 09:39:35 +11:00
Alistair Leslie-Hughes
14a1f8bd0c Rebase against 4ccdf3e58a816ebf9c58000e985fd21737ffd485 2019-11-28 18:31:59 +11:00
Alistair Leslie-Hughes
3ba119e67c Rebase against ce275f38a02dd5f809eea45ff3fa02f645b56a7c 2019-11-27 11:11:51 +11:00
Paul Gofman
f4987b47e3 ntdll-ForceBottomUpAlloc: Add patch. 2019-11-26 15:05:31 +03:00
Paul Gofman
ced0f96514 ntdll-RtlGetNativeSystemInformation: Add patch. 2019-11-26 14:54:35 +03:00
Alistair Leslie-Hughes
f62913bfc3 Rebase against ddec23013e39b563a3a50c0fe42c2ae8b518d538 2019-11-26 12:16:52 +11:00
Torge Matthies
3fe9b83fa4 winecfg-Staging: Fix check for GTK3 support.
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=48155
2019-11-22 20:08:53 -06:00
Zebediah Figura
194199011a Rebase against 190fb605c34ac1365076dff0a6560ddb42ca1ef2. 2019-11-22 20:02:37 -06:00
Alistair Leslie-Hughes
7e4e808869 Rebase against 90fc020400c06c163d4ab117d8da755b0f0e0861 2019-11-22 09:51:24 +11:00
Zebediah Figura
38efd9d1bc ntdll-x86_64_SegDs: Add patch. 2019-11-21 10:58:02 -06:00
Zebediah Figura
29cc042257 ntdll-ThreadHideFromDebugger: Add patch. 2019-11-20 18:54:23 -06:00
Zebediah Figura
1f5394ae51 Rebase against aa3d01e65019fb2f135f74cf26cfa1661ca09325. 2019-11-20 18:48:50 -06:00
Alistair Leslie-Hughes
a9639c412f Rebase against a9c4b309f6af82b624604bd0df898ad88d59ab5a 2019-11-20 10:28:28 +11:00
Zebediah Figura
d391086546 d3d9-Direct3DShaderValidatorCreate9: The last argument to "stub2" is at most 32 bits in size.
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=48132
2019-11-18 21:45:03 -06:00
Alistair Leslie-Hughes
41ebbee85d Rebase agaisnt 288a6625ad0177e258a0db1da166d292ff420b1e 2019-11-19 09:46:15 +11:00
Alistair Leslie-Hughes
69cf026375 Added kernelbase-ReOpenFile patchset 2019-11-18 09:51:47 +11:00
240 changed files with 10069 additions and 7650 deletions

View File

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

View File

@@ -8,7 +8,8 @@ are part of **Wine Staging** and are licensed under the terms of the
```
Copyright (C) 2014-2017 the Wine Staging project authors.
Copyright (C) 2018 Alistair Leslie-Hughes
Copyright (C) 2018 Alistair Leslie-Hughes, Zebediah Figura
Copyright (C) 2019-2020 Alistair Leslie-Hughes, Zebediah Figura, Paul Gofman
Wine Staging is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public

View File

@@ -6,15 +6,14 @@ features, which have not been integrated into the development branch yet. The
idea of Wine Staging is to provide experimental features faster to end users and
to give developers the possibility to discuss and improve their patches before
they are integrated into the main branch. More information about Wine Staging
can also be found on our website [wine-staging.com](http://wine-staging.com).
can also be found [on the WineHQ wiki](https://wiki.winehq.org/Wine-Staging).
Installation
------------
Ready-to-use packages for Wine Staging are available for a variety of Linux
distributions and for Mac OS X. Just follow the
[installation instructions](https://wine-staging.com/installation.html)
for your operating system.
distributions and for Mac OS X. Just follow the [installation
instructions](https://wiki.winehq.org/Download) for your operating system.
On most distributions the `wine-staging` package is installed to
`/opt/wine-staging`, such that multiple Wine versions can be installed in
@@ -78,5 +77,6 @@ in our [Wiki](https://wiki.winehq.org/Wine-Staging).
Contributing
------------
Please see CONTRIBUTING.md for more information about contributing to Wine
Staging.
For information on contributing to Wine-Staging, please see
<https://wiki.winehq.org/Wine-Staging_Contributing>. Note that GitHub pull
requests are strongly dispreferred, especially for patches.

View File

@@ -1,4 +1,4 @@
From c8f9b712a946fac79af1290d14c1d31d0a8f0c10 Mon Sep 17 00:00:00 2001
From a0211ba2069af11a64588a49222dcdcce1d805be Mon Sep 17 00:00:00 2001
From: Sebastian Lackner <sebastian@fds-team.de>
Date: Tue, 22 Mar 2016 21:54:26 +0100
Subject: [PATCH] d2d1: Avoid implicit cast of interface pointer.
@@ -7,16 +7,16 @@ Subject: [PATCH] d2d1: Avoid implicit cast of interface pointer.
dlls/d2d1/bitmap.c | 2 +-
dlls/d2d1/brush.c | 8 ++++----
dlls/d2d1/dc_render_target.c | 2 +-
dlls/d2d1/geometry.c | 6 +++---
dlls/d2d1/geometry.c | 8 ++++----
dlls/d2d1/hwnd_render_target.c | 2 +-
dlls/d2d1/state_block.c | 2 +-
6 files changed, 11 insertions(+), 11 deletions(-)
6 files changed, 12 insertions(+), 12 deletions(-)
diff --git a/dlls/d2d1/bitmap.c b/dlls/d2d1/bitmap.c
index 39e81192f77..52810211701 100644
index bc958e50a1..76ecc7f02a 100644
--- a/dlls/d2d1/bitmap.c
+++ b/dlls/d2d1/bitmap.c
@@ -623,5 +623,5 @@ struct d2d_bitmap *unsafe_impl_from_ID2D1Bitmap(ID2D1Bitmap *iface)
@@ -617,5 +617,5 @@ struct d2d_bitmap *unsafe_impl_from_ID2D1Bitmap(ID2D1Bitmap *iface)
if (!iface)
return NULL;
assert(iface->lpVtbl == (ID2D1BitmapVtbl *)&d2d_bitmap_vtbl);
@@ -24,7 +24,7 @@ index 39e81192f77..52810211701 100644
+ return CONTAINING_RECORD((ID2D1Bitmap1*)iface, struct d2d_bitmap, ID2D1Bitmap1_iface);
}
diff --git a/dlls/d2d1/brush.c b/dlls/d2d1/brush.c
index 21abf1456ab..1030884c2b7 100644
index 80fc0f5331..a612e683b6 100644
--- a/dlls/d2d1/brush.c
+++ b/dlls/d2d1/brush.c
@@ -253,7 +253,7 @@ static void d2d_brush_init(struct d2d_brush *brush, ID2D1Factory *factory,
@@ -64,7 +64,7 @@ index 21abf1456ab..1030884c2b7 100644
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 310c5412967..9d9168dc8ee 100644
index 47aa99697d..0efa3ebeaf 100644
--- a/dlls/d2d1/dc_render_target.c
+++ b/dlls/d2d1/dc_render_target.c
@@ -23,7 +23,7 @@ WINE_DEFAULT_DEBUG_CHANNEL(d2d);
@@ -77,7 +77,7 @@ index 310c5412967..9d9168dc8ee 100644
static HRESULT d2d_dc_render_target_present(IUnknown *outer_unknown)
diff --git a/dlls/d2d1/geometry.c b/dlls/d2d1/geometry.c
index 91ce32c28e7..da4a1f2d3ee 100644
index 79850f1c20..b9b6a32f76 100644
--- a/dlls/d2d1/geometry.c
+++ b/dlls/d2d1/geometry.c
@@ -2982,7 +2982,7 @@ static const struct ID2D1GeometrySinkVtbl d2d_geometry_sink_vtbl =
@@ -89,7 +89,7 @@ index 91ce32c28e7..da4a1f2d3ee 100644
}
static HRESULT STDMETHODCALLTYPE d2d_path_geometry_QueryInterface(ID2D1PathGeometry *iface, REFIID iid, void **out)
@@ -3498,7 +3498,7 @@ void d2d_path_geometry_init(struct d2d_geometry *geometry, ID2D1Factory *factory
@@ -3502,7 +3502,7 @@ void d2d_path_geometry_init(struct d2d_geometry *geometry, ID2D1Factory2 *factor
static inline struct d2d_geometry *impl_from_ID2D1RectangleGeometry(ID2D1RectangleGeometry *iface)
{
@@ -98,7 +98,7 @@ index 91ce32c28e7..da4a1f2d3ee 100644
}
static HRESULT STDMETHODCALLTYPE d2d_rectangle_geometry_QueryInterface(ID2D1RectangleGeometry *iface,
@@ -3833,7 +3833,7 @@ fail:
@@ -3841,7 +3841,7 @@ fail:
static inline struct d2d_geometry *impl_from_ID2D1TransformedGeometry(ID2D1TransformedGeometry *iface)
{
@@ -107,8 +107,17 @@ index 91ce32c28e7..da4a1f2d3ee 100644
}
static HRESULT STDMETHODCALLTYPE d2d_transformed_geometry_QueryInterface(ID2D1TransformedGeometry *iface,
@@ -4122,7 +4122,7 @@ void d2d_transformed_geometry_init(struct d2d_geometry *geometry, ID2D1Factory2
static inline struct d2d_geometry *impl_from_ID2D1GeometryGroup(ID2D1GeometryGroup *iface)
{
- return CONTAINING_RECORD(iface, struct d2d_geometry, ID2D1Geometry_iface);
+ return CONTAINING_RECORD( (ID2D1Geometry*)iface, struct d2d_geometry, ID2D1Geometry_iface);
}
static HRESULT STDMETHODCALLTYPE d2d_geometry_group_QueryInterface(ID2D1GeometryGroup *iface,
diff --git a/dlls/d2d1/hwnd_render_target.c b/dlls/d2d1/hwnd_render_target.c
index 625f101eaa7..f3626c42cee 100644
index 625f101eaa..f3626c42ce 100644
--- a/dlls/d2d1/hwnd_render_target.c
+++ b/dlls/d2d1/hwnd_render_target.c
@@ -23,7 +23,7 @@ WINE_DEFAULT_DEBUG_CHANNEL(d2d);
@@ -121,7 +130,7 @@ index 625f101eaa7..f3626c42cee 100644
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 e3175146a64..b66752983e6 100644
index e3175146a6..b66752983e 100644
--- a/dlls/d2d1/state_block.c
+++ b/dlls/d2d1/state_block.c
@@ -187,5 +187,5 @@ struct d2d_state_block *unsafe_impl_from_ID2D1DrawingStateBlock(ID2D1DrawingStat
@@ -132,5 +141,5 @@ index e3175146a64..b66752983e6 100644
+ return CONTAINING_RECORD((ID2D1DrawingStateBlock1*)iface, struct d2d_state_block, ID2D1DrawingStateBlock1_iface);
}
--
2.20.1
2.17.1

View File

@@ -1,4 +1,4 @@
From 14f3c7debf91be0e5b36299f330541f3146d00ca Mon Sep 17 00:00:00 2001
From 7529755fcc41fda650aac6b27f34438354435d34 Mon Sep 17 00:00:00 2001
From: Sebastian Lackner <sebastian@fds-team.de>
Date: Tue, 22 Mar 2016 21:58:40 +0100
Subject: [PATCH] dwrite: Avoid implicit cast of interface pointer.
@@ -9,10 +9,10 @@ Subject: [PATCH] dwrite: Avoid implicit cast of interface pointer.
2 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/dlls/dwrite/font.c b/dlls/dwrite/font.c
index be9ff88fe44..44c4426c9ff 100644
index 9280b5d32..2f0974a4c 100644
--- a/dlls/dwrite/font.c
+++ b/dlls/dwrite/font.c
@@ -1781,7 +1781,7 @@ static struct dwrite_font *unsafe_impl_from_IDWriteFont(IDWriteFont *iface)
@@ -1887,7 +1887,7 @@ static struct dwrite_font *unsafe_impl_from_IDWriteFont(IDWriteFont *iface)
if (!iface)
return NULL;
assert(iface->lpVtbl == (IDWriteFontVtbl*)&dwritefontvtbl);
@@ -21,20 +21,20 @@ index be9ff88fe44..44c4426c9ff 100644
}
struct dwrite_fontface *unsafe_impl_from_IDWriteFontFace(IDWriteFontFace *iface)
@@ -1789,7 +1789,7 @@ struct dwrite_fontface *unsafe_impl_from_IDWriteFontFace(IDWriteFontFace *iface)
@@ -1895,7 +1895,7 @@ struct dwrite_fontface *unsafe_impl_from_IDWriteFontFace(IDWriteFontFace *iface)
if (!iface)
return NULL;
assert(iface->lpVtbl == (IDWriteFontFaceVtbl*)&dwritefontfacevtbl);
- return CONTAINING_RECORD(iface, struct dwrite_fontface, IDWriteFontFace4_iface);
+ return CONTAINING_RECORD((IDWriteFontFace4 *)iface, struct dwrite_fontface, IDWriteFontFace4_iface);
- return CONTAINING_RECORD(iface, struct dwrite_fontface, IDWriteFontFace5_iface);
+ return CONTAINING_RECORD((IDWriteFontFace5 *)iface, struct dwrite_fontface, IDWriteFontFace5_iface);
}
void get_logfont_from_font(IDWriteFont *iface, LOGFONTW *lf)
static struct dwrite_fontfacereference *unsafe_impl_from_IDWriteFontFaceReference(IDWriteFontFaceReference *iface)
diff --git a/dlls/dwrite/layout.c b/dlls/dwrite/layout.c
index b9c712cd7fb..358d13963a7 100644
index b9321157a..76ea23ba6 100644
--- a/dlls/dwrite/layout.c
+++ b/dlls/dwrite/layout.c
@@ -5715,7 +5715,7 @@ static const IDWriteTextFormat3Vtbl dwritetextformatvtbl =
@@ -5895,7 +5895,7 @@ static const IDWriteTextFormat3Vtbl dwritetextformatvtbl =
static struct dwrite_textformat *unsafe_impl_from_IDWriteTextFormat(IDWriteTextFormat *iface)
{
return (iface->lpVtbl == (IDWriteTextFormatVtbl*)&dwritetextformatvtbl) ?
@@ -44,5 +44,5 @@ index b9c712cd7fb..358d13963a7 100644
HRESULT create_textformat(const WCHAR *family_name, IDWriteFontCollection *collection, DWRITE_FONT_WEIGHT weight, DWRITE_FONT_STYLE style,
--
2.23.0
2.24.0

View File

@@ -1,2 +1 @@
Fixes: Fixes compile warnings.
#Depends: mailing-list-patches

View File

@@ -1,21 +1,21 @@
From 9618572cf2eace39198fb83b747a70d1865015e3 Mon Sep 17 00:00:00 2001
From 540ee9ebdee96f7c67224bfae699375c8cb4c90c Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Michael=20M=C3=BCller?= <michael@fds-team.de>
Date: Wed, 28 May 2014 19:50:51 +0200
Subject: [PATCH] loader: Add commandline option --check-libs.
---
include/wine/library.h | 2 +
libs/wine/config.c | 124 +++++++++++++++++++++++++++++++++++++++++++++++++
libs/wine/loader.c | 36 ++++++++++++++
libs/wine/config.c | 124 +++++++++++++++++++++++++++++++++++++++++
libs/wine/loader.c | 36 ++++++++++++
libs/wine/wine.map | 2 +
loader/main.c | 50 +++++++++++++++++++-
loader/main.c | 50 ++++++++++++++++-
5 files changed, 213 insertions(+), 1 deletion(-)
diff --git a/include/wine/library.h b/include/wine/library.h
index fae73fe..7395a11 100644
index 511bf4722a0..557cec20cf8 100644
--- a/include/wine/library.h
+++ b/include/wine/library.h
@@ -40,6 +40,7 @@ extern "C" {
@@ -44,6 +44,7 @@ extern "C" {
extern const char *wine_get_build_dir(void);
extern const char *wine_get_config_dir(void);
extern const char *wine_get_data_dir(void);
@@ -23,7 +23,7 @@ index fae73fe..7395a11 100644
extern const char *wine_get_server_dir(void);
extern const char *wine_get_user_name(void);
extern const char *wine_get_version(void);
@@ -52,6 +53,7 @@ extern void wine_exec_wine_binary( const char *name, char **argv, const char *en
@@ -56,6 +57,7 @@ extern void wine_exec_wine_binary( const char *name, char **argv, const char *en
typedef void (*load_dll_callback_t)( void *, const char * );
@@ -32,10 +32,10 @@ index fae73fe..7395a11 100644
extern void *wine_dlsym( void *handle, const char *symbol, char *error, size_t errorsize );
extern int wine_dlclose( void *handle, char *error, size_t errorsize );
diff --git a/libs/wine/config.c b/libs/wine/config.c
index 5da6263..6cedfb7 100644
index 5b66c063db6..e0988513e14 100644
--- a/libs/wine/config.c
+++ b/libs/wine/config.c
@@ -488,6 +488,130 @@ const char *wine_get_build_dir(void)
@@ -470,6 +470,130 @@ const char *wine_get_build_dir(void)
return build_dir;
}
@@ -167,13 +167,14 @@ index 5da6263..6cedfb7 100644
const char *wine_get_server_dir(void)
{
diff --git a/libs/wine/loader.c b/libs/wine/loader.c
index 649aa22..367dde3 100644
index 2a569f5b739..5f10c3f9d3e 100644
--- a/libs/wine/loader.c
+++ b/libs/wine/loader.c
@@ -1064,6 +1064,42 @@ void *wine_dlopen( const char *filename, int flag, char *error, size_t errorsize
@@ -1072,6 +1072,42 @@ void *wine_dlopen( const char *filename, int flag, char *error, size_t errorsize
return ret;
}
/***********************************************************************
+/***********************************************************************
+ * wine_dladdr
+ */
+int wine_dladdr( void *addr, void *info, char *error, size_t errorsize )
@@ -209,23 +210,22 @@ index 649aa22..367dde3 100644
+#endif
+}
+
+/***********************************************************************
/***********************************************************************
* wine_dlsym
*/
void *wine_dlsym( void *handle, const char *symbol, char *error, size_t errorsize )
diff --git a/libs/wine/wine.map b/libs/wine/wine.map
index 7cb2918..72ffed8 100644
index 5edee0d9235..8e3382168d5 100644
--- a/libs/wine/wine.map
+++ b/libs/wine/wine.map
@@ -65,6 +65,7 @@ WINE_1.0
wine_dbg_sprintf;
wine_dbgstr_an;
wine_dbgstr_wn;
@@ -16,6 +16,7 @@ WINE_1.0
wine_cp_wcstombs;
wine_cpsymbol_mbstowcs;
wine_cpsymbol_wcstombs;
+ wine_dladdr;
wine_dlclose;
wine_dll_enum_load_path;
wine_dll_get_owner;
@@ -85,6 +86,7 @@ WINE_1.0
wine_dll_set_callback;
@@ -32,6 +33,7 @@ WINE_1.0
wine_get_es;
wine_get_fs;
wine_get_gs;
@@ -234,7 +234,7 @@ index 7cb2918..72ffed8 100644
wine_get_sortkey;
wine_get_ss;
diff --git a/loader/main.c b/loader/main.c
index f662912..a2dc40c 100644
index f6629128de1..a2dc40c51cc 100644
--- a/loader/main.c
+++ b/loader/main.c
@@ -36,6 +36,12 @@
@@ -309,5 +309,5 @@ index f662912..a2dc40c 100644
--
1.9.1
2.17.1

View File

@@ -0,0 +1,83 @@
From e5500b9a3c7d36563725dc7975c2436a02165906 Mon Sep 17 00:00:00 2001
From: Dmitry Timoshkov <dmitry@baikal.ru>
Date: Fri, 15 Nov 2019 15:46:23 +0800
Subject: [PATCH] include: Add adserr.h.
Signed-off-by: Dmitry Timoshkov <dmitry@baikal.ru>
---
include/Makefile.in | 1 +
include/adserr.h | 50 +++++++++++++++++++++++++++++++++++++++++++++
2 files changed, 51 insertions(+)
create mode 100644 include/adserr.h
diff --git a/include/Makefile.in b/include/Makefile.in
index cbad4d604f..2e0a10d650 100644
--- a/include/Makefile.in
+++ b/include/Makefile.in
@@ -7,6 +7,7 @@ SOURCES = \
activaut.idl \
activdbg.idl \
activscp.idl \
+ adserr.h \
adshlp.h \
advpub.h \
af_irda.h \
diff --git a/include/adserr.h b/include/adserr.h
new file mode 100644
index 0000000000..83da568763
--- /dev/null
+++ b/include/adserr.h
@@ -0,0 +1,50 @@
+/*
+ * Copyright (C) 2019 Dmitry Timoshkov
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef __ADSERR_H
+#define __ADSERR_H
+
+#ifdef RC_INVOKED
+#define _HRESULT_TYPEDEF_(x) (x)
+#else
+#define _HRESULT_TYPEDEF_(x) ((HRESULT)x)
+#endif
+
+#define E_ADS_BAD_PATHNAME _HRESULT_TYPEDEF_(0x80005000)
+#define E_ADS_INVALID_DOMAIN_OBJECT _HRESULT_TYPEDEF_(0x80005001)
+#define E_ADS_INVALID_USER_OBJECT _HRESULT_TYPEDEF_(0x80005002)
+#define E_ADS_INVALID_COMPUTER_OBJECT _HRESULT_TYPEDEF_(0x80005003)
+#define E_ADS_UNKNOWN_OBJECT _HRESULT_TYPEDEF_(0x80005004)
+#define E_ADS_PROPERTY_NOT_SET _HRESULT_TYPEDEF_(0x80005005)
+#define E_ADS_PROPERTY_NOT_SUPPORTED _HRESULT_TYPEDEF_(0x80005006)
+#define E_ADS_PROPERTY_INVALID _HRESULT_TYPEDEF_(0x80005007)
+#define E_ADS_BAD_PARAMETER _HRESULT_TYPEDEF_(0x80005008)
+#define E_ADS_OBJECT_UNBOUND _HRESULT_TYPEDEF_(0x80005009)
+#define E_ADS_PROPERTY_NOT_MODIFIED _HRESULT_TYPEDEF_(0x8000500A)
+#define E_ADS_PROPERTY_MODIFIED _HRESULT_TYPEDEF_(0x8000500B)
+#define E_ADS_CANT_CONVERT_DATATYPE _HRESULT_TYPEDEF_(0x8000500C)
+#define E_ADS_PROPERTY_NOT_FOUND _HRESULT_TYPEDEF_(0x8000500D)
+#define E_ADS_OBJECT_EXISTS _HRESULT_TYPEDEF_(0x8000500E)
+#define E_ADS_SCHEMA_VIOLATION _HRESULT_TYPEDEF_(0x8000500F)
+#define E_ADS_COLUMN_NOT_SET _HRESULT_TYPEDEF_(0x80005010)
+#define S_ADS_ERRORSOCCURRED _HRESULT_TYPEDEF_(0x00005011)
+#define S_ADS_NOMORE_ROWS _HRESULT_TYPEDEF_(0x00005012)
+#define S_ADS_NOMORE_COLUMNS _HRESULT_TYPEDEF_(0x00005013)
+#define E_ADS_INVALID_FILTER _HRESULT_TYPEDEF_(0x80005014)
+
+#endif /* __ADSERR_H */
--
2.17.1

View File

@@ -0,0 +1,161 @@
From c12e335b0df736fe2a2f2447d0d751de7cc21d37 Mon Sep 17 00:00:00 2001
From: Dmitry Timoshkov <dmitry@baikal.ru>
Date: Fri, 15 Nov 2019 17:37:11 +0800
Subject: [PATCH 2/5] activeds: Implement ADsOpenObject.
Content-Type: text/plain; charset=UTF-8
To: wine-devel@winehq.org
Signed-off-by: Dmitry Timoshkov <dmitry@baikal.ru>
---
dlls/activeds/Makefile.in | 1 +
dlls/activeds/activeds_main.c | 80 +++++++++++++++++++++++++++++++++--
include/iads.idl | 14 ++++++
3 files changed, 91 insertions(+), 4 deletions(-)
diff --git a/dlls/activeds/Makefile.in b/dlls/activeds/Makefile.in
index 20578a93bc..54f86d661e 100644
--- a/dlls/activeds/Makefile.in
+++ b/dlls/activeds/Makefile.in
@@ -1,5 +1,6 @@
MODULE = activeds.dll
IMPORTLIB = activeds
+IMPORTS = advapi32 ole32 oleaut32
EXTRADLLFLAGS = -mno-cygwin
diff --git a/dlls/activeds/activeds_main.c b/dlls/activeds/activeds_main.c
index 69c5c447dc..8ff587e332 100644
--- a/dlls/activeds/activeds_main.c
+++ b/dlls/activeds/activeds_main.c
@@ -2,6 +2,7 @@
* Implementation of the Active Directory Service Interface
*
* Copyright 2005 Detlef Riekenberg
+ * Copyright 2019 Dmitry Timoshkov
*
* This file contains only stubs to get the printui.dll up and running
* activeds.dll is much much more than this
@@ -30,8 +31,10 @@
#include "winuser.h"
#include "objbase.h"
+#include "initguid.h"
#include "iads.h"
#include "adshlp.h"
+#include "adserr.h"
#include "wine/debug.h"
@@ -112,11 +115,80 @@ HRESULT WINAPI ADsBuildVarArrayInt(LPDWORD lpdwObjectTypes, DWORD dwObjectTypes,
/*****************************************************
* ADsOpenObject [ACTIVEDS.9]
*/
-HRESULT WINAPI ADsOpenObject(LPCWSTR lpszPathName, LPCWSTR lpszUserName, LPCWSTR lpszPassword, DWORD dwReserved, REFIID riid, VOID** ppObject)
+HRESULT WINAPI ADsOpenObject(LPCWSTR path, LPCWSTR user, LPCWSTR password, DWORD reserved, REFIID riid, void **obj)
{
- FIXME("(%s,%s,%u,%s,%p)!stub\n", debugstr_w(lpszPathName),
- debugstr_w(lpszUserName), dwReserved, debugstr_guid(riid), ppObject);
- return E_NOTIMPL;
+ HRESULT hr;
+ HKEY hkey, hprov;
+ WCHAR provider[MAX_PATH], progid[MAX_PATH];
+ DWORD idx = 0;
+
+ TRACE("(%s,%s,%u,%s,%p)\n", debugstr_w(path), debugstr_w(user), reserved, debugstr_guid(riid), obj);
+
+ if (!path || !riid || !obj)
+ return E_INVALIDARG;
+
+ if (RegOpenKeyExW(HKEY_LOCAL_MACHINE, L"Software\\Microsoft\\ADs\\Providers", 0, KEY_READ, &hkey))
+ return E_ADS_BAD_PATHNAME;
+
+ hr = E_ADS_BAD_PATHNAME;
+
+ for (;;)
+ {
+ if (RegEnumKeyW(hkey, idx++, provider, ARRAY_SIZE(provider)))
+ break;
+
+ TRACE("provider %s\n", debugstr_w(provider));
+
+ if (!wcsnicmp(path, provider, wcslen(provider)) && path[wcslen(provider)] == ':')
+ {
+ LONG size;
+
+ if (RegOpenKeyExW(hkey, provider, 0, KEY_READ, &hprov))
+ break;
+
+ size = ARRAY_SIZE(progid);
+ if (!RegQueryValueW(hprov, NULL, progid, &size))
+ {
+ CLSID clsid;
+
+ if (CLSIDFromProgID(progid, &clsid) == S_OK)
+ {
+ IADsOpenDSObject *adsopen;
+ IDispatch *disp;
+
+ TRACE("ns %s => clsid %s\n", debugstr_w(progid), wine_dbgstr_guid(&clsid));
+ if (CoCreateInstance(&clsid, 0, CLSCTX_INPROC_SERVER, &IID_IADsOpenDSObject, (void **)&adsopen) == S_OK)
+ {
+ BSTR bpath, buser, bpassword;
+
+ bpath = SysAllocString(path);
+ buser = SysAllocString(user);
+ bpassword = SysAllocString(password);
+
+ hr = IADsOpenDSObject_OpenDSObject(adsopen, bpath, buser, bpassword, reserved, &disp);
+ if (hr == S_OK)
+ {
+ hr = IDispatch_QueryInterface(disp, riid, obj);
+ IDispatch_Release(disp);
+ }
+
+ SysFreeString(bpath);
+ SysFreeString(buser);
+ SysFreeString(bpassword);
+
+ IADsOpenDSObject_Release(adsopen);
+ }
+ }
+ }
+
+ RegCloseKey(hprov);
+ break;
+ }
+ }
+
+ RegCloseKey(hkey);
+
+ return hr;
}
/*****************************************************
diff --git a/include/iads.idl b/include/iads.idl
index 6931b6f734..add52571c7 100644
--- a/include/iads.idl
+++ b/include/iads.idl
@@ -794,6 +794,20 @@ interface IDirectorySearch : IUnknown
HRESULT CloseSearchHandle([in] ADS_SEARCH_HANDLE hSearchResult);
}
+/*****************************************************************************
+ * IID_IADsOpenDSObject interface
+ */
+[
+ odl,
+ uuid(ddf2891e-0f9c-11d0-8ad4-00c04fd8d503),
+ dual,
+ oleautomation
+]
+interface IADsOpenDSObject : IDispatch
+{
+ HRESULT OpenDSObject([in] BSTR path, [in] BSTR user, [in] BSTR password, [in] long reserved, [out,retval] IDispatch **obj);
+}
+
/*****************************************************************************
* IADsADSystemInfo interface
*/
--
2.20.1

View File

@@ -0,0 +1,483 @@
From ba1eb1310db57db3820a3886e374afc507c2b507 Mon Sep 17 00:00:00 2001
From: Dmitry Timoshkov <dmitry@baikal.ru>
Date: Tue, 19 Nov 2019 11:34:13 +0800
Subject: [PATCH 3/5] adsldp: Add LDAPNamespace stubs.
Content-Type: text/plain; charset=UTF-8
To: wine-devel@winehq.org
Signed-off-by: Dmitry Timoshkov <dmitry@baikal.ru>
---
dlls/adsldp/Makefile.in | 5 +-
dlls/adsldp/adsldp.c | 295 ++++++++++++++++++++++++++++++++++++----
dlls/adsldp/adsldp.idl | 9 ++
dlls/adsldp/adsldp.rgs | 16 +++
dlls/adsldp/rsrc.rc | 20 +++
5 files changed, 319 insertions(+), 26 deletions(-)
create mode 100644 dlls/adsldp/adsldp.rgs
create mode 100644 dlls/adsldp/rsrc.rc
diff --git a/dlls/adsldp/Makefile.in b/dlls/adsldp/Makefile.in
index 4dce14fd0d..7bf07fce2c 100644
--- a/dlls/adsldp/Makefile.in
+++ b/dlls/adsldp/Makefile.in
@@ -1,10 +1,13 @@
MODULE = adsldp.dll
-IMPORTS = oleaut32 secur32
+IMPORTS = oleaut32 secur32 rpcrt4
EXTRADLLFLAGS = -mno-cygwin
+dlldata_EXTRADEFS = -DENTRY_PREFIX=ADSLDP_
C_SRCS = \
adsldp.c
IDL_SRCS = \
adsldp.idl
+
+RC_SRCS = rsrc.rc
diff --git a/dlls/adsldp/adsldp.c b/dlls/adsldp/adsldp.c
index 4fc0de41eb..ef62aad279 100644
--- a/dlls/adsldp/adsldp.c
+++ b/dlls/adsldp/adsldp.c
@@ -31,10 +31,15 @@
#define SECURITY_WIN32
#include "security.h"
+#include "wine/heap.h"
#include "wine/debug.h"
WINE_DEFAULT_DEBUG_CHANNEL(adsldp);
+DEFINE_GUID(CLSID_LDAPNamespace,0x228d9a82,0xc302,0x11cf,0x9a,0xa4,0x00,0xaa,0x00,0x4a,0x56,0x91);
+
+extern HRESULT WINAPI ADSLDP_DllGetClassObject(REFCLSID,REFIID,void **) DECLSPEC_HIDDEN;
+
static HMODULE adsldp_hinst;
typedef struct
@@ -235,31 +240,239 @@ static const IADsADSystemInfoVtbl IADsADSystemInfo_vtbl =
sysinfo_GetTrees
};
-static HRESULT ADSystemInfo_create(void **obj)
+static HRESULT ADSystemInfo_create(REFIID riid, void **obj)
{
AD_sysinfo *sysinfo;
+ HRESULT hr;
sysinfo = HeapAlloc(GetProcessHeap(), 0, sizeof(*sysinfo));
if (!sysinfo) return E_OUTOFMEMORY;
sysinfo->IADsADSystemInfo_iface.lpVtbl = &IADsADSystemInfo_vtbl;
sysinfo->ref = 1;
- *obj = &sysinfo->IADsADSystemInfo_iface;
- TRACE("created %p\n", *obj);
+ hr = IADsADSystemInfo_QueryInterface(&sysinfo->IADsADSystemInfo_iface, riid, obj);
+ IADsADSystemInfo_Release(&sysinfo->IADsADSystemInfo_iface);
- return S_OK;
+ return hr;
}
+typedef struct
+{
+ IADs IADs_iface;
+ LONG ref;
+} LDAP_namespace;
+
+static inline LDAP_namespace *impl_from_IADs(IADs *iface)
+{
+ return CONTAINING_RECORD(iface, LDAP_namespace, IADs_iface);
+}
+
+static HRESULT WINAPI ldapns_QueryInterface(IADs *iface, REFIID riid, void **obj)
+{
+ TRACE("%p,%s,%p\n", iface, debugstr_guid(riid), obj);
+
+ if (!riid || !obj) return E_INVALIDARG;
+
+ if (IsEqualGUID(riid, &IID_IUnknown) ||
+ IsEqualGUID(riid, &IID_IDispatch) ||
+ IsEqualGUID(riid, &IID_IADs))
+ {
+ IADs_AddRef(iface);
+ *obj = iface;
+ return S_OK;
+ }
+
+ FIXME("interface %s is not implemented\n", debugstr_guid(riid));
+ return E_NOINTERFACE;
+}
+
+static ULONG WINAPI ldapns_AddRef(IADs *iface)
+{
+ LDAP_namespace *ldap = impl_from_IADs(iface);
+ return InterlockedIncrement(&ldap->ref);
+}
+
+static ULONG WINAPI ldapns_Release(IADs *iface)
+{
+ LDAP_namespace *ldap = impl_from_IADs(iface);
+ LONG ref = InterlockedDecrement(&ldap->ref);
+
+ if (!ref)
+ {
+ TRACE("destroying %p\n", iface);
+ HeapFree(GetProcessHeap(), 0, ldap);
+ }
+
+ return ref;
+}
+
+static HRESULT WINAPI ldapns_GetTypeInfoCount(IADs *iface, UINT *count)
+{
+ FIXME("%p,%p: stub\n", iface, count);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI ldapns_GetTypeInfo(IADs *iface, UINT index, LCID lcid, ITypeInfo **info)
+{
+ FIXME("%p,%u,%#x,%p: stub\n", iface, index, lcid, info);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI ldapns_GetIDsOfNames(IADs *iface, REFIID riid, LPOLESTR *names,
+ UINT count, LCID lcid, DISPID *dispid)
+{
+ FIXME("%p,%s,%p,%u,%u,%p: stub\n", iface, debugstr_guid(riid), names, count, lcid, dispid);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI ldapns_Invoke(IADs *iface, DISPID dispid, REFIID riid, LCID lcid, WORD flags,
+ DISPPARAMS *params, VARIANT *result, EXCEPINFO *excepinfo, UINT *argerr)
+{
+ FIXME("%p,%d,%s,%04x,%04x,%p,%p,%p,%p: stub\n", iface, dispid, debugstr_guid(riid), lcid, flags,
+ params, result, excepinfo, argerr);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI ldapns_get_Name(IADs *iface, BSTR *retval)
+{
+ FIXME("%p,%p: stub\n", iface, retval);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI ldapns_get_Class(IADs *iface, BSTR *retval)
+{
+ FIXME("%p,%p: stub\n", iface, retval);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI ldapns_get_GUID(IADs *iface, BSTR *retval)
+{
+ FIXME("%p,%p: stub\n", iface, retval);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI ldapns_get_ADsPath(IADs *iface, BSTR *retval)
+{
+ FIXME("%p,%p: stub\n", iface, retval);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI ldapns_get_Parent(IADs *iface, BSTR *retval)
+{
+ FIXME("%p,%p: stub\n", iface, retval);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI ldapns_get_Schema(IADs *iface, BSTR *retval)
+{
+ FIXME("%p,%p: stub\n", iface, retval);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI ldapns_GetInfo(IADs *iface)
+{
+ FIXME("%p: stub\n", iface);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI ldapns_SetInfo(IADs *iface)
+{
+ FIXME("%p: stub\n", iface);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI ldapns_Get(IADs *iface, BSTR name, VARIANT *prop)
+{
+ FIXME("%p,%s,%p: stub\n", iface, debugstr_w(name), prop);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI ldapns_Put(IADs *iface, BSTR name, VARIANT prop)
+{
+ FIXME("%p,%s,%s: stub\n", iface, debugstr_w(name), wine_dbgstr_variant(&prop));
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI ldapns_GetEx(IADs *iface, BSTR name, VARIANT *prop)
+{
+ FIXME("%p,%s,%p: stub\n", iface, debugstr_w(name), prop);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI ldapns_PutEx(IADs *iface, LONG code, BSTR name, VARIANT prop)
+{
+ FIXME("%p,%d,%s,%s: stub\n", iface, code, debugstr_w(name), wine_dbgstr_variant(&prop));
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI ldapns_GetInfoEx(IADs *iface, VARIANT prop, LONG reserved)
+{
+ FIXME("%p,%s,%d: stub\n", iface, wine_dbgstr_variant(&prop), reserved);
+ return E_NOTIMPL;
+}
+
+static const IADsVtbl IADs_vtbl =
+{
+ ldapns_QueryInterface,
+ ldapns_AddRef,
+ ldapns_Release,
+ ldapns_GetTypeInfoCount,
+ ldapns_GetTypeInfo,
+ ldapns_GetIDsOfNames,
+ ldapns_Invoke,
+ ldapns_get_Name,
+ ldapns_get_Class,
+ ldapns_get_GUID,
+ ldapns_get_ADsPath,
+ ldapns_get_Parent,
+ ldapns_get_Schema,
+ ldapns_GetInfo,
+ ldapns_SetInfo,
+ ldapns_Get,
+ ldapns_Put,
+ ldapns_GetEx,
+ ldapns_PutEx,
+ ldapns_GetInfoEx
+};
+
+static HRESULT LDAPNamespace_create(REFIID riid, void **obj)
+{
+ LDAP_namespace *ldap;
+ HRESULT hr;
+
+ ldap = heap_alloc(sizeof(*ldap));
+ if (!ldap) return E_OUTOFMEMORY;
+
+ ldap->IADs_iface.lpVtbl = &IADs_vtbl;
+ ldap->ref = 1;
+
+ hr = IADs_QueryInterface(&ldap->IADs_iface, riid, obj);
+ IADs_Release(&ldap->IADs_iface);
+
+ return hr;
+}
+
+static const struct class_info
+{
+ const CLSID *clsid;
+ HRESULT (*constructor)(REFIID, void **);
+} class_info[] =
+{
+ { &CLSID_ADSystemInfo, ADSystemInfo_create },
+ { &CLSID_LDAPNamespace, LDAPNamespace_create },
+};
+
typedef struct
{
IClassFactory IClassFactory_iface;
- HRESULT (*constructor)(void **);
-} ADSystemInfo_factory;
+ LONG ref;
+ const struct class_info *info;
+} class_factory;
-static inline ADSystemInfo_factory *impl_from_IClassFactory(IClassFactory *iface)
+static inline class_factory *impl_from_IClassFactory(IClassFactory *iface)
{
- return CONTAINING_RECORD(iface, ADSystemInfo_factory, IClassFactory_iface);
+ return CONTAINING_RECORD(iface, class_factory, IClassFactory_iface);
}
static HRESULT WINAPI factory_QueryInterface(IClassFactory *iface, REFIID riid, LPVOID *obj)
@@ -283,19 +496,30 @@ static HRESULT WINAPI factory_QueryInterface(IClassFactory *iface, REFIID riid,
static ULONG WINAPI factory_AddRef(IClassFactory *iface)
{
- return 2;
+ class_factory *factory = impl_from_IClassFactory(iface);
+ ULONG ref = InterlockedIncrement(&factory->ref);
+
+ TRACE("(%p) ref %u\n", iface, ref);
+
+ return ref;
}
static ULONG WINAPI factory_Release(IClassFactory *iface)
{
- return 1;
+ class_factory *factory = impl_from_IClassFactory(iface);
+ ULONG ref = InterlockedDecrement(&factory->ref);
+
+ TRACE("(%p) ref %u\n", iface, ref);
+
+ if (!ref)
+ heap_free(factory);
+
+ return ref;
}
static HRESULT WINAPI factory_CreateInstance(IClassFactory *iface, IUnknown *outer, REFIID riid, void **obj)
{
- ADSystemInfo_factory *factory = impl_from_IClassFactory(iface);
- IUnknown *unknown;
- HRESULT hr;
+ class_factory *factory = impl_from_IClassFactory(iface);
TRACE("%p,%s,%p\n", outer, debugstr_guid(riid), obj);
@@ -304,13 +528,7 @@ static HRESULT WINAPI factory_CreateInstance(IClassFactory *iface, IUnknown *out
*obj = NULL;
if (outer) return CLASS_E_NOAGGREGATION;
- hr = factory->constructor((void **)&unknown);
- if (hr == S_OK)
- {
- hr = IUnknown_QueryInterface(unknown, riid, obj);
- IUnknown_Release(unknown);
- }
- return hr;
+ return factory->info->constructor(riid, obj);
}
static HRESULT WINAPI factory_LockServer(IClassFactory *iface, BOOL lock)
@@ -328,21 +546,48 @@ static const struct IClassFactoryVtbl factory_vtbl =
factory_LockServer
};
-static ADSystemInfo_factory ADSystemInfo_cf = { { &factory_vtbl }, ADSystemInfo_create };
+static HRESULT factory_constructor(const struct class_info *info, REFIID riid, void **obj)
+{
+ class_factory *factory;
+ HRESULT hr;
+
+ factory = heap_alloc(sizeof(*factory));
+ if (!factory) return E_OUTOFMEMORY;
+
+ factory->IClassFactory_iface.lpVtbl = &factory_vtbl;
+ factory->ref = 1;
+ factory->info = info;
+
+ hr = IClassFactory_QueryInterface(&factory->IClassFactory_iface, riid, obj);
+ IClassFactory_Release(&factory->IClassFactory_iface);
+
+ return hr;
+}
HRESULT WINAPI DllGetClassObject(REFCLSID clsid, REFIID iid, LPVOID *obj)
{
+ const struct class_info *info = NULL;
+ int i;
+
TRACE("%s,%s,%p\n", debugstr_guid(clsid), debugstr_guid(iid), obj);
if (!clsid || !iid || !obj) return E_INVALIDARG;
*obj = NULL;
- if (IsEqualGUID(clsid, &CLSID_ADSystemInfo))
- return IClassFactory_QueryInterface(&ADSystemInfo_cf.IClassFactory_iface, iid, obj);
+ for (i = 0; i < ARRAY_SIZE(class_info); i++)
+ {
+ if (IsEqualCLSID(class_info[i].clsid, clsid))
+ {
+ info = &class_info[i];
+ break;
+ }
+ }
+
+ if (info)
+ return factory_constructor(info, iid, obj);
- FIXME("class %s/%s is not implemented\n", debugstr_guid(clsid), debugstr_guid(iid));
- return CLASS_E_CLASSNOTAVAILABLE;
+ return ADSLDP_DllGetClassObject(clsid, iid, obj);
}
HRESULT WINAPI DllCanUnloadNow(void)
diff --git a/dlls/adsldp/adsldp.idl b/dlls/adsldp/adsldp.idl
index c2f7504d0c..634aa36327 100644
--- a/dlls/adsldp/adsldp.idl
+++ b/dlls/adsldp/adsldp.idl
@@ -18,8 +18,17 @@
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
*/
+#pragma makedep proxy
#pragma makedep register
+[
+ helpstring("LDAP Namespace Object"),
+ progid("LDAPNamespace"),
+ uuid(228d9a82-c302-11cf-9aa4-00aa004a5691),
+ threading(both)
+]
+coclass ADs { }
+
[
helpstring("AD System Info Object"),
uuid(50b6327f-afd1-11d2-9cb9-0000f87a369e),
diff --git a/dlls/adsldp/adsldp.rgs b/dlls/adsldp/adsldp.rgs
new file mode 100644
index 0000000000..0da0946832
--- /dev/null
+++ b/dlls/adsldp/adsldp.rgs
@@ -0,0 +1,16 @@
+HKLM
+{
+ NoRemove Software
+ {
+ NoRemove Microsoft
+ {
+ NoRemove ADs
+ {
+ NoRemove Providers
+ {
+ ForceRemove 'LDAP' = s 'LDAPNamespace'
+ }
+ }
+ }
+ }
+}
diff --git a/dlls/adsldp/rsrc.rc b/dlls/adsldp/rsrc.rc
new file mode 100644
index 0000000000..914fe0b2f3
--- /dev/null
+++ b/dlls/adsldp/rsrc.rc
@@ -0,0 +1,20 @@
+/*
+ * Copyright 2019 Dmitry Timoshkov
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+/* @makedep: adsldp.rgs */
+1 WINE_REGISTRY adsldp.rgs
--
2.20.1

View File

@@ -0,0 +1,156 @@
From 73b97a7095f833e5323117c1acbb8a64c5e3afcb Mon Sep 17 00:00:00 2001
From: Dmitry Timoshkov <dmitry@baikal.ru>
Date: Tue, 19 Nov 2019 11:46:50 +0800
Subject: [PATCH 4/5] adsldp: Add IADsOpenDSObject stubs.
Content-Type: text/plain; charset=UTF-8
To: wine-devel@winehq.org
Signed-off-by: Dmitry Timoshkov <dmitry@baikal.ru>
---
dlls/adsldp/adsldp.c | 102 +++++++++++++++++++++++++++++++++++++++++++
1 file changed, 102 insertions(+)
diff --git a/dlls/adsldp/adsldp.c b/dlls/adsldp/adsldp.c
index ef62aad279..bdce30c143 100644
--- a/dlls/adsldp/adsldp.c
+++ b/dlls/adsldp/adsldp.c
@@ -260,6 +260,7 @@ static HRESULT ADSystemInfo_create(REFIID riid, void **obj)
typedef struct
{
IADs IADs_iface;
+ IADsOpenDSObject IADsOpenDSObject_iface;
LONG ref;
} LDAP_namespace;
@@ -270,6 +271,8 @@ static inline LDAP_namespace *impl_from_IADs(IADs *iface)
static HRESULT WINAPI ldapns_QueryInterface(IADs *iface, REFIID riid, void **obj)
{
+ LDAP_namespace *ldap = impl_from_IADs(iface);
+
TRACE("%p,%s,%p\n", iface, debugstr_guid(riid), obj);
if (!riid || !obj) return E_INVALIDARG;
@@ -283,6 +286,13 @@ static HRESULT WINAPI ldapns_QueryInterface(IADs *iface, REFIID riid, void **obj
return S_OK;
}
+ if (IsEqualGUID(riid, &IID_IADsOpenDSObject))
+ {
+ IADs_AddRef(iface);
+ *obj = &ldap->IADsOpenDSObject_iface;
+ return S_OK;
+ }
+
FIXME("interface %s is not implemented\n", debugstr_guid(riid));
return E_NOINTERFACE;
}
@@ -436,6 +446,97 @@ static const IADsVtbl IADs_vtbl =
ldapns_GetInfoEx
};
+static inline LDAP_namespace *impl_from_IADsOpenDSObject(IADsOpenDSObject *iface)
+{
+ return CONTAINING_RECORD(iface, LDAP_namespace, IADsOpenDSObject_iface);
+}
+
+static HRESULT WINAPI openobj_QueryInterface(IADsOpenDSObject *iface, REFIID riid, void **obj)
+{
+ TRACE("%p,%s,%p\n", iface, debugstr_guid(riid), obj);
+
+ if (!riid || !obj) return E_INVALIDARG;
+
+ if (IsEqualGUID(riid, &IID_IADsOpenDSObject) ||
+ IsEqualGUID(riid, &IID_IDispatch) ||
+ IsEqualGUID(riid, &IID_IUnknown))
+ {
+ IADsOpenDSObject_AddRef(iface);
+ *obj = iface;
+ return S_OK;
+ }
+
+ FIXME("interface %s is not implemented\n", debugstr_guid(riid));
+ return E_NOINTERFACE;
+}
+
+static ULONG WINAPI openobj_AddRef(IADsOpenDSObject *iface)
+{
+ LDAP_namespace *ldap = impl_from_IADsOpenDSObject(iface);
+ return InterlockedIncrement(&ldap->ref);
+}
+
+static ULONG WINAPI openobj_Release(IADsOpenDSObject *iface)
+{
+ LDAP_namespace *ldap = impl_from_IADsOpenDSObject(iface);
+ LONG ref = InterlockedDecrement(&ldap->ref);
+
+ if (!ref)
+ {
+ TRACE("destroying %p\n", iface);
+ HeapFree(GetProcessHeap(), 0, ldap);
+ }
+
+ return ref;
+}
+
+static HRESULT WINAPI openobj_GetTypeInfoCount(IADsOpenDSObject *iface, UINT *count)
+{
+ FIXME("%p,%p: stub\n", iface, count);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI openobj_GetTypeInfo(IADsOpenDSObject *iface, UINT index, LCID lcid, ITypeInfo **info)
+{
+ FIXME("%p,%u,%#x,%p: stub\n", iface, index, lcid, info);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI openobj_GetIDsOfNames(IADsOpenDSObject *iface, REFIID riid, LPOLESTR *names,
+ UINT count, LCID lcid, DISPID *dispid)
+{
+ FIXME("%p,%s,%p,%u,%u,%p: stub\n", iface, debugstr_guid(riid), names, count, lcid, dispid);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI openobj_Invoke(IADsOpenDSObject *iface, DISPID dispid, REFIID riid, LCID lcid, WORD flags,
+ DISPPARAMS *params, VARIANT *result, EXCEPINFO *excepinfo, UINT *argerr)
+{
+ FIXME("%p,%d,%s,%04x,%04x,%p,%p,%p,%p: stub\n", iface, dispid, debugstr_guid(riid), lcid, flags,
+ params, result, excepinfo, argerr);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI openobj_OpenDSObject(IADsOpenDSObject *iface, BSTR path, BSTR user, BSTR password,
+ LONG reserved, IDispatch **obj)
+{
+ FIXME("%p,%s,%s,%s,%d,%p: stub\n", iface, debugstr_w(path), debugstr_w(user), debugstr_w(password),
+ reserved, obj);
+ return E_NOTIMPL;
+}
+
+static const IADsOpenDSObjectVtbl IADsOpenDSObject_vtbl =
+{
+ openobj_QueryInterface,
+ openobj_AddRef,
+ openobj_Release,
+ openobj_GetTypeInfoCount,
+ openobj_GetTypeInfo,
+ openobj_GetIDsOfNames,
+ openobj_Invoke,
+ openobj_OpenDSObject
+};
+
static HRESULT LDAPNamespace_create(REFIID riid, void **obj)
{
LDAP_namespace *ldap;
@@ -445,6 +546,7 @@ static HRESULT LDAPNamespace_create(REFIID riid, void **obj)
if (!ldap) return E_OUTOFMEMORY;
ldap->IADs_iface.lpVtbl = &IADs_vtbl;
+ ldap->IADsOpenDSObject_iface.lpVtbl = &IADsOpenDSObject_vtbl;
ldap->ref = 1;
hr = IADs_QueryInterface(&ldap->IADs_iface, riid, obj);
--
2.20.1

View File

@@ -0,0 +1,123 @@
From 488afac28472b0563c67cfad8c02a82f489c2c04 Mon Sep 17 00:00:00 2001
From: Dmitry Timoshkov <dmitry@baikal.ru>
Date: Tue, 19 Nov 2019 12:12:27 +0800
Subject: [PATCH 5/5] adsldp/tests: Add some tests for LDAPNamespace.
Content-Type: text/plain; charset=UTF-8
To: wine-devel@winehq.org
Signed-off-by: Dmitry Timoshkov <dmitry@baikal.ru>
---
dlls/adsldp/tests/Makefile.in | 1 +
dlls/adsldp/tests/ldap.c | 78 +++++++++++++++++++++++++++++++++++
dlls/adsldp/tests/sysinfo.c | 2 +
3 files changed, 81 insertions(+)
create mode 100644 dlls/adsldp/tests/ldap.c
diff --git a/dlls/adsldp/tests/Makefile.in b/dlls/adsldp/tests/Makefile.in
index 777d2aa9de..52141139d5 100644
--- a/dlls/adsldp/tests/Makefile.in
+++ b/dlls/adsldp/tests/Makefile.in
@@ -2,4 +2,5 @@ TESTDLL = adsldp.dll
IMPORTS = ole32 oleaut32 secur32 advapi32 uuid
C_SRCS = \
+ ldap.c \
sysinfo.c
diff --git a/dlls/adsldp/tests/ldap.c b/dlls/adsldp/tests/ldap.c
new file mode 100644
index 0000000000..36b128da20
--- /dev/null
+++ b/dlls/adsldp/tests/ldap.c
@@ -0,0 +1,78 @@
+/*
+ * LDAPNamespace Tests
+ *
+ * Copyright 2019 Dmitry Timoshkov
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#include <stdarg.h>
+#include <stdio.h>
+
+#define COBJMACROS
+
+#include "windef.h"
+#include "winbase.h"
+#include "objbase.h"
+#include "iads.h"
+
+#include "wine/test.h"
+
+#include "initguid.h"
+DEFINE_GUID(CLSID_LDAPNamespace,0x228d9a82,0xc302,0x11cf,0x9a,0xa4,0x00,0xaa,0x00,0x4a,0x56,0x91);
+
+static void test_LDAP(void)
+{
+ HRESULT hr;
+ IUnknown *unk;
+ IADs *ads;
+ IADsOpenDSObject *ads_open;
+ IDispatch *disp;
+
+ hr = CoCreateInstance(&CLSID_LDAPNamespace, 0, CLSCTX_INPROC_SERVER, &IID_IADs, (void **)&ads);
+ ok(hr == S_OK, "got %#x\n", hr);
+ IADs_Release(ads);
+
+ hr = CoCreateInstance(&CLSID_LDAPNamespace, 0, CLSCTX_INPROC_SERVER, &IID_IUnknown, (void **)&unk);
+ ok(hr == S_OK, "got %#x\n", hr);
+
+ hr = IUnknown_QueryInterface(unk, &IID_IDispatch, (void **)&disp);
+ ok(hr == S_OK, "got %#x\n", hr);
+ IDispatch_Release(disp);
+
+ hr = IUnknown_QueryInterface(unk, &IID_IADsOpenDSObject, (void **)&ads_open);
+ ok(hr == S_OK, "got %#x\n", hr);
+ IADsOpenDSObject_Release(ads_open);
+
+ hr = IADsOpenDSObject_OpenDSObject(ads_open, (BSTR)L"LDAP:", NULL, NULL, ADS_SECURE_AUTHENTICATION, &disp);
+todo_wine
+ ok(hr == S_OK, "got %#x\n", hr);
+if (hr == S_OK)
+ IDispatch_Release(disp);
+
+ IUnknown_Release(unk);
+}
+
+START_TEST(ldap)
+{
+ HRESULT hr;
+
+ hr = CoInitialize(NULL);
+ ok(hr == S_OK, "got %#x\n", hr);
+
+ test_LDAP();
+
+ CoUninitialize();
+}
diff --git a/dlls/adsldp/tests/sysinfo.c b/dlls/adsldp/tests/sysinfo.c
index db982aa82f..cb250190f1 100644
--- a/dlls/adsldp/tests/sysinfo.c
+++ b/dlls/adsldp/tests/sysinfo.c
@@ -216,4 +216,6 @@ START_TEST(sysinfo)
test_ComputerName();
test_UserName();
test_sysinfo();
+
+ CoUninitialize();
}
--
2.20.1

View File

@@ -0,0 +1,2 @@
Fixes: [40649] activeds: Implement ADsOpenObject.
#Fixes: [42885] ADsOpenObject to bind to user's account/computer. (related)

View File

@@ -1,47 +0,0 @@
From 246cb6b72666dcb77fb2f553d318d7dabbe8811d Mon Sep 17 00:00:00 2001
From: Qian Hong <qhong@codeweavers.com>
Date: Tue, 7 Apr 2015 13:18:47 +0800
Subject: advapi32: Prepend a hidden LSA_TRUST_INFORMATION in LsaLookupSids to
avoid crash when Domains[-1] incorrectly accessed by application. (try 2)
---
dlls/advapi32/lsa.c | 10 +++++++---
1 file changed, 7 insertions(+), 3 deletions(-)
diff --git a/dlls/advapi32/lsa.c b/dlls/advapi32/lsa.c
index 69c29c5..dfe25b3 100644
--- a/dlls/advapi32/lsa.c
+++ b/dlls/advapi32/lsa.c
@@ -488,14 +488,17 @@ NTSTATUS WINAPI LsaLookupSids(
if (!(*Names = heap_alloc(name_fullsize))) return STATUS_NO_MEMORY;
/* maximum count of stored domain infos is Count, allocate it like that cause really needed
count could only be computed after sid data is retrieved */
- domain_fullsize = sizeof(LSA_REFERENCED_DOMAIN_LIST) + sizeof(LSA_TRUST_INFORMATION)*Count;
+ domain_fullsize = sizeof(LSA_REFERENCED_DOMAIN_LIST) + sizeof(LSA_TRUST_INFORMATION) * (Count + 1);
if (!(*ReferencedDomains = heap_alloc(domain_fullsize)))
{
heap_free(*Names);
return STATUS_NO_MEMORY;
}
(*ReferencedDomains)->Entries = 0;
- (*ReferencedDomains)->Domains = (LSA_TRUST_INFORMATION*)((char*)*ReferencedDomains + sizeof(LSA_REFERENCED_DOMAIN_LIST));
+ (*ReferencedDomains)->Domains = (LSA_TRUST_INFORMATION*)((char*)*ReferencedDomains +
+ sizeof(LSA_REFERENCED_DOMAIN_LIST) + sizeof(LSA_TRUST_INFORMATION));
+ (*ReferencedDomains)->Domains[-1].Sid = NULL;
+ RtlInitUnicodeStringEx(&(*ReferencedDomains)->Domains[-1].Name, NULL);
/* Get full names data length and full length needed to store domain name and SID */
for (i = 0; i < Count; i++)
@@ -555,7 +558,8 @@ NTSTATUS WINAPI LsaLookupSids(
*ReferencedDomains = heap_realloc(*ReferencedDomains, domain_fullsize);
/* fix pointer after reallocation */
- (*ReferencedDomains)->Domains = (LSA_TRUST_INFORMATION*)((char*)*ReferencedDomains + sizeof(LSA_REFERENCED_DOMAIN_LIST));
+ (*ReferencedDomains)->Domains = (LSA_TRUST_INFORMATION*)((char*)*ReferencedDomains +
+ sizeof(LSA_REFERENCED_DOMAIN_LIST) + sizeof(LSA_TRUST_INFORMATION));
domain_data = (char*)(*ReferencedDomains)->Domains + sizeof(LSA_TRUST_INFORMATION)*Count;
mapped = 0;
--
2.3.5

View File

@@ -1,39 +0,0 @@
From ce254ac3659e0c040136341d035629f99ec6d1ea Mon Sep 17 00:00:00 2001
From: Qian Hong <qhong@codeweavers.com>
Date: Tue, 7 Apr 2015 13:19:06 +0800
Subject: advapi32: Prepend a hidden LSA_TRUST_INFORMATION in LsaLookupNames2
to avoid crash when Domains[-1] incorrectly accessed by application. (try 2)
---
dlls/advapi32/lsa.c | 10 +++++++---
1 file changed, 7 insertions(+), 3 deletions(-)
diff --git a/dlls/advapi32/lsa.c b/dlls/advapi32/lsa.c
index dfe25b3..258b8ca 100644
--- a/dlls/advapi32/lsa.c
+++ b/dlls/advapi32/lsa.c
@@ -404,14 +404,18 @@ NTSTATUS WINAPI LsaLookupNames2( LSA_HANDLE policy, ULONG flags, ULONG count,
sid = (SID *)(*sids + count);
/* use maximum domain count */
- if (!(*domains = heap_alloc(sizeof(LSA_REFERENCED_DOMAIN_LIST) + sizeof(LSA_TRUST_INFORMATION)*count +
- sid_size_total + domainname_size_total*sizeof(WCHAR))))
+ if (!(*domains = heap_alloc(sizeof(LSA_REFERENCED_DOMAIN_LIST) + sizeof(LSA_TRUST_INFORMATION) * (count + 1) +
+ sid_size_total + domainname_size_total * sizeof(WCHAR))))
{
heap_free(*sids);
return STATUS_NO_MEMORY;
}
(*domains)->Entries = 0;
- (*domains)->Domains = (LSA_TRUST_INFORMATION*)((char*)*domains + sizeof(LSA_REFERENCED_DOMAIN_LIST));
+ (*domains)->Domains = (LSA_TRUST_INFORMATION*)((char*)*domains +
+ sizeof(LSA_REFERENCED_DOMAIN_LIST) + sizeof(LSA_TRUST_INFORMATION));
+ (*domains)->Domains[-1].Sid = NULL;
+ RtlInitUnicodeStringEx(&(*domains)->Domains[-1].Name, NULL);
+
domain_data = (char*)(*domains)->Domains + sizeof(LSA_TRUST_INFORMATION)*count;
domain.Buffer = heap_alloc(domain_size_max*sizeof(WCHAR));
--
2.3.5

View File

@@ -1,68 +0,0 @@
From 77d43d721793edda9b419f7426442a35f0cb5918 Mon Sep 17 00:00:00 2001
From: Qian Hong <qhong@codeweavers.com>
Date: Tue, 7 Apr 2015 11:23:34 +0800
Subject: advapi32: Fallback to Sid string when LookupAccountSid fails.
---
dlls/advapi32/lsa.c | 31 +++++++++++++++++++++++++++++++
1 file changed, 31 insertions(+)
diff --git a/dlls/advapi32/lsa.c b/dlls/advapi32/lsa.c
index 1b270a80829..b8dedbd6d58 100644
--- a/dlls/advapi32/lsa.c
+++ b/dlls/advapi32/lsa.c
@@ -29,6 +29,7 @@
#include "winbase.h"
#include "winreg.h"
#include "winternl.h"
+#include "sddl.h"
#include "advapi32_misc.h"
#include "wine/debug.h"
@@ -562,6 +563,21 @@ NTSTATUS WINAPI LsaLookupSids(
domain.MaximumLength = sizeof(WCHAR);
}
}
+ else
+ {
+ WCHAR *strsid = NULL;
+
+ if (ConvertSidToStringSidW(Sids[i], &strsid))
+ {
+ name_size = strlenW(strsid) + 1;
+
+ (*Names)[i].Name.Length = (name_size - 1) * sizeof(WCHAR);
+ (*Names)[i].Name.MaximumLength = name_size * sizeof(WCHAR);
+ name_fullsize += (*Names)[i].Name.MaximumLength;
+
+ LocalFree(strsid);
+ }
+ }
}
/* now we have full length needed for both */
@@ -605,6 +621,21 @@ NTSTATUS WINAPI LsaLookupSids(
(*Names)[i].DomainIndex = lsa_reflist_add_domain(*ReferencedDomains, &domain, &domain_data);
heap_free(domain.Buffer);
}
+ else
+ {
+ WCHAR *strsid = NULL;
+
+ if (ConvertSidToStringSidW(Sids[i], &strsid))
+ {
+ name_size = strlenW(strsid) + 1;
+ mapped++;
+
+ (*Names)[i].Name.Buffer = name_buffer;
+ memcpy((*Names)[i].Name.Buffer, strsid, name_size * sizeof(WCHAR));
+
+ LocalFree(strsid);
+ }
+ }
name_buffer += name_size;
}
--
2.11.0

View File

@@ -1,56 +0,0 @@
From 486ec8b5ea1b39195d92cfdbfe3a334280780a14 Mon Sep 17 00:00:00 2001
From: Qian Hong <qhong@codeweavers.com>
Date: Tue, 28 Apr 2015 23:00:08 +0800
Subject: [PATCH] advapi32: Fix name and use of DOMAIN_GROUP_RID_USERS.
---
dlls/advapi32/security.c | 7 +++++--
dlls/advapi32/tests/security.c | 4 ++--
2 files changed, 7 insertions(+), 4 deletions(-)
diff --git a/dlls/advapi32/security.c b/dlls/advapi32/security.c
index a7707f15d39..73c1f054d5c 100644
--- a/dlls/advapi32/security.c
+++ b/dlls/advapi32/security.c
@@ -187,7 +187,7 @@ static const WCHAR Domain_Admins[] = { 'D','o','m','a','i','n',' ','A','d','m','
static const WCHAR Domain_Computers[] = { 'D','o','m','a','i','n',' ','C','o','m','p','u','t','e','r','s',0 };
static const WCHAR Domain_Controllers[] = { 'D','o','m','a','i','n',' ','C','o','n','t','r','o','l','l','e','r','s',0 };
static const WCHAR Domain_Guests[] = { 'D','o','m','a','i','n',' ','G','u','e','s','t','s',0 };
-static const WCHAR Domain_Users[] = { 'D','o','m','a','i','n',' ','U','s','e','r','s',0 };
+static const WCHAR None[] = { 'N','o','n','e',0 };
static const WCHAR Enterprise_Admins[] = { 'E','n','t','e','r','p','r','i','s','e',' ','A','d','m','i','n','s',0 };
static const WCHAR ENTERPRISE_DOMAIN_CONTROLLERS[] = { 'E','N','T','E','R','P','R','I','S','E',' ','D','O','M','A','I','N',' ','C','O','N','T','R','O','L','L','E','R','S',0 };
static const WCHAR Everyone[] = { 'E','v','e','r','y','o','n','e',0 };
@@ -1185,7 +1185,10 @@ LookupAccountSidW(
ac = Domain_Admins;
break;
case DOMAIN_GROUP_RID_USERS:
- ac = Domain_Users;
+ /* MSDN says the name of DOMAIN_GROUP_RID_USERS is Domain Users,
+ * tests show that MSDN seems to be wrong. */
+ ac = None;
+ use = 2;
break;
case DOMAIN_GROUP_RID_GUESTS:
ac = Domain_Guests;
diff --git a/dlls/advapi32/tests/security.c b/dlls/advapi32/tests/security.c
index 5f65ed385dd..a9d745cfe39 100644
--- a/dlls/advapi32/tests/security.c
+++ b/dlls/advapi32/tests/security.c
@@ -3003,11 +3003,11 @@ static void test_process_security(void)
dom_size = sizeof(domain);
ret = LookupAccountSidA( NULL, UsersSid, account, &acc_size, domain, &dom_size, &use );
ok(ret, "LookupAccountSid failed with %d\n", ret);
- todo_wine ok(use == SidTypeGroup, "expect SidTypeGroup, got %d\n", use);
+ ok(use == SidTypeGroup, "expect SidTypeGroup, got %d\n", use);
if (PRIMARYLANGID(GetSystemDefaultLangID()) != LANG_ENGLISH)
skip("Non-English locale (test with hardcoded 'None')\n");
else
- todo_wine ok(!strcmp(account, "None"), "expect None, got %s\n", account);
+ ok(!strcmp(account, "None"), "expect None, got %s\n", account);
res = GetTokenInformation( token, TokenUser, NULL, 0, &size );
ok(!res, "Expected failure, got %d\n", res);
--
2.17.1

View File

@@ -1,3 +0,0 @@
# Originally sent 2015 April by Qian Hong, apparently dropped off the list:
# <https://www.winehq.org/pipermail/wine-patches/2015-April/138515.html>
# Some of the patches were labeled as for Cygwin.

View File

@@ -1,15 +1,16 @@
From ba50fc98ee4690e62899d48efc856c2bc910536c Mon Sep 17 00:00:00 2001
From 8044f571b7e674ce9e562488864d48646a9c7b88 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Michael=20M=C3=BCller?= <michael@fds-team.de>
Date: Mon, 7 Aug 2017 01:25:02 +0200
Subject: advapi32/tests: Extend security label / token integrity tests.
Subject: [PATCH] advapi32/tests: Extend security label / token integrity
tests.
---
dlls/advapi32/tests/Makefile.in | 2 +-
dlls/advapi32/tests/security.c | 389 +++++++++++++++++++++++++++++++++++++++-
dlls/advapi32/tests/security.c | 389 +++++++++++++++++++++++++++++++-
2 files changed, 387 insertions(+), 4 deletions(-)
diff --git a/dlls/advapi32/tests/Makefile.in b/dlls/advapi32/tests/Makefile.in
index 36ce031ef62..4437e6e5de7 100644
index 12583e59f57..caee5fae308 100644
--- a/dlls/advapi32/tests/Makefile.in
+++ b/dlls/advapi32/tests/Makefile.in
@@ -1,5 +1,5 @@
@@ -20,10 +21,10 @@ index 36ce031ef62..4437e6e5de7 100644
C_SRCS = \
cred.c \
diff --git a/dlls/advapi32/tests/security.c b/dlls/advapi32/tests/security.c
index 0fd41fe82fa..4a03db27e69 100644
index a736dbffd22..4529469d932 100644
--- a/dlls/advapi32/tests/security.c
+++ b/dlls/advapi32/tests/security.c
@@ -7191,13 +7191,19 @@ static void test_token_security_descriptor(void)
@@ -7034,13 +7034,19 @@ static void test_token_security_descriptor(void)
{
static SID low_level = {SID_REVISION, 1, {SECURITY_MANDATORY_LABEL_AUTHORITY},
{SECURITY_MANDATORY_LOW_RID}};
@@ -46,7 +47,7 @@ index 0fd41fe82fa..4a03db27e69 100644
PROCESS_INFORMATION info;
DWORD size, index, retd;
ACCESS_ALLOWED_ACE *ace;
@@ -7347,6 +7353,185 @@ static void test_token_security_descriptor(void)
@@ -7190,6 +7196,185 @@ static void test_token_security_descriptor(void)
/* The security label is also not inherited */
if (pAddMandatoryAce)
{
@@ -103,7 +104,7 @@ index 0fd41fe82fa..4a03db27e69 100644
+
+ if (sacl)
+ {
+ ret = pGetAce(sacl, 0, (void **)&ace);
+ ret = GetAce(sacl, 0, (void **)&ace);
+ 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);
@@ -165,7 +166,7 @@ index 0fd41fe82fa..4a03db27e69 100644
+
+ if (sacl)
+ {
+ ret = pGetAce(sacl, 0, (void **)&ace);
+ ret = GetAce(sacl, 0, (void **)&ace);
+ 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);
@@ -215,7 +216,7 @@ index 0fd41fe82fa..4a03db27e69 100644
+
+ if (sacl)
+ {
+ ret = pGetAce(sacl, 0, (void **)&ace);
+ ret = GetAce(sacl, 0, (void **)&ace);
+ 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);
@@ -232,7 +233,7 @@ index 0fd41fe82fa..4a03db27e69 100644
ret = InitializeAcl(acl, 256, ACL_REVISION);
ok(ret, "InitializeAcl failed with error %u\n", GetLastError());
@@ -7362,6 +7547,90 @@ static void test_token_security_descriptor(void)
@@ -7205,6 +7390,90 @@ static void test_token_security_descriptor(void)
ret = SetKernelObjectSecurity(token, LABEL_SECURITY_INFORMATION, sd);
ok(ret, "SetKernelObjectSecurity failed with error %u\n", GetLastError());
@@ -272,7 +273,7 @@ index 0fd41fe82fa..4a03db27e69 100644
+
+ if (sacl)
+ {
+ ret = pGetAce(sacl, 0, (void **)&ace);
+ ret = GetAce(sacl, 0, (void **)&ace);
+ 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);
@@ -310,7 +311,7 @@ index 0fd41fe82fa..4a03db27e69 100644
+
+ if (sacl)
+ {
+ ret = pGetAce(sacl, 0, (void **)&ace);
+ ret = GetAce(sacl, 0, (void **)&ace);
+ 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);
@@ -323,7 +324,7 @@ index 0fd41fe82fa..4a03db27e69 100644
}
else
win_skip("SYSTEM_MANDATORY_LABEL not supported\n");
@@ -7467,6 +7736,116 @@ static void test_child_token_sd(void)
@@ -7312,6 +7581,116 @@ static void test_child_token_sd(void)
HeapFree(GetProcessHeap(), 0, sd);
}
@@ -366,7 +367,7 @@ index 0fd41fe82fa..4a03db27e69 100644
+ ok(acl && acl != (void *)0xdeadbeef, "Got invalid SACL\n");
+ ok(!defaulted, "SACL defaulted\n");
+ ok(acl->AceCount == 1, "Expected exactly one ACE\n");
+ ret = pGetAce(acl, 0, (void **)&ace_label);
+ ret = GetAce(acl, 0, (void **)&ace_label);
+ 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);
@@ -421,7 +422,7 @@ index 0fd41fe82fa..4a03db27e69 100644
+ ok(acl && acl != (void *)0xdeadbeef, "Got invalid SACL\n");
+ ok(!defaulted, "SACL defaulted\n");
+ ok(acl->AceCount == 1, "Expected exactly one ACE\n");
+ ret = pGetAce(acl, 0, (void **)&ace_label);
+ ret = GetAce(acl, 0, (void **)&ace_label);
+ 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);
@@ -440,7 +441,7 @@ index 0fd41fe82fa..4a03db27e69 100644
static void test_GetExplicitEntriesFromAclW(void)
{
static const WCHAR wszCurrentUser[] = { 'C','U','R','R','E','N','T','_','U','S','E','R','\0'};
@@ -7653,6 +8032,10 @@ START_TEST(security)
@@ -7571,6 +7950,10 @@ START_TEST(security)
{
if (!strcmp(myARGV[2], "test_token_sd"))
test_child_token_sd();
@@ -452,5 +453,5 @@ index 0fd41fe82fa..4a03db27e69 100644
test_process_security_child();
return;
--
2.13.1
2.17.1

View File

@@ -1,18 +1,18 @@
From 36762a2034391d67fc73ac037f8a7913cee911e7 Mon Sep 17 00:00:00 2001
From 6a09d34647aa517e45bc0bb20a92d0d94a1da888 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Michael=20M=C3=BCller?= <michael@fds-team.de>
Date: Sat, 5 Aug 2017 03:39:55 +0200
Subject: [PATCH] ntdll: Implement process token elevation through manifests.
---
dlls/ntdll/loader.c | 39 ++++++++++++++++++++++++++++++++++++++-
dlls/ntdll/loader.c | 37 +++++++++++++++++++++++++++++++++++++
server/process.c | 8 ++++++++
server/process.h | 1 +
server/protocol.def | 7 +++++++
server/token.c | 14 ++++++++++++++
5 files changed, 68 insertions(+), 1 deletion(-)
5 files changed, 67 insertions(+)
diff --git a/dlls/ntdll/loader.c b/dlls/ntdll/loader.c
index 031bf83b4..c2810d50b 100644
index 2f203447e..7c5dd308b 100644
--- a/dlls/ntdll/loader.c
+++ b/dlls/ntdll/loader.c
@@ -3804,6 +3804,32 @@ void WINAPI LdrInitializeThunk( CONTEXT *context, void **entry, ULONG_PTR unknow
@@ -48,22 +48,6 @@ index 031bf83b4..c2810d50b 100644
/***********************************************************************
* load_global_options
*/
@@ -3866,6 +3892,7 @@ static void load_global_options(void)
}
+
/***********************************************************************
* RtlImageDirectoryEntryToData (NTDLL.@)
*/
@@ -3901,7 +3928,6 @@ PVOID WINAPI RtlImageDirectoryEntryToData( HMODULE module, BOOL image, WORD dir,
return RtlImageRvaToVa( nt, module, addr, NULL );
}
-
/***********************************************************************
* RtlImageRvaToSection (NTDLL.@)
*/
@@ -4233,6 +4259,7 @@ void __wine_process_init(void)
's','y','s','t','e','m','3','2','\\',
'k','e','r','n','e','l','3','2','.','d','l','l',0};
@@ -72,7 +56,7 @@ index 031bf83b4..c2810d50b 100644
WINE_MODREF *wm;
NTSTATUS status;
ANSI_STRING func_name;
@@ -4305,6 +4332,16 @@ void __wine_process_init(void)
@@ -4324,6 +4351,16 @@ void __wine_process_init(void)
virtual_set_large_address_space();
@@ -90,7 +74,7 @@ index 031bf83b4..c2810d50b 100644
RemoveEntryList( &wm->ldr.InLoadOrderModuleList );
InsertHeadList( &peb->LdrData->InLoadOrderModuleList, &wm->ldr.InLoadOrderModuleList );
diff --git a/server/process.c b/server/process.c
index b4b239d2f..3cfc6f88f 100644
index 4c7da9223..d6f71a774 100644
--- a/server/process.c
+++ b/server/process.c
@@ -1107,6 +1107,14 @@ struct process_snapshot *process_snap( int *count )
@@ -109,7 +93,7 @@ index b4b239d2f..3cfc6f88f 100644
DECL_HANDLER(new_process)
{
diff --git a/server/process.h b/server/process.h
index 20ff6beda..e072a35ba 100644
index 5b83e111a..dfe5c4e52 100644
--- a/server/process.h
+++ b/server/process.h
@@ -139,6 +139,7 @@ extern void kill_debugged_processes( struct thread *debugger, int exit_code );
@@ -119,12 +103,12 @@ index 20ff6beda..e072a35ba 100644
+extern void replace_process_token( struct process *process, struct token *token );
/* console functions */
extern void inherit_console(struct thread *parent_thread, struct process *process, obj_handle_t hconin);
extern void inherit_console( struct thread *parent_thread, struct process *parent,
diff --git a/server/protocol.def b/server/protocol.def
index 72fab786a..042072f58 100644
index 6022e1715..45ab670ea 100644
--- a/server/protocol.def
+++ b/server/protocol.def
@@ -3743,6 +3743,13 @@ struct handle_info
@@ -3755,6 +3755,13 @@ struct handle_info
@END
@@ -161,5 +145,5 @@ index fcab79955..181219d21 100644
+ }
+}
--
2.23.0
2.24.0

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