Compare commits

...

98 Commits

Author SHA1 Message Date
Alistair Leslie-Hughes
c7aa87d8a2 Release v5.17.1 2020-09-13 09:37:57 +10:00
Alistair Leslie-Hughes
4125a9880c Updated ntdll-Junction_Points patchset
Fix compile error on older systems.
2020-09-13 09:32:34 +10:00
Alistair Leslie-Hughes
c44db537f1 Release v5.17 2020-09-12 14:55:20 +10:00
Zebediah Figura
71ac12a8e3 server-Desktop_Refcount: Remove patch set.
This was first added in 78db8b7950 with the
message "Added patch to fix possible leak of explorer.exe processes and
implement proper desktop refcounting." The message of course suggests that
even then no application was known that actually depended on this.

In practice this seems wrong, also: once all non-system processes other than
explorer have terminated, the only way explorer.exe can remain alive is if a
system process holds a reference to explorer. The only relevant system
processes are services, and services cannot display a GUI [this is enforced
since Vista], so this should never be the case.
2020-09-11 23:09:57 -05:00
Zebediah Figura
7fc716aa5f Rebase against 01bacebba418bf6f58a644b1aab41be215bd200a. 2020-09-11 23:05:50 -05:00
Alistair Leslie-Hughes
d34ff18679 Disabled color-sRGB-profile
This is causing a lockup of rundll32.
2020-09-11 19:14:29 +10:00
Alistair Leslie-Hughes
a2fed1b240 Updated windows.media.speech.dll patchset 2020-09-11 12:29:08 +10:00
Alistair Leslie-Hughes
88f994eb57 Added color-sRGB-profile patchset 2020-09-11 10:05:53 +10:00
Zebediah Figura
88e6b6c65c Rebase against 0ead40dc9b87ebbd74ad6ebda0182365ab2efde3. 2020-09-09 19:57:52 -05:00
Alistair Leslie-Hughes
9a9401026f Updated mfplat-streaming-support patchset 2020-09-09 14:08:45 +10:00
Alistair Leslie-Hughes
d79463a8b3 Added msxml3-FreeThreadedXMLHTTP60 patchset 2020-09-09 12:37:05 +10:00
Alistair Leslie-Hughes
ec77bc9d66 Added kernelbase-CreateFile2 patchset 2020-09-09 12:34:27 +10:00
Alistair Leslie-Hughes
5969ae1e56 Added combase-CoCreateInstanceFromApp patchset 2020-09-09 12:04:06 +10:00
Alistair Leslie-Hughes
5e685d6df9 Removed --patches patchupdate.py support
Since the patch to print --patches has been removed.  Dont generate the data.
2020-09-09 11:13:11 +10:00
Zebediah Figura
ad66963dff Rebase against 8827eb6a83348057293f89be535ccb74607db608. 2020-09-08 19:35:45 -05:00
Alistair Leslie-Hughes
480bf20bec Rebase against 7ec069d85f5235db98e57291825b9d602ae47ed5. 2020-09-08 08:57:31 +10:00
Alistair Leslie-Hughes
7a5a98a14b Updated server-Desktop_Refcount patchset 2020-09-07 14:03:16 +10:00
Zebediah Figura
0505562a30 Rebase against 432858b285d2b63eca6f99a162c9a13dd6e6ac71. 2020-09-04 17:22:08 -05:00
Zebediah Figura
d7df18ad2d server-Desktop_Refcount: Add more alloc_handle callbacks to new objects. 2020-09-03 21:33:08 -05:00
Zebediah Figura
603343a361 Staging: Add mistakenly omitted backslash to NT object path name. 2020-09-03 21:26:52 -05:00
Zebediah Figura
1d149ff59d Rebase against 314368e6c442f043ebfc22b70c1113e4e6232c04. 2020-09-03 21:24:20 -05:00
Alistair Leslie-Hughes
285e594688 Rebase against 87f41e6b408dd01055ff6a378b90d089d61ec370. 2020-09-03 08:40:02 +10:00
Zebediah Figura
6c6ef5bfa4 Rebase against 00a0e2cd8c4df240371ddd22516e4e3544a142ce. 2020-09-02 09:38:53 -05:00
Alistair Leslie-Hughes
db87b45e49 Added windows.media.speech.dll patchset 2020-09-01 12:54:02 +10:00
Alistair Leslie-Hughes
21620bf3cf Rebase against 518d06404ad70aa9812a77d019a18fe79c16f831. 2020-09-01 12:17:43 +10:00
Alistair Leslie-Hughes
f6495b290f Updated mfplat-streaming-support patchset 2020-08-30 13:07:52 +10:00
Alistair Leslie-Hughes
caf4d5011e Updated windows.gaming.input-dll patchset
Add Wine bug for tracking
2020-08-30 13:06:33 +10:00
Alistair Leslie-Hughes
c3138a19dc Release v5.16 2020-08-30 09:12:20 +10:00
Alistair Leslie-Hughes
5af9636365 Rebase against 5bb27d1edb2b6c8c04991cc88e54f161f0c41625. 2020-08-29 08:55:38 +10:00
Alistair Leslie-Hughes
fd175dc863 Rebase against 7489efa03f09c6c3613668a0169abade6b390d09. 2020-08-28 09:44:07 +10:00
Alistair Leslie-Hughes
2b119ef030 Rebase against 666f614f3f09211614024f87a238aa49c79f574a. 2020-08-27 09:15:54 +10:00
Alistair Leslie-Hughes
c4b73e1752 Added windows.gaming.input-dll patchset 2020-08-26 18:44:32 +10:00
Alistair Leslie-Hughes
424cc0395c Added srvcli-dll patchset 2020-08-26 18:15:23 +10:00
Alistair Leslie-Hughes
298af8f9fe Added netutils-dll patchset 2020-08-26 18:07:51 +10:00
Alistair Leslie-Hughes
416f7f3bb5 Added xactengine3_7-PrepareWave patchset 2020-08-26 17:56:15 +10:00
Alistair Leslie-Hughes
8321c62f24 Rebase against a53288e8c95d59b03eefe10f4963b555b04426aa. 2020-08-26 10:01:53 +10:00
Zebediah Figura
d452acf61b Rebase against aaea13a128b76fa0076b8852187c7d10e5eb5d68. 2020-08-24 21:21:59 -05:00
Alistair Leslie-Hughes
663c3ba497 Rebase against ab94abb14f74fe863ae40dafc7a8301db22792fc. 2020-08-22 09:32:28 +10:00
Alistair Leslie-Hughes
4242749b5b Rebase against 13ea90d80f7275e1ad4f3fc3c1c75b68bdbefbb4.
Two patches have been disabled and I think they need to rewritten to use the
PS_ATTRIBUTE_TOKEN attribute instead of calling the RtlCreateUserProcess directly.
2020-08-21 17:46:43 +10:00
Zebediah Figura
7d08bb86e1 Rebase against 8f3bd63b52f03ff05e9d2a00a2e129a0b0092969. 2020-08-18 19:41:11 -05:00
Alistair Leslie-Hughes
28fad42582 Updated mfplat-streaming-support patchset
Fix typo.
2020-08-17 07:56:43 +10:00
Alistair Leslie-Hughes
68c50a8fb4 Updated mfplat-streaming-support patchset
Wine-bug: https://bugs.winehq.org/show_bug.cgi?id=49708
2020-08-16 14:49:27 +10:00
Zebediah Figura
47035cfbf5 readme: Edits to the paragraphs on donation. 2020-08-15 19:48:05 -05:00
Alistair Leslie-Hughes
8e20899551 Release v5.15.2 2020-08-16 10:39:10 +10:00
Zebediah Figura
03290f8a41 ole32-HGLOBALStream: Properly rebase. 2020-08-15 19:32:53 -05:00
Alistair Leslie-Hughes
c811ed7bd9 Release v5.15.1 2020-08-16 09:34:43 +10:00
Zebediah Figura
d9eb78e597 ole32-HGLOBALStream: Remove patches for thread safety.
On the recommendation of Huw Davies, on the grounds that no known application needs them, and that ole32 is in general not thread-safe.
2020-08-15 15:47:53 -05:00
Zebediah Figura
150ce22fa2 mfplat-streaming-support: Correct a variable name.
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=49705
2020-08-15 12:15:07 -05:00
Alistair Leslie-Hughes
eae4093bf8 Release v5.15 2020-08-15 17:34:37 +10:00
Alistair Leslie-Hughes
621cf69c80 Updated mfplat-streaming-support patchset
Fixed memory leak
2020-08-15 17:33:28 +10:00
Zebediah Figura
bc6c681225 Rebase against 447bce4117a58910690a0d2610ebcbdd49ae9127. 2020-08-13 19:43:35 -05:00
Zebediah Figura
46420edcd0 Rebase against 03e9de4920173d3fa955cf28a8d2b60bd3b06261. 2020-08-11 19:17:01 -05:00
Alistair Leslie-Hughes
af56d3821a Added mfplat-streaming-support patchset 2020-08-11 10:37:52 +10:00
Zebediah Figura
32082f4d6f Rebase against 1ec8bf9b739f1528b742169670eac2350b33a7d4. 2020-08-07 17:06:06 -05:00
Alistair Leslie-Hughes
59e6a606b9 Added programs-systeminfo patchset 2020-08-07 14:44:27 +10:00
Alistair Leslie-Hughes
bf043458ba Updated programs-findstr patchset 2020-08-07 14:17:41 +10:00
Zebediah Figura
7c1249e5c0 Rebase against 8cbbb4f394678411fdb57237553f5d974527877f. 2020-08-06 18:17:01 -05:00
Alistair Leslie-Hughes
3b24c1cf1d Rebase against f7895ef25a4cb2115ffbe04d28b87bcb6ee3c0b7. 2020-08-06 10:04:28 +10:00
Alistair Leslie-Hughes
eb32fd78ae Rebase against 2b76b9f234eb5d4753337d8b080f2c050daae3ff. 2020-08-05 10:37:50 +10:00
Alistair Leslie-Hughes
e4a11b1663 Rebase against 18d7bc985990c1022a9f42d20cc819ba141af5cb. 2020-08-04 10:43:36 +10:00
Alistair Leslie-Hughes
90d57326b5 Added winmm-fullpath patchset 2020-08-03 18:53:37 +10:00
Alistair Leslie-Hughes
b71d588d78 Release v5.14 2020-08-02 14:09:58 +10:00
Alistair Leslie-Hughes
bafd1bfc74 Update README.md 2020-08-02 14:06:53 +10:00
Alistair Leslie-Hughes
23ae4e6c7a Rebase against 70b735760e2e89db11aa76ab3956ea0d1f6e40d4. 2020-08-02 13:53:05 +10:00
Alistair Leslie-Hughes
6ecb8df033 Added programs-findstr patchset 2020-07-31 11:49:51 +10:00
Alistair Leslie-Hughes
364ce82bd1 Rebase against ed8358393413d52096c56e96b44ee73f15053f91. 2020-07-31 11:28:43 +10:00
Alistair Leslie-Hughes
261a981d77 Rebase against 6d66efa3fee7f529bba6c478e71d54e0d66995f5. 2020-07-29 09:47:49 +10:00
Zebediah Figura
f7013bb1b4 Rebase against 0d42388095e4fd5c7702a61824b01ce0f9fc4d74. 2020-07-24 18:41:25 -05:00
Alistair Leslie-Hughes
99c296e10c Rebase against 2a6de8d7f7d6f5ac018d8e330cfa580fc0c3b9e5. 2020-07-24 09:56:26 +10:00
Alistair Leslie-Hughes
02be23fa52 Rebase against 07030059486e0121051b452c94d37f12931cabf4. 2020-07-23 09:33:43 +10:00
Alistair Leslie-Hughes
352d5a391b Rebase against a599d645e33a128fae2d6fbfd7fdc07a8cefda95. 2020-07-22 08:10:30 +10:00
Zebediah Figura
4373a1011e Rebase against a455ff61b40ff73b48d0ccc9c1f14679bb65ab8d. 2020-07-20 19:55:28 -05:00
Paul Gofman
26d3815d8c Updated ntdll-WRITECOPY patchset.
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=49577
2020-07-20 20:08:02 +03:00
Alistair Leslie-Hughes
54ae005107 Release v5.13 2020-07-19 09:30:32 +10:00
Alistair Leslie-Hughes
0e493bcef1 Added user32-QueryDisplayConfig 2020-07-19 09:25:32 +10:00
Alistair Leslie-Hughes
ee89d77f18 Added ntdll-freebsd-compile 2020-07-19 09:06:06 +10:00
Zebediah Figura
4ffe305c90 ntdll-Junction_Points: Update with rebased patch set from Erich E. Hoover. 2020-07-18 11:58:32 -05:00
Zebediah Figura
1a87edb76b Rebase against 536aec511612afd002808508d76bd5640f359f25. 2020-07-17 17:52:46 -05:00
Alistair Leslie-Hughes
914f67c020 Rebase against 9415667cdfbb4c94cdfe03a1e80a87482bee98c1. 2020-07-17 11:26:22 +10:00
Alistair Leslie-Hughes
c3c5d48b18 Rebase against 42cb7d2ad1caba08de235e6319b9967296b5d554. 2020-07-16 09:08:33 +10:00
Paul Gofman
884f646404 Updated winebuild-pe_syscall_thunks patchset.
Fix context eip in NtGetContextThread() on i386.
2020-07-15 12:48:46 +03:00
Paul Gofman
5c4729e4ce Updated winebuild-pe_syscall_thunks patchset.
Fix non-PE build.
2020-07-15 02:55:55 +03:00
Zebediah Figura
103195f07d Rebase against 54b2a10659871032720df31ae9ca6cba2ff4acf0. 2020-07-14 18:10:39 -05:00
Paul Gofman
3acacd0ee1 Updated and reenabled ntdll-Syscall_Emulation patchset. 2020-07-14 16:13:54 +03:00
Paul Gofman
d2d0366ce5 Added winebuild-pe_syscall_thunks patchset.
Restores the major bits of functionality of
the former 'winebuild-Fake_Dlls' patchset which
are yet missing upstream.
2020-07-14 16:08:50 +03:00
Zebediah Figura
913b39b117 Rebase against fdb3d9ae320363c1bd9fa716b167a7ad313e638b. 2020-07-13 17:56:04 -05:00
Zebediah Figura
4d315a6098 ntdll-DOS_Attributes: Correct rebase. 2020-07-11 15:42:27 -05:00
Zebediah Figura
5e5dafe07a ntdll-SystemRoot_Symlink: Remove patch set.
This patch is just incorrect. wineserver always is case-sensitive unless OBJ_CASE_INSENSITIVE is specified.

For reference, the relevant cygwin code:
https://cygwin.com/git/?p=newlib-cygwin.git;a=blob;f=winsup/cygwin/shared.cc;h=c939e0d0fb88506684038c01c5fd6141c8f130f8;hb=refs/heads/master
2020-07-11 12:32:23 -05:00
Zebediah Figura
bb79717d86 ntdll-NtDevicePath: Remove incorrect CDECL from nt_to_unix_file_name().
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=49555
2020-07-11 10:21:36 -05:00
Zebediah Figura
b1219b7fae Rebase against caa41d4917a84dbbeb4aa14f18cfecfd17efe71a. 2020-07-10 21:10:05 -05:00
Zebediah Figura
046f6604b7 Rebase against 18ae539c914a9b5a89f63d8cf9c2a21273eccc6c. 2020-07-09 23:17:40 -05:00
Zebediah Figura
f6954e6e77 Rebase against 262e4ab9e0eeb126dde5cb4cba13fbf7f1d1cef0. 2020-07-08 20:46:51 -05:00
Alistair Leslie-Hughes
553c1cff5a dsound-EAX - Fix compile 2020-07-08 10:38:50 +10:00
Zebediah Figura
4ef21bcf82 dsound-EAX: Correct rebase against 130870084 and e09190399. 2020-07-07 18:10:13 -05:00
Zebediah Figura
ebbd01086e kernel32-K32GetPerformanceInfo: Remove patch set.
As of 8622eb326fb, SystemProcessInformation should now actually be reasonably
fast, requiring only a couple of server calls. This patch set would make
K32GetPerformanceInfo() even faster, but without any record of what it helps,
it's not particularly likely that it's making a significant difference anymore.
2020-07-07 18:05:07 -05:00
Zebediah Figura
b1765ff74e Rebase against e0e3b6bc91f7db956e3a66f2938eea45d4055a39. 2020-07-07 17:59:50 -05:00
Alistair Leslie-Hughes
21a97e1f88 Rebase against 6e2a54ec76d225d76506fe909a9c300702636d5b. 2020-07-07 08:50:59 +10:00
Alistair Leslie-Hughes
4f13965432 Release v5.12.1
Compile Fixes.
2020-07-06 07:55:07 +10:00
324 changed files with 30413 additions and 22304 deletions

View File

@@ -79,4 +79,32 @@ Contributing
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.
requests are strongly dispreferred, especially for patches.
Donations
---------
wine-staging is a large set of experimental patches which provide various
improvements to WINE, but are not quite suitable for upstreaming. This set of
patches has been continuously managed for many years by a small group of
volunteers. The way this works is that we often review patches attached to
various bug reports found at https://bugs.winehq.org/ which may fix bugs, but
may not be quite suitable to be upstreamed due to needing some cleanup or more
proper implementation. In the event that this happens, we add the patches to
wine-staging instead, and keep them updated and maintained as well as attempt to
clean them up to be upstreamed. We also both write and verify patches which fix
various bugs that may not have patches, and in turn allow them run better using
WINE. This includes testing on various hardware, games, and applications.
Any expenses for applications, games, or hardware which we do not own comes out
of pocket. In order to alleviate these expenses, we are now accepting donations.
This in turn allows us to continue to perform testing, provide fixes, and get
them upstreamed, ultimately aiming to provide a better experience for all WINE
users. All of our work is provided publicly for free and can be found at
<https://github.com/wine-staging/wine-staging>. We do not expect to be paid for
any of the work provided, nor will donators receive any special benefits or
compensation.
Donations are recieved through Patreon. Anyone interested may donate here:
https://www.patreon.com/winestaging

View File

@@ -1,49 +1,60 @@
From aa9cb874b1fb89601d6a5a735b442b8a7aa7b3aa Mon Sep 17 00:00:00 2001
From 700513f28e4844cbfc40b3ebf1b77cf121b71e71 Mon Sep 17 00:00:00 2001
From: Sebastian Lackner <sebastian@fds-team.de>
Date: Thu, 2 Oct 2014 19:44:31 +0200
Subject: [PATCH] kernel32: Add winediag message to show warning, that this
isn't vanilla wine.
Subject: [PATCH] ntdll: Print a warning message specifying the wine-staging
branch name and version.
---
dlls/kernel32/process.c | 11 +++++++++++
1 file changed, 11 insertions(+)
dlls/ntdll/loader.c | 15 +++++++++++++++
1 file changed, 15 insertions(+)
diff --git a/dlls/kernel32/process.c b/dlls/kernel32/process.c
index 8f506fcf1320..45bfe7fe7b5d 100644
--- a/dlls/kernel32/process.c
+++ b/dlls/kernel32/process.c
@@ -60,6 +60,7 @@
WINE_DEFAULT_DEBUG_CHANNEL(process);
WINE_DECLARE_DEBUG_CHANNEL(relay);
diff --git a/dlls/ntdll/loader.c b/dlls/ntdll/loader.c
index 587c87bbfc0..05b40326d82 100644
--- a/dlls/ntdll/loader.c
+++ b/dlls/ntdll/loader.c
@@ -44,6 +44,7 @@ WINE_DECLARE_DEBUG_CHANNEL(relay);
WINE_DECLARE_DEBUG_CHANNEL(snoop);
WINE_DECLARE_DEBUG_CHANNEL(loaddll);
WINE_DECLARE_DEBUG_CHANNEL(imports);
+WINE_DECLARE_DEBUG_CHANNEL(winediag);
typedef struct
{
@@ -125,6 +126,7 @@ static inline DWORD call_process_entry( PEB *peb, LPTHREAD_START_ROUTINE entry )
#ifdef _WIN64
#define DEFAULT_SECURITY_COOKIE_64 (((ULONGLONG)0x00002b99 << 32) | 0x2ddfa232)
@@ -3487,6 +3488,7 @@ static void process_breakpoint(void)
__ENDTRY
}
#endif
+extern const char * CDECL wine_get_version(void);
/***********************************************************************
* __wine_start_process
*
@@ -150,6 +152,15 @@ void CDECL __wine_start_process( LPTHREAD_START_ROUTINE entry, PEB *peb )
__TRY
{
+ if (CreateEventA(0, 0, 0, "__winestaging_warn_event") && GetLastError() != ERROR_ALREADY_EXISTS)
+ {
+ FIXME_(winediag)("Wine Staging %s is a testing version containing experimental patches.\n", wine_get_version());
+ FIXME_(winediag)("Please mention your exact version when filing bug reports on winehq.org.\n");
+ }
+ else
+ WARN_(winediag)("Wine Staging %s is a testing version containing experimental patches.\n", wine_get_version());
+
+
if (!CheckRemoteDebuggerPresent( GetCurrentProcess(), &being_debugged ))
being_debugged = FALSE;
/******************************************************************
* LdrInitializeThunk (NTDLL.@)
@@ -3497,6 +3499,9 @@ static void process_breakpoint(void)
void WINAPI LdrInitializeThunk( CONTEXT *context, ULONG_PTR unknown2, ULONG_PTR unknown3, ULONG_PTR unknown4 )
{
static const unsigned int fls_slot_count = 8 * sizeof(NtCurrentTeb()->Peb->FlsBitmapBits);
+ OBJECT_ATTRIBUTES staging_event_attr;
+ UNICODE_STRING staging_event_string;
+ HANDLE staging_event;
static int attach_done;
int i;
NTSTATUS status;
@@ -3515,6 +3520,16 @@ void WINAPI LdrInitializeThunk( CONTEXT *context, ULONG_PTR unknown2, ULONG_PTR
entry = (void **)&context->u.s.X0;
#endif
+ RtlInitUnicodeString( &staging_event_string, L"\\__wine_staging_warn_event" );
+ InitializeObjectAttributes( &staging_event_attr, &staging_event_string, OBJ_OPENIF, NULL, NULL );
+ if (NtCreateEvent( &staging_event, EVENT_ALL_ACCESS, &staging_event_attr, NotificationEvent, FALSE ) == STATUS_SUCCESS)
+ {
+ FIXME_(winediag)("wine-staging %s is a testing version containing experimental patches.\n", wine_get_version());
+ FIXME_(winediag)("Please mention your exact version when filing bug reports on winehq.org.\n");
+ }
+ else
+ WARN_(winediag)("wine-staging %s is a testing version containing experimental patches.\n", wine_get_version());
+
if (process_detaching) NtTerminateThread( GetCurrentThread(), 0 );
RtlEnterCriticalSection( &loader_section );
--
2.26.2
2.28.0

View File

@@ -1,39 +1,25 @@
From c097870c69720ece3874ad4ff987408a8c24ffb2 Mon Sep 17 00:00:00 2001
From b1bbc311c1e2dec72e04be9c668b6072d11b04fb Mon Sep 17 00:00:00 2001
From: Sebastian Lackner <sebastian@fds-team.de>
Date: Thu, 2 Oct 2014 19:53:46 +0200
Subject: [PATCH] winelib: Append '(Staging)' at the end of the version string.
---
dlls/ntdll/Makefile.in | 2 +-
libs/wine/Makefile.in | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/dlls/ntdll/Makefile.in b/dlls/ntdll/Makefile.in
index ebf607e9d43..de93445d4e3 100644
index a553536d4c7..71e3df13b66 100644
--- a/dlls/ntdll/Makefile.in
+++ b/dlls/ntdll/Makefile.in
@@ -69,7 +69,7 @@ server_EXTRADEFS = \
-DBIN_TO_DATADIR=\"`$(MAKEDEP) -R ${bindir} ${datadir}/wine`\"
@@ -81,7 +81,7 @@ unix_loader_EXTRADEFS = \
-DBIN_TO_DATADIR=\"`${MAKEDEP} -R ${bindir} ${datadir}/wine`\"
unix/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 -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
diff --git a/libs/wine/Makefile.in b/libs/wine/Makefile.in
index fe2a2b45e58..1e55a6b1f46 100644
--- a/libs/wine/Makefile.in
+++ b/libs/wine/Makefile.in
@@ -100,7 +100,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 -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.26.2
2.28.0

View File

@@ -1,117 +0,0 @@
From 599c50c9e339fe04e96fdb665b3d7ccb1a7708b7 Mon Sep 17 00:00:00 2001
From: Sebastian Lackner <sebastian@fds-team.de>
Date: Thu, 29 May 2014 23:43:45 +0200
Subject: [PATCH] loader: Add commandline option --patches to show the patch
list.
---
include/wine/library.h | 1 +
libs/wine/config.c | 6 ++++++
libs/wine/wine.map | 1 +
loader/main.c | 42 +++++++++++++++++++++++++++++++++++++++++-
4 files changed, 49 insertions(+), 1 deletion(-)
diff --git a/include/wine/library.h b/include/wine/library.h
index 090b8349559..b8a4a2df576 100644
--- a/include/wine/library.h
+++ b/include/wine/library.h
@@ -42,6 +42,7 @@ extern "C" {
/* configuration */
extern const char *wine_get_version(void);
+extern const void *wine_get_patches(void);
extern const char *wine_get_build_id(void);
extern void wine_init_argv0_path( const char *argv0 );
extern void wine_exec_wine_binary( const char *name, char **argv, const char *env_var );
diff --git a/libs/wine/config.c b/libs/wine/config.c
index f5b4c0de9af..e52739d55ad 100644
--- a/libs/wine/config.c
+++ b/libs/wine/config.c
@@ -515,6 +515,12 @@ const char *wine_get_version(void)
return PACKAGE_VERSION;
}
+/* return the applied non-standard patches */
+const void *wine_get_patches(void)
+{
+ return NULL;
+}
+
/* return the build id string */
const char *wine_get_build_id(void)
{
diff --git a/libs/wine/wine.map b/libs/wine/wine.map
index 1143b129734..55f874d3e74 100644
--- a/libs/wine/wine.map
+++ b/libs/wine/wine.map
@@ -13,6 +13,7 @@ WINE_1.0
wine_exec_wine_binary;
wine_get_build_id;
wine_get_version;
+ wine_get_patches;
wine_init;
wine_init_argv0_path;
wine_mmap_add_reserved_area;
diff --git a/loader/main.c b/loader/main.c
index 0e6b6f66b50..24bcfff8c4c 100644
--- a/loader/main.c
+++ b/loader/main.c
@@ -55,7 +55,8 @@ static void check_command_line( int argc, char *argv[] )
static const char usage[] =
"Usage: wine PROGRAM [ARGUMENTS...] Run the specified program\n"
" wine --help Display this help and exit\n"
- " wine --version Output version information and exit";
+ " wine --version Output version information and exit\n"
+ " wine --patches Output patch information and exit";
if (argc <= 1)
{
@@ -72,6 +73,45 @@ static void check_command_line( int argc, char *argv[] )
printf( "%s\n", wine_get_build_id() );
exit(0);
}
+ if (!strcmp( argv[1], "--patches" ))
+ {
+ const struct
+ {
+ const char *author;
+ const char *subject;
+ int revision;
+ }
+ *next, *cur = wine_get_patches();
+
+ if (!cur)
+ {
+ fprintf( stderr, "Patchlist not available.\n" );
+ exit(1);
+ }
+
+ while (cur->author)
+ {
+ next = cur + 1;
+ while (next->author)
+ {
+ if (strcmp( cur->author, next->author )) break;
+ next++;
+ }
+
+ printf( "%s (%d):\n", cur->author, (int)(next - cur) );
+ while (cur < next)
+ {
+ printf( " %s", cur->subject );
+ if (cur->revision != 1)
+ printf( " [rev %d]", cur->revision );
+ printf( "\n" );
+ cur++;
+ }
+ printf( "\n" );
+ }
+
+ exit(0);
+ }
}
--
2.26.2

View File

@@ -0,0 +1 @@
Depends: ntdll-FLS_Callbacks

View File

@@ -1,29 +1,43 @@
From 1eb8acd819f9eee8fdf154d0ef43881008265916 Mon Sep 17 00:00:00 2001
From 1b222275e7faf71ae1e5c94e297004055ec6f82f Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Michael=20M=C3=BCller?= <michael@fds-team.de>
Date: Fri, 4 Aug 2017 02:33:14 +0200
Subject: ntdll: Implement NtFilterToken.
Subject: [PATCH] ntdll: Implement NtFilterToken.
---
dlls/ntdll/nt.c | 59 ++++++++++++++++++++++++++++++++++++
dlls/ntdll/ntdll.spec | 2 +-
include/winnt.h | 5 +++
include/winternl.h | 1 +
server/process.c | 2 +-
server/protocol.def | 10 ++++++
server/security.h | 4 ++-
server/token.c | 84 +++++++++++++++++++++++++++++++++++++++++++++++++--
8 files changed, 162 insertions(+), 5 deletions(-)
dlls/ntdll/ntdll.spec | 2 +-
dlls/ntdll/unix/security.c | 64 +++++++++++++++++++++++++++++
include/winnt.h | 5 +++
include/winternl.h | 1 +
server/named_pipe.c | 2 +-
server/process.c | 2 +-
server/protocol.def | 10 +++++
server/security.h | 4 +-
server/token.c | 84 +++++++++++++++++++++++++++++++++++++-
9 files changed, 168 insertions(+), 6 deletions(-)
diff --git a/dlls/ntdll/nt.c b/dlls/ntdll/nt.c
index c3f5df3..59a08de 100644
--- a/dlls/ntdll/nt.c
+++ b/dlls/ntdll/nt.c
@@ -119,6 +119,65 @@ NTSTATUS WINAPI NtDuplicateToken(
diff --git a/dlls/ntdll/ntdll.spec b/dlls/ntdll/ntdll.spec
index a3bc57716da..f604c8a3c35 100644
--- a/dlls/ntdll/ntdll.spec
+++ b/dlls/ntdll/ntdll.spec
@@ -208,7 +208,7 @@
# @ stub NtEnumerateSystemEnvironmentValuesEx
@ stdcall -syscall NtEnumerateValueKey(long long long ptr long ptr)
@ stub NtExtendSection
-# @ stub NtFilterToken
+@ stdcall -syscall NtFilterToken(long long ptr ptr ptr ptr)
@ stdcall -syscall NtFindAtom(ptr long ptr)
@ stdcall -syscall NtFlushBuffersFile(long ptr)
@ stdcall -syscall NtFlushInstructionCache(long ptr long)
diff --git a/dlls/ntdll/unix/security.c b/dlls/ntdll/unix/security.c
index daecc5e0591..d063d43d6d4 100644
--- a/dlls/ntdll/unix/security.c
+++ b/dlls/ntdll/unix/security.c
@@ -604,6 +604,70 @@ NTSTATUS WINAPI NtAdjustPrivilegesToken( HANDLE token, BOOLEAN disable, TOKEN_PR
}
/******************************************************************************
+ * NtFilterToken [NTDLL.@]
+ * ZwFilterToken [NTDLL.@]
+/***********************************************************************
+ * NtFilterToken (NTDLL.@)
+ */
+NTSTATUS WINAPI NtFilterToken( HANDLE token, ULONG flags, TOKEN_GROUPS *disable_sids,
+ TOKEN_PRIVILEGES *privileges, TOKEN_GROUPS *restrict_sids,
@@ -52,14 +66,18 @@ index c3f5df3..59a08de 100644
+ BYTE *tmp;
+
+ for (i = 0; i < disable_sids->GroupCount; i++)
+ sids_len += RtlLengthSid( disable_sids->Groups[i].Sid );
+ {
+ SID *sid = disable_sids->Groups[i].Sid;
+ sids_len += offsetof( SID, SubAuthority[sid->SubAuthorityCount] );
+ }
+
+ sids = RtlAllocateHeap( GetProcessHeap(), 0, sids_len );
+ sids = malloc( sids_len );
+ if (!sids) return STATUS_NO_MEMORY;
+
+ for (i = 0, tmp = (BYTE *)sids; i < disable_sids->GroupCount; i++, tmp += len)
+ {
+ len = RtlLengthSid( disable_sids->Groups[i].Sid );
+ SID *sid = disable_sids->Groups[i].Sid;
+ len = offsetof( SID, SubAuthority[sid->SubAuthorityCount] );
+ memcpy( tmp, disable_sids->Groups[i].Sid, len );
+ }
+ }
@@ -76,32 +94,20 @@ index c3f5df3..59a08de 100644
+ }
+ SERVER_END_REQ;
+
+ RtlFreeHeap( GetProcessHeap(), 0, sids );
+ free( sids );
+ return status;
+}
+
+/******************************************************************************
* NtOpenProcessToken [NTDLL.@]
* ZwOpenProcessToken [NTDLL.@]
+
+
/***********************************************************************
* NtPrivilegeCheck (NTDLL.@)
*/
diff --git a/dlls/ntdll/ntdll.spec b/dlls/ntdll/ntdll.spec
index c260b0d..3c5e69c 100644
--- a/dlls/ntdll/ntdll.spec
+++ b/dlls/ntdll/ntdll.spec
@@ -176,7 +176,7 @@
# @ stub NtEnumerateSystemEnvironmentValuesEx
@ stdcall NtEnumerateValueKey(long long long ptr long ptr)
@ stub NtExtendSection
-# @ stub NtFilterToken
+@ stdcall NtFilterToken(long long ptr ptr ptr ptr)
@ stdcall NtFindAtom(ptr long ptr)
@ stdcall NtFlushBuffersFile(long ptr)
@ stdcall NtFlushInstructionCache(long ptr long)
diff --git a/include/winnt.h b/include/winnt.h
index 16d96d8..4e238f9 100644
index e1cf78420a6..da17fe3e330 100644
--- a/include/winnt.h
+++ b/include/winnt.h
@@ -3904,6 +3904,11 @@ typedef enum _TOKEN_INFORMATION_CLASS {
@@ -4221,6 +4221,11 @@ typedef enum _TOKEN_INFORMATION_CLASS {
TOKEN_ADJUST_SESSIONID | \
TOKEN_ADJUST_DEFAULT )
@@ -114,10 +120,10 @@ index 16d96d8..4e238f9 100644
#define _SECURITY_DEFINED
diff --git a/include/winternl.h b/include/winternl.h
index c84e6d7..288f93e 100644
index b3fbb90feff..4687a410ca4 100644
--- a/include/winternl.h
+++ b/include/winternl.h
@@ -2303,6 +2303,7 @@ NTSYSAPI NTSTATUS WINAPI NtDuplicateToken(HANDLE,ACCESS_MASK,POBJECT_ATTRIBUTES
@@ -2749,6 +2749,7 @@ NTSYSAPI NTSTATUS WINAPI NtDuplicateToken(HANDLE,ACCESS_MASK,POBJECT_ATTRIBUTES
NTSYSAPI NTSTATUS WINAPI NtEnumerateKey(HANDLE,ULONG,KEY_INFORMATION_CLASS,void *,DWORD,DWORD *);
NTSYSAPI NTSTATUS WINAPI NtEnumerateValueKey(HANDLE,ULONG,KEY_VALUE_INFORMATION_CLASS,PVOID,ULONG,PULONG);
NTSYSAPI NTSTATUS WINAPI NtExtendSection(HANDLE,PLARGE_INTEGER);
@@ -125,11 +131,24 @@ index c84e6d7..288f93e 100644
NTSYSAPI NTSTATUS WINAPI NtFindAtom(const WCHAR*,ULONG,RTL_ATOM*);
NTSYSAPI NTSTATUS WINAPI NtFlushBuffersFile(HANDLE,IO_STATUS_BLOCK*);
NTSYSAPI NTSTATUS WINAPI NtFlushInstructionCache(HANDLE,LPCVOID,SIZE_T);
diff --git a/server/named_pipe.c b/server/named_pipe.c
index b259abb8de4..4cd4d7dc4a8 100644
--- a/server/named_pipe.c
+++ b/server/named_pipe.c
@@ -1142,7 +1142,7 @@ static int pipe_server_ioctl( struct fd *fd, ioctl_code_t code, struct async *as
if (current->process->token) /* FIXME: use the client token */
{
struct token *token;
- if (!(token = token_duplicate( current->process->token, 0, SecurityImpersonation, NULL )))
+ if (!(token = token_duplicate( current->process->token, 0, SecurityImpersonation, NULL, NULL, 0, NULL, 0 )))
return 0;
if (current->token) release_object( current->token );
current->token = token;
diff --git a/server/process.c b/server/process.c
index f8739d0..71d9d6d 100644
index 5e587b28cbe..406167e825b 100644
--- a/server/process.c
+++ b/server/process.c
@@ -566,7 +566,7 @@ struct thread *create_process( int fd, struct thread *parent_thread, int inherit
@@ -577,7 +577,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 */
@@ -139,10 +158,10 @@ index f8739d0..71d9d6d 100644
}
if (!process->handles || !process->token) goto error;
diff --git a/server/protocol.def b/server/protocol.def
index 35824ae..6ee6d28 100644
index a121c371c19..ee07b1eca14 100644
--- a/server/protocol.def
+++ b/server/protocol.def
@@ -3356,6 +3356,16 @@ enum caret_state
@@ -3263,6 +3263,16 @@ enum caret_state
obj_handle_t new_handle; /* duplicated handle */
@END
@@ -160,10 +179,10 @@ index 35824ae..6ee6d28 100644
obj_handle_t handle; /* handle to the token */
unsigned int desired_access; /* desired access to the object */
diff --git a/server/security.h b/server/security.h
index 873bbc6..bc4a8f6 100644
index 606dbb2ab2c..6c337143c3d 100644
--- a/server/security.h
+++ b/server/security.h
@@ -55,7 +55,9 @@ extern const PSID security_high_label_sid;
@@ -56,7 +56,9 @@ extern const PSID security_high_label_sid;
extern struct token *token_create_admin(void);
extern int token_assign_label( struct token *token, PSID label );
extern struct token *token_duplicate( struct token *src_token, unsigned primary,
@@ -175,10 +194,10 @@ index 873bbc6..bc4a8f6 100644
const LUID_AND_ATTRIBUTES *reqprivs,
unsigned int count, LUID_AND_ATTRIBUTES *usedprivs);
diff --git a/server/token.c b/server/token.c
index 0810a61..2f6a467 100644
index 2fa95e17aaf..38a4c203d54 100644
--- a/server/token.c
+++ b/server/token.c
@@ -276,6 +276,19 @@ static int acl_is_valid( const ACL *acl, data_size_t size )
@@ -285,6 +285,19 @@ static int acl_is_valid( const ACL *acl, data_size_t size )
return TRUE;
}
@@ -198,7 +217,7 @@ index 0810a61..2f6a467 100644
/* checks whether all members of a security descriptor fit inside the size
* of memory specified */
int sd_is_valid( const struct security_descriptor *sd, data_size_t size )
@@ -619,8 +632,36 @@ static struct token *create_token( unsigned primary, const SID *user,
@@ -626,8 +639,36 @@ static struct token *create_token( unsigned primary, const SID *user,
return token;
}
@@ -236,7 +255,7 @@ index 0810a61..2f6a467 100644
{
const luid_t *modified_id =
primary || (impersonation_level == src_token->impersonation_level) ?
@@ -656,6 +697,12 @@ struct token *token_duplicate( struct token *src_token, unsigned primary,
@@ -663,6 +704,12 @@ struct token *token_duplicate( struct token *src_token, unsigned primary,
return NULL;
}
memcpy( newgroup, group, size );
@@ -249,7 +268,7 @@ index 0810a61..2f6a467 100644
list_add_tail( &token->groups, &newgroup->entry );
if (src_token->primary_group == &group->sid)
{
@@ -667,11 +714,14 @@ struct token *token_duplicate( struct token *src_token, unsigned primary,
@@ -674,11 +721,14 @@ struct token *token_duplicate( struct token *src_token, unsigned primary,
/* copy privileges */
LIST_FOR_EACH_ENTRY( privilege, &src_token->privileges, struct privilege, entry )
@@ -264,7 +283,7 @@ index 0810a61..2f6a467 100644
if (sd) default_set_sd( &token->obj, sd, OWNER_SECURITY_INFORMATION | GROUP_SECURITY_INFORMATION |
DACL_SECURITY_INFORMATION | SACL_SECURITY_INFORMATION );
@@ -1304,7 +1354,7 @@ DECL_HANDLER(duplicate_token)
@@ -1311,7 +1361,7 @@ DECL_HANDLER(duplicate_token)
TOKEN_DUPLICATE,
&token_ops )))
{
@@ -273,7 +292,7 @@ index 0810a61..2f6a467 100644
if (token)
{
reply->new_handle = alloc_handle_no_access_check( current->process, token, req->access, objattr->attributes );
@@ -1314,6 +1364,36 @@ DECL_HANDLER(duplicate_token)
@@ -1321,6 +1371,36 @@ DECL_HANDLER(duplicate_token)
}
}
@@ -311,5 +330,5 @@ index 0810a61..2f6a467 100644
DECL_HANDLER(check_token_privileges)
{
--
2.7.4
2.27.0

View File

@@ -1,38 +1,39 @@
From c8dc0ec6406e8449b59c219ede2e9bd88d8a56fa Mon Sep 17 00:00:00 2001
From d2e98b2054a5af671fd81ded32f2cf60a062312c 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: [PATCH] server: Implement token elevation information.
---
dlls/ntdll/nt.c | 16 ++++++++++++----
server/protocol.def | 8 ++++++++
server/token.c | 22 +++++++++++++++++++---
dlls/ntdll/unix/security.c | 16 ++++++++++++----
server/protocol.def | 8 ++++++++
server/token.c | 22 +++++++++++++++++++---
3 files changed, 39 insertions(+), 7 deletions(-)
diff --git a/dlls/ntdll/nt.c b/dlls/ntdll/nt.c
index cd271fde9c..b1dd999cf5 100644
--- a/dlls/ntdll/nt.c
+++ b/dlls/ntdll/nt.c
@@ -625,18 +625,26 @@ NTSTATUS WINAPI NtQueryInformationToken(
SERVER_END_REQ;
diff --git a/dlls/ntdll/unix/security.c b/dlls/ntdll/unix/security.c
index d063d43d6d4..03a81afa46e 100644
--- a/dlls/ntdll/unix/security.c
+++ b/dlls/ntdll/unix/security.c
@@ -390,19 +390,27 @@ NTSTATUS WINAPI NtQueryInformationToken( HANDLE token, TOKEN_INFORMATION_CLASS c
break;
case TokenElevationType:
+ SERVER_START_REQ( get_token_elevation_type )
{
TOKEN_ELEVATION_TYPE *elevation_type = tokeninfo;
TOKEN_ELEVATION_TYPE *type = info;
- FIXME("QueryInformationToken( ..., TokenElevationType, ...) semi-stub\n");
- *elevation_type = TokenElevationTypeFull;
- *type = TokenElevationTypeFull;
+ req->handle = wine_server_obj_handle( token );
+ status = wine_server_call( req );
+ if (status == STATUS_SUCCESS)
+ *elevation_type = reply->elevation;
+ *type = reply->elevation;
}
+ SERVER_END_REQ;
break;
case TokenElevation:
+ SERVER_START_REQ( get_token_elevation_type )
{
TOKEN_ELEVATION *elevation = tokeninfo;
TOKEN_ELEVATION *elevation = info;
- FIXME("QueryInformationToken( ..., TokenElevation, ...) semi-stub\n");
- elevation->TokenIsElevated = TRUE;
+ req->handle = wine_server_obj_handle( token );
@@ -42,13 +43,13 @@ index cd271fde9c..b1dd999cf5 100644
}
+ SERVER_END_REQ;
break;
case TokenSessionId:
{
diff --git a/server/protocol.def b/server/protocol.def
index 90af9df7f4..93afaabca1 100644
index ee07b1eca14..84f0b577d72 100644
--- a/server/protocol.def
+++ b/server/protocol.def
@@ -3643,6 +3643,14 @@ struct handle_info
@@ -3566,6 +3566,14 @@ struct handle_info
@END
@@ -64,10 +65,10 @@ index 90af9df7f4..93afaabca1 100644
@REQ(create_completion)
unsigned int access; /* desired access to a port */
diff --git a/server/token.c b/server/token.c
index 6d193603b4..64f20e1b57 100644
index 38a4c203d54..14343637af5 100644
--- a/server/token.c
+++ b/server/token.c
@@ -112,6 +112,7 @@ struct token
@@ -110,6 +110,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 +76,7 @@ index 6d193603b4..64f20e1b57 100644
};
struct privilege
@@ -545,7 +546,7 @@ static struct token *create_token( unsigned primary, const SID *user,
@@ -552,7 +553,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 +85,7 @@ index 6d193603b4..64f20e1b57 100644
{
struct token *token = alloc_object( &token_ops );
if (token)
@@ -567,6 +568,7 @@ static struct token *create_token( unsigned primary, const SID *user,
@@ -574,6 +575,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 +93,7 @@ index 6d193603b4..64f20e1b57 100644
/* copy user */
token->user = memdup( user, security_sid_len( user ));
@@ -682,7 +684,8 @@ struct token *token_duplicate( struct token *src_token, unsigned primary,
@@ -689,7 +691,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,7 +103,7 @@ index 6d193603b4..64f20e1b57 100644
if (!token) return token;
/* copy groups */
@@ -888,7 +891,7 @@ struct token *token_create_admin( void )
@@ -895,7 +898,7 @@ struct token *token_create_admin( void )
static const TOKEN_SOURCE admin_source = {"SeMgr", {0, 0}};
token = create_token( TRUE, user_sid, admin_groups, ARRAY_SIZE( admin_groups ),
admin_privs, ARRAY_SIZE( admin_privs ), default_dacl,
@@ -111,7 +112,7 @@ index 6d193603b4..64f20e1b57 100644
/* we really need a primary group */
assert( token->primary_group );
}
@@ -1627,6 +1630,19 @@ DECL_HANDLER(get_token_statistics)
@@ -1634,6 +1637,19 @@ DECL_HANDLER(get_token_statistics)
}
}
@@ -132,5 +133,5 @@ index 6d193603b4..64f20e1b57 100644
{
struct token *token;
--
2.19.1
2.27.0

View File

@@ -1,19 +1,19 @@
From ae503e8e7eb8f4fcb9bf3e642458c2a1bba6ccaa Mon Sep 17 00:00:00 2001
From 6dc1b7d9e533379133857629bb9c09e1045a9020 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.
---
dlls/ntdll/nt.c | 23 ++++++++++++++---------
server/protocol.def | 7 +++++++
server/token.c | 30 +++++++++++++++++++++++++++---
dlls/ntdll/unix/security.c | 23 ++++++++++++++---------
server/protocol.def | 7 +++++++
server/token.c | 30 +++++++++++++++++++++++++++---
3 files changed, 48 insertions(+), 12 deletions(-)
diff --git a/dlls/ntdll/nt.c b/dlls/ntdll/nt.c
index ca26ab15..8aab0a48 100644
--- a/dlls/ntdll/nt.c
+++ b/dlls/ntdll/nt.c
@@ -400,7 +400,7 @@ NTSTATUS WINAPI NtQueryInformationToken(
diff --git a/dlls/ntdll/unix/security.c b/dlls/ntdll/unix/security.c
index 03a81afa46e..f0057116dee 100644
--- a/dlls/ntdll/unix/security.c
+++ b/dlls/ntdll/unix/security.c
@@ -172,7 +172,7 @@ NTSTATUS WINAPI NtQueryInformationToken( HANDLE token, TOKEN_INFORMATION_CLASS c
0, /* TokenAccessInformation */
0, /* TokenVirtualizationAllowed */
sizeof(DWORD), /* TokenVirtualizationEnabled */
@@ -22,9 +22,9 @@ index ca26ab15..8aab0a48 100644
0, /* TokenUIAccess */
0, /* TokenMandatoryPolicy */
0, /* TokenLogonSid */
@@ -659,18 +659,23 @@ NTSTATUS WINAPI NtQueryInformationToken(
}
@@ -428,18 +428,23 @@ NTSTATUS WINAPI NtQueryInformationToken( HANDLE token, TOKEN_INFORMATION_CLASS c
break;
case TokenIntegrityLevel:
+ SERVER_START_REQ( get_token_integrity )
{
@@ -32,14 +32,14 @@ index ca26ab15..8aab0a48 100644
- static const SID high_level = {SID_REVISION, 1, {SECURITY_MANDATORY_LABEL_AUTHORITY},
- {SECURITY_MANDATORY_HIGH_RID}};
-
TOKEN_MANDATORY_LABEL *tml = tokeninfo;
TOKEN_MANDATORY_LABEL *tml = info;
- PSID psid = tml + 1;
+ PSID sid = tml + 1;
+ DWORD sid_len = tokeninfolength < sizeof(*tml) ? 0 : tokeninfolength - sizeof(*tml);
+ DWORD sid_len = length < sizeof(*tml) ? 0 : length - sizeof(*tml);
- tml->Label.Sid = psid;
- tml->Label.Attributes = SE_GROUP_INTEGRITY | SE_GROUP_INTEGRITY_ENABLED;
- memcpy(psid, &high_level, sizeof(SID));
- memcpy( psid, &high_level, sizeof(SID) );
+ req->handle = wine_server_obj_handle( token );
+ wine_server_set_reply( req, sid, sid_len );
+ status = wine_server_call( req );
@@ -52,13 +52,13 @@ index ca26ab15..8aab0a48 100644
}
+ SERVER_END_REQ;
break;
case TokenAppContainerSid:
{
diff --git a/server/protocol.def b/server/protocol.def
index 11221d7d..1bfe3234 100644
index 84f0b577d72..4d37a0df348 100644
--- a/server/protocol.def
+++ b/server/protocol.def
@@ -3405,6 +3405,13 @@ enum caret_state
@@ -3296,6 +3296,13 @@ enum caret_state
VARARG(sid,SID); /* the sid specified by which_sid from the token */
@END
@@ -73,10 +73,10 @@ index 11221d7d..1bfe3234 100644
obj_handle_t handle; /* handle to the token */
@REPLY
diff --git a/server/token.c b/server/token.c
index ccde0c2d..2d81118a 100644
index 7c510fbdad9..d267991f751 100644
--- a/server/token.c
+++ b/server/token.c
@@ -113,6 +113,7 @@ struct token
@@ -111,6 +111,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 ccde0c2d..2d81118a 100644
};
struct privilege
@@ -546,7 +547,8 @@ static struct token *create_token( unsigned primary, const SID *user,
@@ -553,7 +554,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 ccde0c2d..2d81118a 100644
{
struct token *token = alloc_object( &token_ops );
if (token)
@@ -630,6 +632,7 @@ static struct token *create_token( unsigned primary, const SID *user,
@@ -637,6 +639,7 @@ static struct token *create_token( unsigned primary, const SID *user,
}
token->source = source;
@@ -102,7 +102,7 @@ index ccde0c2d..2d81118a 100644
}
return token;
}
@@ -685,7 +688,8 @@ struct token *token_duplicate( struct token *src_token, unsigned primary,
@@ -692,7 +695,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,7 +112,7 @@ index ccde0c2d..2d81118a 100644
if (!token) return token;
/* copy groups */
@@ -890,7 +894,7 @@ struct token *token_create_admin( void )
@@ -898,7 +902,7 @@ struct token *token_create_admin( void )
static const TOKEN_SOURCE admin_source = {"SeMgr", {0, 0}};
token = create_token( TRUE, user_sid, admin_groups, ARRAY_SIZE( admin_groups ),
admin_privs, ARRAY_SIZE( admin_privs ), default_dacl,
@@ -121,7 +121,7 @@ index ccde0c2d..2d81118a 100644
/* we really need a primary group */
assert( token->primary_group );
}
@@ -1524,6 +1528,26 @@ DECL_HANDLER(get_token_sid)
@@ -1532,6 +1536,26 @@ DECL_HANDLER(get_token_sid)
}
}
@@ -149,5 +149,5 @@ index ccde0c2d..2d81118a 100644
DECL_HANDLER(get_token_groups)
{
--
2.19.1
2.27.0

View File

@@ -1,4 +1,4 @@
From 2588eb4eb5fe56aca7d229ea42b0eaa3786ff600 Mon Sep 17 00:00:00 2001
From c47977a8bbd739483589d1f01cfece435be1c100 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Michael=20M=C3=BCller?= <michael@fds-team.de>
Date: Sat, 5 Aug 2017 01:45:29 +0200
Subject: [PATCH] ntdll: Add function to create new tokens for elevation
@@ -14,10 +14,10 @@ Subject: [PATCH] ntdll: Add function to create new tokens for elevation
6 files changed, 117 insertions(+)
diff --git a/dlls/ntdll/ntdll.spec b/dlls/ntdll/ntdll.spec
index e5db07f0a4e..d52f6b76aa4 100644
index 0997c310110..8e3786e1972 100644
--- a/dlls/ntdll/ntdll.spec
+++ b/dlls/ntdll/ntdll.spec
@@ -1594,6 +1594,9 @@
@@ -1600,6 +1600,9 @@
# Virtual memory
@ cdecl __wine_locked_recvmsg(long ptr long)
@@ -28,24 +28,24 @@ index e5db07f0a4e..d52f6b76aa4 100644
@ cdecl wine_get_version()
@ cdecl wine_get_build_id()
diff --git a/dlls/ntdll/ntdll_misc.h b/dlls/ntdll/ntdll_misc.h
index 92fcde95a8a..80be882e76d 100644
index 63ceac42e94..5a98501381b 100644
--- a/dlls/ntdll/ntdll_misc.h
+++ b/dlls/ntdll/ntdll_misc.h
@@ -69,6 +69,9 @@ extern void init_locale( HMODULE module ) DECLSPEC_HIDDEN;
extern void init_user_process_params(void) DECLSPEC_HIDDEN;
@@ -67,6 +67,9 @@ extern void init_user_process_params(void) DECLSPEC_HIDDEN;
extern NTSTATUS restart_process( RTL_USER_PROCESS_PARAMETERS *params, NTSTATUS status ) DECLSPEC_HIDDEN;
extern void CDECL DECLSPEC_NORETURN signal_start_thread( CONTEXT *ctx ) DECLSPEC_HIDDEN;
+/* token */
+extern HANDLE CDECL __wine_create_default_token(BOOL admin);
+
/* server support */
extern BOOL is_wow64 DECLSPEC_HIDDEN;
extern NTSTATUS alloc_object_attributes( const OBJECT_ATTRIBUTES *attr, struct object_attributes **ret,
diff --git a/dlls/ntdll/process.c b/dlls/ntdll/process.c
index 992721d133f..24cb8f53de2 100644
index 77ba5b371e2..3e91a1fa9c4 100644
--- a/dlls/ntdll/process.c
+++ b/dlls/ntdll/process.c
@@ -82,6 +82,24 @@ HANDLE CDECL __wine_make_process_system(void)
@@ -72,6 +72,24 @@ HANDLE CDECL __wine_make_process_system(void)
return ret;
}
@@ -67,14 +67,14 @@ index 992721d133f..24cb8f53de2 100644
+ return ret;
+}
+
/******************************************************************************
* NtQueryInformationProcess [NTDLL.@]
* ZwQueryInformationProcess [NTDLL.@]
/***********************************************************************
* restart_process
*/
diff --git a/server/protocol.def b/server/protocol.def
index 96bc9250ab0..14b811684d8 100644
index 30a102d7b82..a9308904afc 100644
--- a/server/protocol.def
+++ b/server/protocol.def
@@ -3759,6 +3759,14 @@ struct handle_info
@@ -3481,6 +3481,14 @@ struct handle_info
@END
@@ -215,5 +215,5 @@ index c4f1cd943c2..970ed1838da 100644
+ }
+}
--
2.27.0
2.28.0

View File

@@ -1,4 +1,4 @@
From 1f2b1bafabfd457836f18741f178b3745e129c36 Mon Sep 17 00:00:00 2001
From 51cde3dff5de27d1aebc964a4802758534d56773 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.
@@ -12,10 +12,10 @@ Subject: [PATCH] ntdll: Implement process token elevation through manifests.
5 files changed, 67 insertions(+)
diff --git a/dlls/ntdll/loader.c b/dlls/ntdll/loader.c
index 0c8f05285c4..92ae87c6e6d 100644
index 6290cbcb4e6..9a8f13901b2 100644
--- a/dlls/ntdll/loader.c
+++ b/dlls/ntdll/loader.c
@@ -3898,6 +3898,32 @@ void WINAPI LdrInitializeThunk( CONTEXT *context, void **entry, ULONG_PTR unknow
@@ -3489,6 +3489,32 @@ void WINAPI LdrInitializeThunk( CONTEXT *context, void **entry, ULONG_PTR unknow
}
@@ -48,7 +48,7 @@ index 0c8f05285c4..92ae87c6e6d 100644
/***********************************************************************
* load_global_options
*/
@@ -4359,6 +4385,7 @@ void __wine_process_init(void)
@@ -3900,6 +3926,7 @@ void __wine_process_init(void)
'k','e','r','n','e','l','3','2','.','d','l','l',0};
void (WINAPI *kernel32_start_process)(LPTHREAD_START_ROUTINE,void*) = NULL;
RTL_USER_PROCESS_PARAMETERS *params;
@@ -56,9 +56,9 @@ index 0c8f05285c4..92ae87c6e6d 100644
WINE_MODREF *wm;
NTSTATUS status;
ANSI_STRING func_name;
@@ -4453,6 +4480,16 @@ void __wine_process_init(void)
unix_funcs->virtual_set_large_address_space();
@@ -4021,6 +4048,16 @@ void __wine_process_init(void)
}
#endif
+ /* elevate process if necessary */
+ status = RtlQueryInformationActivationContext( 0, NULL, 0, RunlevelInformationInActivationContext,
@@ -74,11 +74,11 @@ index 0c8f05285c4..92ae87c6e6d 100644
RemoveEntryList( &wm->ldr.InLoadOrderLinks );
InsertHeadList( &peb->LdrData->InLoadOrderModuleList, &wm->ldr.InLoadOrderLinks );
diff --git a/server/process.c b/server/process.c
index ac85cace95d..52604ec4d61 100644
index fa8495511e0..df72efdecc8 100644
--- a/server/process.c
+++ b/server/process.c
@@ -1115,6 +1115,14 @@ struct process_snapshot *process_snap( int *count )
return snapshot;
@@ -1086,6 +1086,14 @@ int set_process_debug_flag( struct process *process, int flag )
return write_process_memory( process, process->peb + 2, 1, &data );
}
+/* replace the token of a process */
@@ -93,22 +93,22 @@ index ac85cace95d..52604ec4d61 100644
DECL_HANDLER(new_process)
{
diff --git a/server/process.h b/server/process.h
index 5b83e111a6f..dfe5c4e52d8 100644
index 0fdf070b78e..43e8cc1ad7e 100644
--- a/server/process.h
+++ b/server/process.h
@@ -139,6 +139,7 @@ extern void kill_debugged_processes( struct thread *debugger, int exit_code );
@@ -129,6 +129,7 @@ extern void kill_console_processes( struct thread *renderer, int exit_code );
extern void kill_debugged_processes( struct thread *debugger, int exit_code );
extern void detach_debugged_processes( struct thread *debugger );
extern struct process_snapshot *process_snap( int *count );
extern void enum_processes( int (*cb)(struct process*, void*), void *user);
+extern void replace_process_token( struct process *process, struct token *token );
/* console functions */
extern void inherit_console( struct thread *parent_thread, struct process *parent,
extern obj_handle_t inherit_console( struct thread *parent_thread, obj_handle_t handle,
diff --git a/server/protocol.def b/server/protocol.def
index 7315f8ac4ea..901c380b721 100644
index a9308904afc..8c40fba8d0a 100644
--- a/server/protocol.def
+++ b/server/protocol.def
@@ -3763,6 +3763,13 @@ struct handle_info
@@ -3489,6 +3489,13 @@ struct handle_info
@END
@@ -145,5 +145,5 @@ index 970ed1838da..1c1d49989b3 100644
+ }
+}
--
2.26.2
2.28.0

View File

@@ -1,17 +1,25 @@
From 6d4621ddba8139747345c05f6251bae9b3c68e39 Mon Sep 17 00:00:00 2001
From e34d019222909281390f83149be755a4145024c4 Mon Sep 17 00:00:00 2001
From: Sebastian Lackner <sebastian@fds-team.de>
Date: Mon, 7 Aug 2017 15:28:33 +0200
Subject: ntdll: Add semi-stub for TokenLinkedToken info class.
Subject: [PATCH] ntdll: Add semi-stub for TokenLinkedToken info class.
---
dlls/ntdll/nt.c | 28 +++++++++++++++++++++++++++-
1 file changed, 27 insertions(+), 1 deletion(-)
dlls/ntdll/unix/security.c | 30 +++++++++++++++++++++++++++++-
1 file changed, 29 insertions(+), 1 deletion(-)
diff --git a/dlls/ntdll/nt.c b/dlls/ntdll/nt.c
index 6f2b24e6ba4..99dba58b426 100644
--- a/dlls/ntdll/nt.c
+++ b/dlls/ntdll/nt.c
@@ -366,7 +366,7 @@ NTSTATUS WINAPI NtQueryInformationToken(
diff --git a/dlls/ntdll/unix/security.c b/dlls/ntdll/unix/security.c
index f0057116dee..2769e5f6a7b 100644
--- a/dlls/ntdll/unix/security.c
+++ b/dlls/ntdll/unix/security.c
@@ -138,6 +138,7 @@ NTSTATUS WINAPI NtDuplicateToken( HANDLE token, ACCESS_MASK access, OBJECT_ATTRI
return status;
}
+extern HANDLE CDECL __wine_create_default_token(BOOL admin);
/***********************************************************************
* NtQueryInformationToken (NTDLL.@)
@@ -166,7 +167,7 @@ NTSTATUS WINAPI NtQueryInformationToken( HANDLE token, TOKEN_INFORMATION_CLASS c
0, /* TokenAuditPolicy */
0, /* TokenOrigin */
sizeof(TOKEN_ELEVATION_TYPE), /* TokenElevationType */
@@ -20,14 +28,14 @@ index 6f2b24e6ba4..99dba58b426 100644
sizeof(TOKEN_ELEVATION), /* TokenElevation */
0, /* TokenHasRestrictions */
0, /* TokenAccessInformation */
@@ -607,6 +607,32 @@ NTSTATUS WINAPI NtQueryInformationToken(
}
@@ -401,6 +402,33 @@ NTSTATUS WINAPI NtQueryInformationToken( HANDLE token, TOKEN_INFORMATION_CLASS c
SERVER_END_REQ;
break;
+ case TokenLinkedToken:
+ SERVER_START_REQ( get_token_elevation_type )
+ {
+ TOKEN_LINKED_TOKEN *linked_token = tokeninfo;
+ TOKEN_LINKED_TOKEN *linked_token = info;
+ req->handle = wine_server_obj_handle( token );
+ status = wine_server_call( req );
+ if (status == STATUS_SUCCESS)
@@ -50,9 +58,10 @@ index 6f2b24e6ba4..99dba58b426 100644
+ }
+ SERVER_END_REQ;
+ break;
+
case TokenElevation:
SERVER_START_REQ( get_token_elevation_type )
{
--
2.13.1
2.27.0

View File

@@ -1,20 +1,21 @@
From 6d8fd34cabbcbc64062675be610fb8704fcdc3ec Mon Sep 17 00:00:00 2001
From a8915b8ebd4c06b0216fc82d1ba8d958a677eccf 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/named_pipe.c | 2 +-
server/process.c | 8 +------
server/security.h | 2 +-
server/token.c | 41 ++++++++++++++++++++++++-----------------
4 files changed, 36 insertions(+), 36 deletions(-)
server/token.c | 41 ++++++++++++++++++++--------------
5 files changed, 37 insertions(+), 37 deletions(-)
diff --git a/dlls/advapi32/tests/security.c b/dlls/advapi32/tests/security.c
index bf4161c..0610ec7 100644
index 94f3ea4601a..ab572421a73 100644
--- a/dlls/advapi32/tests/security.c
+++ b/dlls/advapi32/tests/security.c
@@ -7186,7 +7186,6 @@ static void test_token_security_descriptor(void)
@@ -7105,7 +7105,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 +23,7 @@ index bf4161c..0610ec7 100644
ok(present, "DACL not present\n");
if (present)
@@ -7307,7 +7306,7 @@ static void test_token_security_descriptor(void)
@@ -7226,7 +7225,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 +32,7 @@ index bf4161c..0610ec7 100644
"Expected medium integrity level\n");
}
@@ -7360,8 +7359,8 @@ static void test_token_security_descriptor(void)
@@ -7279,8 +7278,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 +43,7 @@ index bf4161c..0610ec7 100644
if (sacl)
{
@@ -7410,8 +7409,8 @@ static void test_token_security_descriptor(void)
@@ -7329,8 +7328,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 +54,7 @@ index bf4161c..0610ec7 100644
if (sacl)
{
@@ -7475,8 +7474,8 @@ static void test_token_security_descriptor(void)
@@ -7394,8 +7393,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 +65,7 @@ index bf4161c..0610ec7 100644
if (sacl)
{
@@ -7513,8 +7512,8 @@ static void test_token_security_descriptor(void)
@@ -7432,8 +7431,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 +76,7 @@ index bf4161c..0610ec7 100644
if (sacl)
{
@@ -7732,7 +7731,7 @@ static void test_child_token_sd_medium(void)
@@ -7652,7 +7651,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);
@@ -84,11 +85,24 @@ index bf4161c..0610ec7 100644
"Expected medium integrity level\n");
memset(buffer_integrity, 0, sizeof(buffer_integrity));
diff --git a/server/named_pipe.c b/server/named_pipe.c
index 4cd4d7dc4a8..06bf8402aea 100644
--- a/server/named_pipe.c
+++ b/server/named_pipe.c
@@ -1142,7 +1142,7 @@ static int pipe_server_ioctl( struct fd *fd, ioctl_code_t code, struct async *as
if (current->process->token) /* FIXME: use the client token */
{
struct token *token;
- if (!(token = token_duplicate( current->process->token, 0, SecurityImpersonation, NULL, NULL, 0, NULL, 0 )))
+ if (!(token = token_duplicate( current->process->token, 0, SecurityImpersonation, NULL, NULL, 0, NULL, 0, NULL )))
return 0;
if (current->token) release_object( current->token );
current->token = token;
diff --git a/server/process.c b/server/process.c
index b7c9da3..250f777 100644
index 31d5b96a25d..2c485831e33 100644
--- a/server/process.c
+++ b/server/process.c
@@ -562,17 +562,11 @@ struct process *create_process( int fd, struct thread *parent_thread, int inheri
@@ -577,17 +577,11 @@ 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 */
@@ -108,7 +122,7 @@ index b7c9da3..250f777 100644
return process;
diff --git a/server/security.h b/server/security.h
index 32dfe5f..87377cc 100644
index 32dfe5f8db9..87377ccd673 100644
--- a/server/security.h
+++ b/server/security.h
@@ -59,7 +59,7 @@ extern int token_assign_label( struct token *token, PSID label );
@@ -121,10 +135,10 @@ index 32dfe5f..87377cc 100644
const LUID_AND_ATTRIBUTES *reqprivs,
unsigned int count, LUID_AND_ATTRIBUTES *usedprivs);
diff --git a/server/token.c b/server/token.c
index 5db97b4..bd251c7 100644
index 2f466aa1b25..23bc1cc13f7 100644
--- a/server/token.c
+++ b/server/token.c
@@ -668,7 +668,7 @@ static int filter_privilege( struct privilege *privilege, const LUID_AND_ATTRIBU
@@ -675,7 +675,7 @@ static int filter_privilege( struct privilege *privilege, const LUID_AND_ATTRIBU
struct token *token_duplicate( struct token *src_token, unsigned primary,
int impersonation_level, const struct security_descriptor *sd,
const LUID_AND_ATTRIBUTES *filter_privileges, unsigned int priv_count,
@@ -133,7 +147,7 @@ index 5db97b4..bd251c7 100644
{
const luid_t *modified_id =
primary || (impersonation_level == src_token->impersonation_level) ?
@@ -735,6 +735,12 @@ struct token *token_duplicate( struct token *src_token, unsigned primary,
@@ -742,6 +742,12 @@ struct token *token_duplicate( struct token *src_token, unsigned primary,
if (sd) default_set_sd( &token->obj, sd, OWNER_SECURITY_INFORMATION | GROUP_SECURITY_INFORMATION |
DACL_SECURITY_INFORMATION | SACL_SECURITY_INFORMATION );
@@ -146,7 +160,7 @@ index 5db97b4..bd251c7 100644
return token;
}
@@ -906,6 +912,12 @@ struct token *token_create_admin( void )
@@ -913,6 +919,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 +173,7 @@ index 5db97b4..bd251c7 100644
}
free( logon_sid );
@@ -964,6 +976,12 @@ static struct token *token_create_limited( void )
@@ -971,6 +983,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 +186,7 @@ index 5db97b4..bd251c7 100644
}
free( logon_sid );
@@ -1432,7 +1450,8 @@ DECL_HANDLER(duplicate_token)
@@ -1439,7 +1457,8 @@ DECL_HANDLER(duplicate_token)
TOKEN_DUPLICATE,
&token_ops )))
{
@@ -182,7 +196,7 @@ index 5db97b4..bd251c7 100644
if (token)
{
unsigned int access = req->access ? req->access : get_handle_access( current->process, req->handle );
@@ -1462,7 +1481,7 @@ DECL_HANDLER(filter_token)
@@ -1469,7 +1488,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 +205,7 @@ index 5db97b4..bd251c7 100644
if (token)
{
unsigned int access = get_handle_access( current->process, req->handle );
@@ -1788,23 +1807,11 @@ DECL_HANDLER(set_token_default_dacl)
@@ -1795,23 +1814,11 @@ DECL_HANDLER(set_token_default_dacl)
DECL_HANDLER(create_token)
{
struct token *token;
@@ -218,5 +232,5 @@ index 5db97b4..bd251c7 100644
}
}
--
2.7.4
2.27.0

View File

@@ -2,3 +2,7 @@ Fixes: [40613] Basic implementation for token integrity levels and UAC handling
Fixes: [39262] Run explorer.exe as unevaluated process
Depends: advapi32-CreateRestrictedToken
Depends: Staging
# Broken due to ntdll.so <- ntdll.dll imports. This isn't particularly difficult
# to fix, but it was already broken for some more obscure reason, and the whole
# patch set needs to be rewritten anyway.
Disabled: true

View File

@@ -1,4 +1,4 @@
From a5c9b96c7b517d212260cb8567162425554ff613 Mon Sep 17 00:00:00 2001
From 7fcdf1faa257c90d6452f26ad3a68daca1dd96d1 Mon Sep 17 00:00:00 2001
From: Derek Lesho <dlesho@codeweavers.com>
Date: Tue, 7 Jan 2020 14:22:49 -0600
Subject: [PATCH] bcrypt: Implement BCryptSecretAgreement with libgcrypt.
@@ -7,17 +7,17 @@ Signed-off-by: Derek Lesho <dlesho@codeweavers.com>
---
configure.ac | 14 ++
dlls/bcrypt/Makefile.in | 1 +
dlls/bcrypt/bcrypt_internal.h | 13 ++
dlls/bcrypt/bcrypt_main.c | 86 +++++++++--
dlls/bcrypt/gcrypt.c | 264 ++++++++++++++++++++++++++++++++++
dlls/bcrypt/bcrypt_internal.h | 6 +
dlls/bcrypt/bcrypt_main.c | 54 ++++++-
dlls/bcrypt/gcrypt.c | 263 ++++++++++++++++++++++++++++++++++
dlls/bcrypt/gnutls.c | 9 ++
dlls/bcrypt/macos.c | 6 +
dlls/bcrypt/tests/bcrypt.c | 2 +-
8 files changed, 384 insertions(+), 11 deletions(-)
8 files changed, 349 insertions(+), 6 deletions(-)
create mode 100644 dlls/bcrypt/gcrypt.c
diff --git a/configure.ac b/configure.ac
index e3d63ed7501..beb86c23b45 100644
index 006087e05ec..b50737a766e 100644
--- a/configure.ac
+++ b/configure.ac
@@ -47,6 +47,7 @@ AC_ARG_WITH(faudio, AS_HELP_STRING([--without-faudio],[do not use FAudio (XAu
@@ -28,7 +28,7 @@ index e3d63ed7501..beb86c23b45 100644
AC_ARG_WITH(gettext, AS_HELP_STRING([--without-gettext],[do not use gettext]))
AC_ARG_WITH(gettextpo, AS_HELP_STRING([--with-gettextpo],[use the GetTextPO library to rebuild po files]),
[if test "x$withval" = "xno"; then ac_cv_header_gettext_po_h=no; fi])
@@ -2033,6 +2034,19 @@ WINE_NOTICE_WITH(vkd3d,[test "x$ac_cv_lib_soname_vkd3d" = "x"],
@@ -2044,6 +2045,19 @@ WINE_NOTICE_WITH(vkd3d,[test "x$ac_cv_lib_soname_vkd3d" = "x"],
[vkd3d ${notice_platform}development files not found (or too old), Direct3D 12 won't be supported.])
test "x$ac_cv_lib_soname_vkd3d" != "x" || enable_d3d12=${enable_d3d12:-no}
@@ -61,7 +61,7 @@ index dd6d4a76640..ea3486a4002 100644
macos.c \
md2.c \
diff --git a/dlls/bcrypt/bcrypt_internal.h b/dlls/bcrypt/bcrypt_internal.h
index 18343a6c749..27cd4950274 100644
index 43be170d77f..6c93ed78389 100644
--- a/dlls/bcrypt/bcrypt_internal.h
+++ b/dlls/bcrypt/bcrypt_internal.h
@@ -25,6 +25,9 @@
@@ -74,20 +74,16 @@ index 18343a6c749..27cd4950274 100644
#elif HAVE_COMMONCRYPTO_COMMONCRYPTOR_H
#include <AvailabilityMacros.h>
#include <CommonCrypto/CommonCryptor.h>
@@ -161,6 +164,12 @@ struct algorithm
ULONG flags;
};
+struct secret
+{
@@ -243,6 +246,8 @@ struct key
struct secret
{
struct object hdr;
+ UCHAR *data;
+ ULONG len;
+};
+
#if defined(HAVE_GNUTLS_CIPHER_INIT)
struct key_symmetric
{
@@ -258,6 +267,7 @@ NTSTATUS key_export_dsa_capi( struct key *, UCHAR *, ULONG, ULONG * ) DECLSPEC_H
};
NTSTATUS get_alg_property( const struct algorithm *, const WCHAR *, UCHAR *, ULONG, ULONG * ) DECLSPEC_HIDDEN;
@@ -264,6 +269,7 @@ NTSTATUS key_export_dsa_capi( struct key *, UCHAR *, ULONG, ULONG * ) DECLSPEC_H
NTSTATUS key_export_ecc( struct key *, UCHAR *, ULONG, ULONG * ) DECLSPEC_HIDDEN;
NTSTATUS key_import_dsa_capi( struct key *, UCHAR *, ULONG ) DECLSPEC_HIDDEN;
NTSTATUS key_import_ecc( struct key *, UCHAR *, ULONG ) DECLSPEC_HIDDEN;
@@ -95,19 +91,11 @@ index 18343a6c749..27cd4950274 100644
BOOL is_zero_vector( const UCHAR *, ULONG ) DECLSPEC_HIDDEN;
BOOL is_equal_vector( const UCHAR *, ULONG, const UCHAR *, ULONG ) DECLSPEC_HIDDEN;
@@ -265,4 +275,7 @@ BOOL is_equal_vector( const UCHAR *, ULONG, const UCHAR *, ULONG ) DECLSPEC_HIDD
BOOL gnutls_initialize(void) DECLSPEC_HIDDEN;
void gnutls_uninitialize(void) DECLSPEC_HIDDEN;
+BOOL gcrypt_initialize(void) DECLSPEC_HIDDEN;
+void gcrypt_uninitialize(void) DECLSPEC_HIDDEN;
+
#endif /* __BCRYPT_INTERNAL_H */
diff --git a/dlls/bcrypt/bcrypt_main.c b/dlls/bcrypt/bcrypt_main.c
index fee40ebe8d7..f254571bbc2 100644
index cd3b746e295..7b2a3393902 100644
--- a/dlls/bcrypt/bcrypt_main.c
+++ b/dlls/bcrypt/bcrypt_main.c
@@ -1421,6 +1421,12 @@ NTSTATUS key_import_ecc( struct key *key, UCHAR *input, ULONG len )
@@ -1425,6 +1425,12 @@ NTSTATUS key_import_ecc( struct key *key, UCHAR *input, ULONG len )
ERR( "support for keys not available at build time\n" );
return STATUS_NOT_IMPLEMENTED;
}
@@ -120,74 +108,60 @@ index fee40ebe8d7..f254571bbc2 100644
#endif
NTSTATUS WINAPI BCryptGenerateSymmetricKey( BCRYPT_ALG_HANDLE algorithm, BCRYPT_KEY_HANDLE *handle,
@@ -1833,27 +1839,81 @@ NTSTATUS WINAPI BCryptDeriveKeyPBKDF2( BCRYPT_ALG_HANDLE handle, UCHAR *pwd, ULO
return STATUS_SUCCESS;
}
-NTSTATUS WINAPI BCryptSecretAgreement(BCRYPT_KEY_HANDLE handle, BCRYPT_KEY_HANDLE key, BCRYPT_SECRET_HANDLE *secret, ULONG flags)
+NTSTATUS WINAPI BCryptSecretAgreement(BCRYPT_KEY_HANDLE hPrivKey, BCRYPT_KEY_HANDLE hPubKey, BCRYPT_SECRET_HANDLE *secret_out, ULONG flags)
{
- FIXME( "%p, %p, %p, %08x\n", handle, key, secret, flags );
+ struct key *privkey = hPrivKey;
+ struct key *pubkey = hPubKey;
+ struct secret *secret;
@@ -1842,8 +1848,9 @@ NTSTATUS WINAPI BCryptSecretAgreement(BCRYPT_KEY_HANDLE privatekey, BCRYPT_KEY_H
struct key *privkey = privatekey;
struct key *pubkey = publickey;
struct secret *secret;
+ NTSTATUS status;
- if(secret)
- *secret = (BCRYPT_SECRET_HANDLE *)0xDEADFEED;
+ TRACE( "%p, %p, %p, %08x\n", hPrivKey, hPubKey, secret_out, flags );
- FIXME( "%p, %p, %p, %08x\n", privatekey, publickey, handle, flags );
+ TRACE( "%p, %p, %p, %08x\n", privatekey, publickey, handle, flags );
- return STATUS_SUCCESS;
+ secret = heap_alloc( sizeof(*secret) );
+
+ if ((status = compute_secret_ecc(privkey, pubkey, secret)))
if (!privkey || privkey->hdr.magic != MAGIC_KEY) return STATUS_INVALID_HANDLE;
if (!pubkey || pubkey->hdr.magic != MAGIC_KEY) return STATUS_INVALID_HANDLE;
@@ -1852,7 +1859,16 @@ NTSTATUS WINAPI BCryptSecretAgreement(BCRYPT_KEY_HANDLE privatekey, BCRYPT_KEY_H
if (!(secret = heap_alloc_zero( sizeof(*secret) ))) return STATUS_NO_MEMORY;
secret->hdr.magic = MAGIC_SECRET;
- *handle = secret;
+ if ((status = compute_secret_ecc( privkey, pubkey, secret )))
+ {
+ heap_free(secret);
+ *secret_out = NULL;
+ heap_free( secret );
+ *handle = NULL;
+ }
+ else
+ {
+ *secret_out = secret;
+ *handle = secret;
+ }
+
+ return status;
}
-NTSTATUS WINAPI BCryptDestroySecret(BCRYPT_SECRET_HANDLE secret)
+NTSTATUS WINAPI BCryptDestroySecret(BCRYPT_SECRET_HANDLE hSecret)
{
- FIXME( "%p\n", secret );
+ struct secret *secret = hSecret;
+
+ TRACE( "%p\n", hSecret );
+
+ if (!hSecret)
+ {
+ return STATUS_INVALID_HANDLE;
+ }
+
+ heap_free(secret->data);
+ heap_free(secret);
+
return STATUS_SUCCESS;
}
-NTSTATUS WINAPI BCryptDeriveKey(BCRYPT_SECRET_HANDLE secret, LPCWSTR kdf, BCryptBufferDesc *parameter,
+NTSTATUS WINAPI BCryptDeriveKey(BCRYPT_SECRET_HANDLE hSecret, LPCWSTR deriv_func, BCryptBufferDesc *parameter,
PUCHAR derived, ULONG derived_size, ULONG *result, ULONG flags)
@@ -1860,10 +1876,11 @@ NTSTATUS WINAPI BCryptDestroySecret(BCRYPT_SECRET_HANDLE handle)
{
struct secret *secret = handle;
- FIXME( "%p\n", handle );
+ TRACE( "%p\n", handle );
if (!secret || secret->hdr.magic != MAGIC_SECRET) return STATUS_INVALID_HANDLE;
secret->hdr.magic = 0;
+ heap_free( secret->data );
heap_free( secret );
return STATUS_SUCCESS;
}
@@ -1873,12 +1890,33 @@ NTSTATUS WINAPI BCryptDeriveKey(BCRYPT_SECRET_HANDLE handle, LPCWSTR kdf, BCrypt
{
struct secret *secret = handle;
- FIXME( "%p, %s, %p, %p, %d, %p, %08x\n", secret, debugstr_w(kdf), parameter, derived, derived_size, result, flags );
+ TRACE( "%p, %s, %p, %p, %d, %p, %08x\n", secret, debugstr_w(kdf), parameter, derived, derived_size, result, flags );
if (!secret || secret->hdr.magic != MAGIC_SECRET) return STATUS_INVALID_HANDLE;
if (!kdf) return STATUS_INVALID_PARAMETER;
- return STATUS_INTERNAL_ERROR;
+ struct secret *secret = hSecret;
+
+ TRACE( "%p, %s, %p, %p, %d, %p, %08x\n", secret, debugstr_w(deriv_func), parameter, derived, derived_size, result, flags );
+
+ if (!hSecret)
+ {
+ return STATUS_INVALID_HANDLE;
+ }
+
+ if (!(strcmpW(deriv_func, BCRYPT_KDF_RAW_SECRET)))
+ if (!(strcmpW( kdf, BCRYPT_KDF_RAW_SECRET )))
+ {
+ ULONG n;
+ ULONG secret_length = secret->len;
@@ -207,12 +181,12 @@ index fee40ebe8d7..f254571bbc2 100644
+ *result = n;
+ return STATUS_SUCCESS;
+ }
+ FIXME( "Derivation function %s not supported.\n", debugstr_w(deriv_func) );
+ FIXME( "Derivation function %s not supported.\n", debugstr_w(kdf) );
+ return STATUS_NOT_IMPLEMENTED;
}
BOOL WINAPI DllMain( HINSTANCE hinst, DWORD reason, LPVOID reserved )
@@ -1865,6 +1925,9 @@ BOOL WINAPI DllMain( HINSTANCE hinst, DWORD reason, LPVOID reserved )
@@ -1890,6 +1928,9 @@ BOOL WINAPI DllMain( HINSTANCE hinst, DWORD reason, LPVOID reserved )
DisableThreadLibraryCalls( hinst );
#ifdef HAVE_GNUTLS_CIPHER_INIT
gnutls_initialize();
@@ -222,7 +196,7 @@ index fee40ebe8d7..f254571bbc2 100644
#endif
break;
@@ -1872,6 +1935,9 @@ BOOL WINAPI DllMain( HINSTANCE hinst, DWORD reason, LPVOID reserved )
@@ -1897,6 +1938,9 @@ BOOL WINAPI DllMain( HINSTANCE hinst, DWORD reason, LPVOID reserved )
if (reserved) break;
#ifdef HAVE_GNUTLS_CIPHER_INIT
gnutls_uninitialize();
@@ -234,10 +208,10 @@ index fee40ebe8d7..f254571bbc2 100644
}
diff --git a/dlls/bcrypt/gcrypt.c b/dlls/bcrypt/gcrypt.c
new file mode 100644
index 00000000000..f882d61def8
index 00000000000..4e0386a3dda
--- /dev/null
+++ b/dlls/bcrypt/gcrypt.c
@@ -0,0 +1,264 @@
@@ -0,0 +1,263 @@
+#include "config.h"
+#include "wine/port.h"
+
@@ -261,7 +235,6 @@ index 00000000000..f882d61def8
+
+#include "wine/debug.h"
+#include "wine/heap.h"
+#include "wine/library.h"
+#include "wine/unicode.h"
+
+#if defined(HAVE_GNUTLS_CIPHER_INIT) && defined(SONAME_LIBGCRYPT)
@@ -503,10 +476,10 @@ index 00000000000..f882d61def8
+}
+#endif
diff --git a/dlls/bcrypt/gnutls.c b/dlls/bcrypt/gnutls.c
index d447e90a11e..7828fa5c792 100644
index 7acf8198626..8e5481aecc3 100644
--- a/dlls/bcrypt/gnutls.c
+++ b/dlls/bcrypt/gnutls.c
@@ -1580,4 +1580,13 @@ NTSTATUS key_destroy( struct key *key )
@@ -1606,4 +1606,13 @@ NTSTATUS key_destroy( struct key *key )
heap_free( key );
return STATUS_SUCCESS;
}
@@ -521,10 +494,10 @@ index d447e90a11e..7828fa5c792 100644
+
#endif
diff --git a/dlls/bcrypt/macos.c b/dlls/bcrypt/macos.c
index f635ba4bc8e..50cd5d83d1f 100644
index 7f902535b8f..6c2a41a0725 100644
--- a/dlls/bcrypt/macos.c
+++ b/dlls/bcrypt/macos.c
@@ -267,4 +267,10 @@ NTSTATUS key_destroy( struct key *key )
@@ -279,4 +279,10 @@ NTSTATUS key_destroy( struct key *key )
heap_free( key );
return STATUS_SUCCESS;
}
@@ -536,10 +509,10 @@ index f635ba4bc8e..50cd5d83d1f 100644
+}
#endif
diff --git a/dlls/bcrypt/tests/bcrypt.c b/dlls/bcrypt/tests/bcrypt.c
index e4a99d63048..6ca26b3d6ba 100644
index 7fdc0ac7fb2..5701a0a30ce 100644
--- a/dlls/bcrypt/tests/bcrypt.c
+++ b/dlls/bcrypt/tests/bcrypt.c
@@ -2068,7 +2068,7 @@ static void test_ECDH(void)
@@ -2115,7 +2115,7 @@ static void test_ECDH(void)
goto raw_secret_end;
}
@@ -549,5 +522,5 @@ index e4a99d63048..6ca26b3d6ba 100644
if (status != STATUS_SUCCESS)
{
--
2.26.2
2.28.0

View File

@@ -1,4 +1,4 @@
From d0c4ac467f5e85e29ae407b29b6a93c85f375fd3 Mon Sep 17 00:00:00 2001
From d232882c571a14f4da8a134071a2125805ebd41f Mon Sep 17 00:00:00 2001
From: Derek Lesho <dlesho@codeweavers.com>
Date: Tue, 7 Jan 2020 14:22:49 -0600
Subject: [PATCH] bcrypt: Implement BCRYPT_KDF_HASH.
@@ -6,24 +6,22 @@ Subject: [PATCH] bcrypt: Implement BCRYPT_KDF_HASH.
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=47699
Signed-off-by: Derek Lesho <dlesho at codeweavers.com>
---
dlls/bcrypt/bcrypt_main.c | 110 +++++++++++++++++++++++++++++++++++++
dlls/bcrypt/bcrypt_main.c | 108 ++++++++++++++++++++++++++++++++++++-
dlls/bcrypt/tests/bcrypt.c | 2 +-
2 files changed, 111 insertions(+), 1 deletion(-)
2 files changed, 108 insertions(+), 2 deletions(-)
diff --git a/dlls/bcrypt/bcrypt_main.c b/dlls/bcrypt/bcrypt_main.c
index 15b934247d..57d552a4c0 100644
index 65c28ca63e2..6e7b52e93b0 100644
--- a/dlls/bcrypt/bcrypt_main.c
+++ b/dlls/bcrypt/bcrypt_main.c
@@ -1773,6 +1773,116 @@ NTSTATUS WINAPI BCryptDeriveKey(BCRYPT_SECRET_HANDLE hSecret, LPCWSTR deriv_func
return STATUS_INVALID_HANDLE;
}
@@ -1891,7 +1891,113 @@ NTSTATUS WINAPI BCryptDeriveKey(BCRYPT_SECRET_HANDLE handle, LPCWSTR kdf, BCrypt
if (!secret || secret->hdr.magic != MAGIC_SECRET) return STATUS_INVALID_HANDLE;
if (!kdf) return STATUS_INVALID_PARAMETER;
+ if (flags)
+ {
+ FIXME("flags ignored: %08x\n", flags);
+ }
- if (!(strcmpW( kdf, BCRYPT_KDF_RAW_SECRET )))
+ if (flags) FIXME("flags ignored: %08x\n", flags);
+
+ if (!(strcmpW(deriv_func, BCRYPT_KDF_HASH)))
+ if (!(strcmpW( kdf, BCRYPT_KDF_HASH )))
+ {
+ unsigned int i;
+ BCryptBuffer *hash_algorithm = NULL;
@@ -127,15 +125,15 @@ index 15b934247d..57d552a4c0 100644
+
+ return STATUS_SUCCESS;
+ }
+ else
if (!(strcmpW(deriv_func, BCRYPT_KDF_RAW_SECRET)))
+ else if (!(strcmpW( kdf, BCRYPT_KDF_RAW_SECRET )))
{
ULONG n;
ULONG secret_length = secret->len;
diff --git a/dlls/bcrypt/tests/bcrypt.c b/dlls/bcrypt/tests/bcrypt.c
index d9509f2c49..edc59a8a97 100644
index a351aacf1f5..5333b879817 100644
--- a/dlls/bcrypt/tests/bcrypt.c
+++ b/dlls/bcrypt/tests/bcrypt.c
@@ -2084,7 +2084,7 @@ static void test_ECDH(void)
@@ -2085,7 +2085,7 @@ static void test_ECDH(void)
raw_secret_end:
status = pBCryptDeriveKey(secret, BCRYPT_KDF_HASH, &hash_params, NULL, 0, &size, 0);
@@ -145,5 +143,5 @@ index d9509f2c49..edc59a8a97 100644
if (status != STATUS_SUCCESS)
{
--
2.24.1
2.27.0

View File

@@ -0,0 +1,221 @@
From e9505756537aca02b463864d632249d8d3056a3c Mon Sep 17 00:00:00 2001
From: Alex Henrie <alexhenrie24@gmail.com>
Date: Mon, 31 Aug 2020 01:42:43 -0600
Subject: [PATCH] wine.inf: Add sRGB color profile
"This profile is made available by the International Color Consortium,
and may be copied, distributed, embedded, made, used, and sold without
restriction. Altered versions of this profile shall have the original
identification and copyright information removed and shall not be
misrepresented as the original profile."
See http://www.color.org/srgbprofiles.xalter
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=37396
Signed-off-by: Alex Henrie <alexhenrie24@gmail.com>
---
Makefile.in | 1 +
color/Makefile.in | 2 ++
color/sRGB_Color_Space_Profile.icm | Bin 0 -> 3024 bytes
configure.ac | 1 +
loader/wine.inf.in | 14 +++++++++-----
tools/makedep.c | 12 ++++++++++++
6 files changed, 25 insertions(+), 5 deletions(-)
create mode 100644 color/Makefile.in
create mode 100644 color/sRGB_Color_Space_Profile.icm
diff --git a/Makefile.in b/Makefile.in
index 5c6a3e30c59..36b89e45768 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -27,6 +27,7 @@ datarootdir = @datarootdir@
datadir = @datadir@
mandir = @mandir@
includedir = @includedir@
+colordir = ${datadir}/wine/color
fontdir = ${datadir}/wine/fonts
nlsdir = ${datadir}/wine/nls
dlldir = ${libdir}/wine
diff --git a/color/Makefile.in b/color/Makefile.in
new file mode 100644
index 00000000000..f9f6f62a3b1
--- /dev/null
+++ b/color/Makefile.in
@@ -0,0 +1,2 @@
+SOURCES = \
+ sRGB_Color_Space_Profile.icm
diff --git a/color/sRGB_Color_Space_Profile.icm b/color/sRGB_Color_Space_Profile.icm
new file mode 100644
index 0000000000000000000000000000000000000000..49afbfef10f22a1832590b68369d2f248ea553b9
GIT binary patch
literal 3024
zcmb`Jc{r5o8^@pboqe;-klom~#=Z=)?<7n1RL0C;EQ4W?v`H$Qlq6e;oU(N2=!6`p
zq_j9fq0&N*O8IqkN}I~>9j@P{b6vkb&vRYx^M3C8x$pP6pZoda{Q^K51jvAqCy}2f
z2yl0zhlYjIaZeGKxM&3c7CSY0nf@_DE7pfmuw>n3h<vtUtxuW{AMLJ;(HbZuIuESG
z{a=#ca8ua;KrYBCI||tx;d+E=QGo%@2zLR1C&&E2f*+WZ$l(A$xPip)i&@Gg`iXKA
zgo!)=h{zhCC30D*2xlU!5fz`DhH#b0FIbL0E8;XRI~MWxB1}#fa*;fus4sgn(nRs3
zP*Ds!Ss>yBge}>zEF^|hhw$p<`Vm43NktlHVq|Q#Wc`bi=uVbDr*Q%R@mv7f?y!Y|
z^kpAf^uhola$__g2b6(2&;bl!0xW?IZ~(5r3;2RS5C%2@Hi!j@Kmam8HrNI7Kmj-i
zj(`eK4eCGxXa=pI9dv;!;5xVs2Ehmz2NPf#yasdN16Y6{2nSIhDkKM~K$?&~WCAfE
zJIEDU3k5)7P$U!s@gX6U4ef>spkk;3s(~7yU!e=o73d~31U-Nzp&96J=nIU3$uJF8
zg0)~nm<c<=-f$qi5sraV;4C;7J^+`&weT6Z4ZZ^3hDYED_%%F_0w@wn2BnH(pqMCU
zlrJhA6^#<0wxjY<rKnm|GpZBShq{ZJK+U2)qp@fznvQ0mZO|U*AT%4Dg5HiUL|35e
z(QW8n^j-8MdJg>^L%}Fw^fA^LPfRE#29trw!<1r9Va{W&VMZ|1m=9PiRtBq$wZwX0
z!?1DKt=K~BF>DL=GIj_%g`LOYaB?_(oGs25$HJxI@^Iz2Gq_8*VcazC6P|=u!JFXS
z@ZoqqJ_lclZ^U=whw(4)3j_&*Cc&EEOW+W;5Q+$OgigX8!ZcxlC`r^N+7bhaal~E3
zGGa6F8u1bF9f?FzBUzFBNj%a{QW@zi=>}<%^qDM0)+0NUBgjJX0rF|`W%2{^I|_xO
zMRA~nQ_?60C=HaWlqZx=VpK5$F;6j$*bcEuu{N<`u{YubaZPbY@lE1c;-%u}#P5jD
zN)RNpB%CE!65AyzB`!#eNz6-9C5<J0B@-nJB^xDgO1_lBNoh&BN^zuerA|s+m71cW
zsOnT_Dx12ST1UM`ou*-F+B8pE9Ib%%3vGZlCoLsyCLJuDDP1XjQF=lKC8H(dDU%>m
zB-1K0D)VKP(kjPQ+*SKmHLn_8^-)$q)<Kpln=jiUJ0kl<jxOga7cX~6u3hf2JX&5)
z-d{dL{<!=#`B?>;f{g-OAzz_Y;h`d|sHYg9xK;6_V!z_NlCqM!QnFIH(p9BdWf^4$
z<v8UM<!<E}6{?Dz3Qwg(<&w%Px-{L9o<J|7_tNK76;(Y{g{n2G1F8#Z+G;^+IchCx
zkJX9lO!a8>67?SSISmyJAB}8{CXI)h1Wl%9tmaY8KFyC>+FBu6d$roNUTVu~dunHC
zH)%i8q3GD_r0CS@+|$MCGIis1kLeET!FuL;v3iwycl2R>3w@scG5w*{nAKLR`KxPJ
zk1@y$M@BlMi7{y)W3bjB$DrNdjiH8NxZxqgKEv-u=0*udbw=aHQpR4!ImVsFf1Bu;
zuuUpW?wL|d-As3wc9_03(>LRq9XGpgPBr&2-)r7u{>{SDLSWHsF=MG=8EIK%ImV<h
z{g{Q!8&()AC#xM+T~?p1Ev(b5Tdn`HVc5jmG}^peqrHZ^rf$uYt(q;%w#IhCj&2ue
zcfxMMUe%suUu*x&LEVAlaLVC@qpo9|;~B>{PDV}wr}Iu9ovod>IbU``xwyOJy9~HW
zxdypbxIS@HbBl3na+`BEci-xM*#qO@?QzIs%u~se?b+Zt=Vj@&&8yd&?7iN*!u#1;
zy|se1oj$OSm(O9JN9#1#@z=Hc0$)$x!@iIGwEa^2e)q@v`}tS;KMybt$PVaRPhG!x
zedGEMflh%%f#X3sLBgP(VDaFH;D+FjAub`sArqm7q1!@lhslTW!aBln;lbgj!sj=*
zZaA`GI>J06FJg3~_QuSOH#f;|O4xL9v-oD#=5vvl$dJg!$geD4RxN8j$}_4eYL4y9
zKFWU0ap072X1KQ8V(yD*+vwuxmoc_6hht`9?PE)0XL-)N3f|i|kGSf%kMX|or{fnB
zLK0dM@rjX%7x+^Acz$n^a#Ci}P_lk<Uh+hWb;^;HIf1v}R4SCZF|{L&hWtqSg*w7L
z!pU^I^vd*48NnInG9@$lnf+Vzw(Q^XBFio7=dI|i?5#c7s@c1;C$~9ntJw~1kJ{d|
zLw!f?j_IB5JL`85cg64eBgZJGIOqNDklmfRO1V38r}nt-Y04AJ6XcEUwb@&}5514K
zZ(zUa{__3b^Evsq3XBR$3%(Yz3vc~o{8QOaiwB|)3=~-u9Y2UY$UiuG$o^1$v1D;p
z@zi0T!)+z>lKhhQM>Ze1S!z~VeUx}qcyyv{ZCOXTM)|?=uNAQsBb82-EmewD`>Q@4
z;~X14?r^-hTB*9A`pXI4iTgF~HEp$8wWTMqC(}<puM4j0`<eN3!zuYw1*g89=AWLZ
z52){Luxw~(RBSA2f}4a*GiM^s4F2NsOGh)Kxu!*?rQj?$D?Iz^*T`Q-TfJL*&N0t5
z|EBp{)p_dq{5Gg<OWRy~Z2Lq<SjW%>uM0h$Hl62xH~9T@mugq#Md^!0-Nf$P?!`-4
zm*y`gU!J`Zb7iV$bI<tI(5v@){d)(ld0)G6-R=6-KF7XGH*9Zo-L$@W;TH2&`)!Nc
zZT;r`=l?MO<NScdK-(S5I~{{ogPlWbhPsFChp*gqxqJPd=e^q_>qdq~gGTR<MT||{
z=iGn!AmPE=hv^R&#&<r#Jj#D8@woJf;*;8^x=&jsEG8~ax=i*zTmNi)iaquE&(uG^
zPUk+SJTHBr@}l9T$;+-8x0%6L8(vMnPJX>GoA)2d|5UxvdGp&}4uAE}h0aaC6}(;i
zyYQXdyVLK@-uKM=%|H2&_+jB={wKLl^`Dua`@V#Hd9jf375BC5o9?&H@7~`ZEha85
z{-8k&JYAjX7RFW<77P=HG2Mk5%@QW0(M8J6IVmAYD4?%TX0f?+23;gpmIcJWHm~TE
zsB!?>_W&UKaK(pgBT{F`Sk`1q_=ApIvi~>1Kja-poFc8Ycg2@f3jlK-0Mx-$UJPB7
z<Qx!4|Dg|z0B$r_z~v)H4d!t(c>EaT{Co~CjhDoy^Z4|Cv`LizZ;q8ZSF~{&Hxtp1
zNS#T^TLiqA*fhE)KaDHkvqTlK5|(a9AgVDnNsz`9Ca$I<O41yF)M!(arP?5}3nKHL
eE-t>)0svP6z_+5s#f6&1#cxP2P~!kx7XBBF2+<<|
literal 0
HcmV?d00001
diff --git a/configure.ac b/configure.ac
index 21b9bd113ed..ffe287aeb80 100644
--- a/configure.ac
+++ b/configure.ac
@@ -2870,6 +2870,7 @@ depend: \$(MAKEDEP) dummy
WINE_CONFIG_SYMLINK(wine,tools/winewrapper)
WINE_CONFIG_SYMLINK(wine64,tools/winewrapper,["x$enable_win64" != xno -o -n "$with_wine64"])
+WINE_CONFIG_MAKEFILE(color)
WINE_CONFIG_MAKEFILE(dlls/acledit)
WINE_CONFIG_MAKEFILE(dlls/aclui)
WINE_CONFIG_MAKEFILE(dlls/activeds.tlb)
diff --git a/loader/wine.inf.in b/loader/wine.inf.in
index 41471d3168e..879c1038a95 100644
--- a/loader/wine.inf.in
+++ b/loader/wine.inf.in
@@ -30,7 +30,7 @@ signature="$CHICAGO$"
RegisterDlls=RegisterDllsSection
WineFakeDlls=FakeDllsWin32,FakeDlls
UpdateInis=SystemIni
-CopyFiles=InfFiles,NlsFiles,SortFiles
+CopyFiles=ColorFiles,InfFiles,NlsFiles,SortFiles
AddReg=\
Classes,\
ContentIndex,\
@@ -55,7 +55,7 @@ AddReg=\
RegisterDlls=RegisterDllsSection
WineFakeDlls=FakeDllsWin32,FakeDlls
UpdateInis=SystemIni
-CopyFiles=InfFiles,NlsFiles,SortFiles
+CopyFiles=ColorFiles,InfFiles,NlsFiles,SortFiles
AddReg=\
Classes,\
ContentIndex,\
@@ -82,7 +82,7 @@ RegisterDlls=RegisterDllsSection
WineFakeDlls=FakeDllsWin64,FakeDlls
WinePreInstall=Wow64
UpdateInis=SystemIni
-CopyFiles=InfFiles,NlsFiles,SortFiles
+CopyFiles=ColorFiles,InfFiles,NlsFiles,SortFiles
AddReg=\
Classes,\
ContentIndex,\
@@ -110,7 +110,7 @@ RegisterDlls=RegisterDllsSection
WineFakeDlls=FakeDllsWin64,FakeDlls
WinePreInstall=Wow64
UpdateInis=SystemIni
-CopyFiles=InfFiles,NlsFiles,SortFiles
+CopyFiles=ColorFiles,InfFiles,NlsFiles,SortFiles
AddReg=\
Classes,\
ContentIndex,\
@@ -2949,7 +2949,6 @@ HKLM,%CurrentVersion%\Telephony\Country List\998,"SameAreaRule",,"G"
11,catroot,
11,mui,
11,tasks,
-11,spool\drivers\color,
11,spool\printers,
10,,explorer.exe
10,,hh.exe
@@ -4167,6 +4166,9 @@ HKLM,Software\Wine\LicenseInformation,"Shell-InBoxGames-Solitaire-EnableGame",0x
HKLM,Software\Wine\LicenseInformation,"Shell-InBoxGames-SpiderSolitaire-EnableGame",0x10001,0x00000001
HKLM,Software\Wine\LicenseInformation,"Shell-PremiumInBoxGames-Chess-EnableGame",0x10001,0x00000001
+[ColorFiles]
+"sRGB Color Space Profile.icm",sRGB_Color_Space_Profile.icm
+
[InfFiles]
winebus.inf
winehid.inf
@@ -4249,10 +4251,12 @@ normnfkd.nls
sortdefault.nls
[WineSourceDirs]
+ColorFiles = color
NlsFiles = nls
SortFiles = nls
[DestinationDirs]
+ColorFiles = 11,spool\drivers\color
InfFiles = 17
NlsFiles = 11
SortFiles = 10,globalization\sorting
diff --git a/tools/makedep.c b/tools/makedep.c
index 023ac6b8573..d35d08c0dca 100644
--- a/tools/makedep.c
+++ b/tools/makedep.c
@@ -2992,6 +2992,17 @@ static void output_source_svg( struct makefile *make, struct incl_file *source,
}
+/*******************************************************************
+ * output_source_icm
+ */
+static void output_source_icm( struct makefile *make, struct incl_file *source, const char *obj )
+{
+ add_install_rule( make, source->name, source->name,
+ strmake( "D$(colordir)/%s", source->name ));
+ output_srcdir_symlink( make, strmake( "%s.icm", obj ));
+}
+
+
/*******************************************************************
* output_source_nls
*/
@@ -3209,6 +3220,7 @@ static const struct
{ "tlb", output_source_tlb },
{ "sfd", output_source_sfd },
{ "svg", output_source_svg },
+ { "icm", output_source_icm },
{ "nls", output_source_nls },
{ "desktop", output_source_desktop },
{ "po", output_source_po },
--
2.28.0

View File

@@ -0,0 +1,2 @@
Fixes: [37396] Add sRGB color profile.
Disabled: True

View File

@@ -1,27 +1,26 @@
From ddc5f6fd9dde7a5cdde0be59d4a9db9e086400a9 Mon Sep 17 00:00:00 2001
From 3497a2faa4ebab67b65bcf99d4ed56baa70ddf96 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Michael=20M=C3=BCller?= <michael@fds-team.de>
Date: Sat, 12 Jul 2014 23:58:19 +0200
Subject: comctl32: Preserve custom colors between subitems. (v2)
Subject: [PATCH] comctl32: Preserve custom colors between subitems. (v2)
---
dlls/comctl32/listview.c | 20 +++++++++-----------
dlls/comctl32/tests/listview.c | 23 ++++++++++++++++++++---
2 files changed, 29 insertions(+), 14 deletions(-)
dlls/comctl32/listview.c | 15 +++++++++------
1 file changed, 9 insertions(+), 6 deletions(-)
diff --git a/dlls/comctl32/listview.c b/dlls/comctl32/listview.c
index 56e2563..a35f5f2 100644
index dba16d13a4c..35cab333b7b 100644
--- a/dlls/comctl32/listview.c
+++ b/dlls/comctl32/listview.c
@@ -1072,7 +1072,7 @@ static void prepaint_setup (const LISTVIEW_INFO *infoPtr, HDC hdc, NMLVCUSTOMDRA
COLORREF backcolor, textcolor;
@@ -1063,7 +1063,7 @@ static void prepaint_setup (const LISTVIEW_INFO *infoPtr, HDC hdc, const NMLVCUS
textcolor = cd->clrText;
/* apparently, for selected items, we have to override the returned values */
- if (!SubItem)
+ if (!SubItem || (infoPtr->dwLvExStyle & LVS_EX_FULLROWSELECT))
{
if (lpnmlvcd->nmcd.uItemState & CDIS_SELECTED)
if (cd->nmcd.uItemState & CDIS_SELECTED)
{
@@ -4784,6 +4784,7 @@ static BOOL LISTVIEW_DrawItem(LISTVIEW_INFO *infoPtr, HDC hdc, INT nItem, ITERAT
@@ -4786,6 +4786,7 @@ static BOOL LISTVIEW_DrawItem(LISTVIEW_INFO *infoPtr, HDC hdc, INT nItem, ITERAT
while (iterator_next(subitems))
{
DWORD subitemstage = CDRF_DODEFAULT;
@@ -29,15 +28,9 @@ index 56e2563..a35f5f2 100644
/* We need to query for each subitem, item's data (subitem == 0) is already here at this point */
if (subitems->nItem)
@@ -4810,19 +4811,16 @@ static BOOL LISTVIEW_DrawItem(LISTVIEW_INFO *infoPtr, HDC hdc, INT nItem, ITERAT
@@ -4813,13 +4814,15 @@ static BOOL LISTVIEW_DrawItem(LISTVIEW_INFO *infoPtr, HDC hdc, INT nItem, ITERAT
if (cdsubitemmode & CDRF_NOTIFYSUBITEMDRAW)
subitemstage = notify_customdraw(infoPtr, CDDS_SUBITEM | CDDS_ITEMPREPAINT, &nmlvcd);
- else
- {
- nmlvcd.clrTextBk = infoPtr->clrTextBk;
- nmlvcd.clrText = infoPtr->clrText;
- }
- if (subitems->nItem == 0 || (cdmode & CDRF_NOTIFYITEMDRAW))
- prepaint_setup(infoPtr, hdc, &nmlvcd, FALSE);
@@ -57,5 +50,5 @@ index 56e2563..a35f5f2 100644
if (subitemstage & CDRF_NOTIFYPOSTPAINT)
subitemstage = notify_customdraw(infoPtr, CDDS_SUBITEM | CDDS_ITEMPOSTPAINT, &nmlvcd);
--
2.9.0
2.27.0

View File

@@ -1,30 +0,0 @@
From 38d4fa059ffd4ecba4e7d04e2a5edd2bcff3c7df Mon Sep 17 00:00:00 2001
From: Sebastian Lackner <sebastian@fds-team.de>
Date: Wed, 27 Aug 2014 00:31:23 +0200
Subject: [PATCH] configure: Also add the absolute RPATH when linking against
libwine.
---
configure.ac | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/configure.ac b/configure.ac
index c88013910af..a7f1866bf0d 100644
--- a/configure.ac
+++ b/configure.ac
@@ -969,10 +969,10 @@ case $host_os in
WINEPRELOADER_LDFLAGS="-static -nostartfiles -nodefaultlibs -Wl,-Ttext=0x7d400000"
WINE_TRY_CFLAGS([-Wl,--rpath,\$ORIGIN/../lib],
- [LDRPATH_INSTALL="-Wl,--rpath,\\\$\$ORIGIN/\`\$(MAKEDEP) -R \${bindir} \${libdir}\`"
+ [LDRPATH_INSTALL="-Wl,--rpath,\\\$\$ORIGIN/\`\$(MAKEDEP) -R \${bindir} \${libdir}\`:\$(DESTDIR)\${libdir}"
LDRPATH_LOCAL="-Wl,--rpath,\\\$\$ORIGIN/\$(top_builddir)/libs/wine"],
[WINE_TRY_CFLAGS([-Wl,-R,\$ORIGIN/../lib],
- [LDRPATH_INSTALL="-Wl,-R,\\\$\$ORIGIN/\`\$(MAKEDEP) -R \${bindir} \${libdir}\`"
+ [LDRPATH_INSTALL="-Wl,-R,\\\$\$ORIGIN/\`\$(MAKEDEP) -R \${bindir} \${libdir}\`:\$(DESTDIR)\${libdir}"
LDRPATH_LOCAL="-Wl,-R,\\\$\$ORIGIN/\$(top_builddir)/libs/wine"])])
WINE_TRY_CFLAGS([-Wl,--enable-new-dtags],
--
2.27.0

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