You've already forked wine-staging
mirror of
https://gitlab.winehq.org/wine/wine-staging.git
synced 2025-04-13 14:42:51 -07:00
Compare commits
225 Commits
Author | SHA1 | Date | |
---|---|---|---|
|
495f9db49c | ||
|
3f981ccb7f | ||
|
fa354f3ca5 | ||
|
ebe4142fc3 | ||
|
cea60071d1 | ||
|
9739f8ff47 | ||
|
cc1da8fb76 | ||
|
b6406b6fbf | ||
|
8cb4aa20de | ||
|
e8d98eb7ba | ||
|
4a31790533 | ||
|
480b33f208 | ||
|
bedf3301ab | ||
|
56c6aa09fd | ||
|
2ee460d68d | ||
|
04283ef5c5 | ||
|
61fcdf539a | ||
|
28c580ffb4 | ||
|
fcca2476bf | ||
|
e09e1fd366 | ||
|
6a4c6089c4 | ||
|
d854a14e64 | ||
|
1fdaf4c4e5 | ||
|
4f315f2a10 | ||
|
6d7bf6bd02 | ||
|
745e1c5f96 | ||
|
092274bdf7 | ||
|
9999806838 | ||
|
d3bcb61436 | ||
|
c81dad1373 | ||
|
f03920a32a | ||
|
7d1d3410c8 | ||
|
7ae8e84d71 | ||
|
11d0c892e2 | ||
|
6a0ff5b96e | ||
|
de0ef226da | ||
|
923358dcea | ||
|
a1ec166849 | ||
|
ef8e90cbdc | ||
|
41645dc0b0 | ||
|
e33ae29ca0 | ||
|
29b36434e8 | ||
|
ac17c5d866 | ||
|
4cb811ac52 | ||
|
caef127ac8 | ||
|
ffd11f280d | ||
|
7b0a3f25ac | ||
|
e180b2e4dd | ||
|
2d66ecce58 | ||
|
6bc9218559 | ||
|
9d84ed42f1 | ||
|
84fb9656a1 | ||
|
52c1d8568a | ||
|
5bf41624ab | ||
|
97461b276c | ||
|
a85bb970af | ||
|
1977c70f7d | ||
|
a20cac28b5 | ||
|
6219ea48e6 | ||
|
950a11ae1d | ||
|
cf19a5d6d6 | ||
|
7332557b2a | ||
|
c0279488d1 | ||
|
fa8100f1b9 | ||
|
42fb38a610 | ||
|
81667ba219 | ||
|
5f0a24beb9 | ||
|
6fa35e72e2 | ||
|
95f4b465bc | ||
|
7773dec0f4 | ||
|
a70435933a | ||
|
06a6abe197 | ||
|
669b58c813 | ||
|
9c74ae13d4 | ||
|
ad9df471b8 | ||
|
32b5281e4a | ||
|
9f7244a1c6 | ||
|
c13d7cca17 | ||
|
a14e2990e5 | ||
|
8b6ef3476f | ||
|
471aacbe42 | ||
|
1943caeef2 | ||
|
cf8a34a673 | ||
|
139c48ff16 | ||
|
4f69cc1bb7 | ||
|
e71ab406f1 | ||
|
c35053e845 | ||
|
08182c7af0 | ||
|
0364bdc886 | ||
|
3459356aa2 | ||
|
779bfda14e | ||
|
4cea402c50 | ||
|
c0d536d04b | ||
|
aecae62db4 | ||
|
341fc2c260 | ||
|
75654525c4 | ||
|
00c019a55e | ||
|
0372a60903 | ||
|
50dc891626 | ||
|
25867f4e2e | ||
|
aec386ceb9 | ||
|
8030515325 | ||
|
15d6ebeab2 | ||
|
669232e38f | ||
|
7311dd6848 | ||
|
3ee8f1c014 | ||
|
4675c9c0d9 | ||
|
852c641a59 | ||
|
3954c8b1fa | ||
|
8d07a09d37 | ||
|
f035f18061 | ||
|
3d396bbbcd | ||
|
209c938af4 | ||
|
25c32643d1 | ||
|
d08487e304 | ||
|
0f313c9f99 | ||
|
96b4e33894 | ||
|
45fbdfad6c | ||
|
d01ff543f3 | ||
|
5978ff107d | ||
|
0fb2bacdac | ||
|
3585affaa9 | ||
|
f728c04557 | ||
|
ebab0ccb03 | ||
|
5a297663cf | ||
|
8823b6c0d0 | ||
|
bfb30ebb53 | ||
|
8ef881e9c0 | ||
|
9f233cfd3c | ||
|
0150681304 | ||
|
87281f1eba | ||
|
74292f1feb | ||
|
1d6e0dc90e | ||
|
fb385c985c | ||
|
167843b4f5 | ||
|
a4c1a65b66 | ||
|
a4e0892be4 | ||
|
91fa94203c | ||
|
1759d5c248 | ||
|
8cf7f25acc | ||
|
14cb31feb9 | ||
|
c0280c3c49 | ||
|
22eb6311e7 | ||
|
02aff3e781 | ||
|
bdf29b7cdc | ||
|
dcef4cecb0 | ||
|
bfe07a8e82 | ||
|
b26132831e | ||
|
6ae68a30f2 | ||
|
1d511798d0 | ||
|
0cfbc55f24 | ||
|
80d7ae1e23 | ||
|
77d4bb66d5 | ||
|
3d8124a27f | ||
|
abaeab8e60 | ||
|
f11d05b414 | ||
|
7e86c9d3dd | ||
|
c0594b617e | ||
|
97e67509d5 | ||
|
18f211f6f2 | ||
|
020e93fd21 | ||
|
3e2ae7b1b3 | ||
|
483c939258 | ||
|
47fa8b8289 | ||
|
54cf96ed97 | ||
|
d75cdefbcf | ||
|
c045545a88 | ||
|
9c776c29a3 | ||
|
a1d059b2b2 | ||
|
5baee54763 | ||
|
adf35b866f | ||
|
1b1aa41aa5 | ||
|
0bacf48a3d | ||
|
19c3c06677 | ||
|
ddb4914549 | ||
|
48352aa496 | ||
|
657d16845b | ||
|
14dc2c4737 | ||
|
0507f73a22 | ||
|
464eada106 | ||
|
472c1048ec | ||
|
d08debc99a | ||
|
55cb3e6d00 | ||
|
616ab59674 | ||
|
7bb5434fda | ||
|
7f6818cf31 | ||
|
a52ca8416d | ||
|
dc1bc1aff6 | ||
|
e06053b609 | ||
|
6ad8b3ed57 | ||
|
5065df86e0 | ||
|
0f57303c6a | ||
|
ddb9fa82ca | ||
|
909b4e25d6 | ||
|
9a13d50c53 | ||
|
11bcc32cd1 | ||
|
d73f96248d | ||
|
772a410836 | ||
|
81174370bb | ||
|
469d9bb7bf | ||
|
f97fd0676d | ||
|
1bec48302b | ||
|
289404eabe | ||
|
cb536ac20c | ||
|
1537775f66 | ||
|
05fafd86f0 | ||
|
3dadc9b50b | ||
|
7993a8d151 | ||
|
8c1c90df75 | ||
|
c58d017024 | ||
|
47754ac770 | ||
|
dce52cb85c | ||
|
b929eb6f9e | ||
|
db95c3ad44 | ||
|
3e7844d276 | ||
|
2f66d7483c | ||
|
70db296c0e | ||
|
047fc8866d | ||
|
f2fd3be62d | ||
|
7622ec9450 | ||
|
6581a6f2ea | ||
|
47d2040c12 | ||
|
e58651c321 | ||
|
8b685b1ebd | ||
|
b6035fb652 |
@@ -8,6 +8,7 @@ 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
|
||||
|
||||
Wine Staging is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Lesser General Public
|
||||
|
@@ -1,4 +1,4 @@
|
||||
From 83d96cdd81553544c79527c2aed329e96938af64 Mon Sep 17 00:00:00 2001
|
||||
From bd48f0d6b1476a77520f0bf5f82ac08e9dbf9acd Mon Sep 17 00:00:00 2001
|
||||
From: Sebastian Lackner <sebastian@fds-team.de>
|
||||
Date: Tue, 22 Mar 2016 21:54:01 +0100
|
||||
Subject: amstream: Avoid implicit cast of interface pointer.
|
||||
@@ -8,10 +8,10 @@ Subject: amstream: Avoid implicit cast of interface pointer.
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/dlls/amstream/mediastreamfilter.c b/dlls/amstream/mediastreamfilter.c
|
||||
index d0c6714..3f0397a 100644
|
||||
index 5abcb2f..a7ff6e8 100644
|
||||
--- a/dlls/amstream/mediastreamfilter.c
|
||||
+++ b/dlls/amstream/mediastreamfilter.c
|
||||
@@ -70,7 +70,7 @@ typedef struct {
|
||||
@@ -42,7 +42,7 @@ typedef struct {
|
||||
|
||||
static inline IMediaStreamFilterImpl *impl_from_IMediaStreamFilter(IMediaStreamFilter *iface)
|
||||
{
|
||||
@@ -19,7 +19,7 @@ index d0c6714..3f0397a 100644
|
||||
+ return CONTAINING_RECORD((IBaseFilter *)iface, IMediaStreamFilterImpl, filter.IBaseFilter_iface);
|
||||
}
|
||||
|
||||
static HRESULT WINAPI BasePinImpl_CheckMediaType(BasePin *This, const AM_MEDIA_TYPE *pmt)
|
||||
/*** IUnknown methods ***/
|
||||
--
|
||||
2.7.1
|
||||
2.7.4
|
||||
|
||||
|
@@ -1,14 +1,14 @@
|
||||
From cd3c63b259a711abf4e6e06f975e47f82b5b3e1b Mon Sep 17 00:00:00 2001
|
||||
From 3dd0480317fe0ed3951daf1cf5757204d11a1ae5 Mon Sep 17 00:00:00 2001
|
||||
From: Sebastian Lackner <sebastian@fds-team.de>
|
||||
Date: Tue, 22 Mar 2016 21:55:12 +0100
|
||||
Subject: d3d9: Avoid implicit cast of interface pointer.
|
||||
Subject: [PATCH] d3d9: Avoid implicit cast of interface pointer.
|
||||
|
||||
---
|
||||
dlls/d3d9/texture.c | 6 +++---
|
||||
1 file changed, 3 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/dlls/d3d9/texture.c b/dlls/d3d9/texture.c
|
||||
index 07bd83e..4e50093 100644
|
||||
index d3662f8..ebc3413 100644
|
||||
--- a/dlls/d3d9/texture.c
|
||||
+++ b/dlls/d3d9/texture.c
|
||||
@@ -25,17 +25,17 @@ WINE_DEFAULT_DEBUG_CHANNEL(d3d9);
|
||||
@@ -31,7 +31,7 @@ index 07bd83e..4e50093 100644
|
||||
+ return CONTAINING_RECORD((IDirect3DBaseTexture9 *)iface, struct d3d9_texture, IDirect3DBaseTexture9_iface);
|
||||
}
|
||||
|
||||
static HRESULT WINAPI d3d9_texture_2d_QueryInterface(IDirect3DTexture9 *iface, REFIID riid, void **out)
|
||||
static void STDMETHODCALLTYPE srv_wined3d_object_destroyed(void *parent)
|
||||
--
|
||||
2.7.1
|
||||
1.9.1
|
||||
|
||||
|
@@ -11,7 +11,7 @@ diff --git a/dlls/winex11.drv/opengl.c b/dlls/winex11.drv/opengl.c
|
||||
index 71af3db..966d32d 100644
|
||||
--- a/dlls/winex11.drv/opengl.c
|
||||
+++ b/dlls/winex11.drv/opengl.c
|
||||
@@ -440,6 +440,7 @@ static int GLXErrorHandler(Display *dpy, XErrorEvent *event, void *arg)
|
||||
@@ -440,6 +440,7 @@ static int GLXErrorHandler(Display *dpy,
|
||||
static BOOL X11DRV_WineGL_InitOpenglInfo(void)
|
||||
{
|
||||
static const char legacy_extensions[] = " WGL_EXT_extensions_string WGL_EXT_swap_control";
|
||||
@@ -19,30 +19,26 @@ index 71af3db..966d32d 100644
|
||||
|
||||
int screen = DefaultScreen(gdi_display);
|
||||
Window win = 0, root = 0;
|
||||
@@ -491,10 +492,13 @@ static BOOL X11DRV_WineGL_InitOpenglInfo(void)
|
||||
@@ -493,16 +494,18 @@ static BOOL X11DRV_WineGL_InitOpenglInfo
|
||||
}
|
||||
gl_renderer = (const char *)opengl_funcs.gl.p_glGetString(GL_RENDERER);
|
||||
WineGLInfo.glVersion = (const char *) opengl_funcs.gl.p_glGetString(GL_VERSION);
|
||||
+ WineGLInfo.glxDirect = pglXIsDirect(gdi_display, ctx);
|
||||
gl_version = (const char *)opengl_funcs.gl.p_glGetString(GL_VERSION);
|
||||
+ glx_direct = pglXIsDirect(gdi_display, ctx);
|
||||
str = (const char *) opengl_funcs.gl.p_glGetString(GL_EXTENSIONS);
|
||||
- WineGLInfo.glExtensions = HeapAlloc(GetProcessHeap(), 0, strlen(str)+sizeof(legacy_extensions));
|
||||
+ WineGLInfo.glExtensions = HeapAlloc(GetProcessHeap(), 0, strlen(str)+sizeof(legacy_extensions)+sizeof(direct_extension));
|
||||
strcpy(WineGLInfo.glExtensions, str);
|
||||
strcat(WineGLInfo.glExtensions, legacy_extensions);
|
||||
+ if (WineGLInfo.glxDirect)
|
||||
+ strcat(WineGLInfo.glExtensions, direct_extension);
|
||||
- glExtensions = HeapAlloc(GetProcessHeap(), 0, strlen(str)+sizeof(legacy_extensions));
|
||||
+ glExtensions = HeapAlloc(GetProcessHeap(), 0, strlen(str)+sizeof(legacy_extensions)+sizeof(direct_extension));
|
||||
strcpy(glExtensions, str);
|
||||
strcat(glExtensions, legacy_extensions);
|
||||
+ if (glx_direct)
|
||||
+ strcat(glExtensions, direct_extension);
|
||||
|
||||
/* Get the common GLX version supported by GLX client and server ( major/minor) */
|
||||
pglXQueryVersion(gdi_display, &WineGLInfo.glxVersion[0], &WineGLInfo.glxVersion[1]);
|
||||
@@ -508,7 +512,7 @@ static BOOL X11DRV_WineGL_InitOpenglInfo(void)
|
||||
WineGLInfo.glxClientExtensions = pglXGetClientString(gdi_display, GLX_EXTENSIONS);
|
||||
pglXQueryVersion(gdi_display, &glxVersion[0], &glxVersion[1]);
|
||||
|
||||
WineGLInfo.glxExtensions = pglXQueryExtensionsString(gdi_display, screen);
|
||||
- WineGLInfo.glxDirect = pglXIsDirect(gdi_display, ctx);
|
||||
+
|
||||
glxExtensions = pglXQueryExtensionsString(gdi_display, screen);
|
||||
- glx_direct = pglXIsDirect(gdi_display, ctx);
|
||||
|
||||
TRACE("GL version : %s.\n", WineGLInfo.glVersion);
|
||||
TRACE("GL version : %s.\n", gl_version);
|
||||
TRACE("GL renderer : %s.\n", gl_renderer);
|
||||
--
|
||||
1.7.9.5
|
||||
|
||||
|
@@ -1,40 +1,41 @@
|
||||
From 41ee5d7699182ea01c61223ab9d0a10473e16ac2 Mon Sep 17 00:00:00 2001
|
||||
From ee1533db82fa2a955765b6a00f5300900350d2fe Mon Sep 17 00:00:00 2001
|
||||
From: Sebastian Lackner <sebastian@fds-team.de>
|
||||
Date: Thu, 2 Oct 2014 19:44:31 +0200
|
||||
Subject: kernel32: Add winediag message to show warning, that this isn't
|
||||
vanilla wine.
|
||||
Subject: [PATCH] kernel32: Add winediag message to show warning, that this
|
||||
isn't vanilla wine.
|
||||
|
||||
---
|
||||
dlls/kernel32/process.c | 9 +++++++++
|
||||
1 file changed, 9 insertions(+)
|
||||
dlls/kernel32/process.c | 10 ++++++++++
|
||||
1 file changed, 10 insertions(+)
|
||||
|
||||
diff --git a/dlls/kernel32/process.c b/dlls/kernel32/process.c
|
||||
index 6d0fc74cdf4..ed1d967ffdf 100644
|
||||
index 0a3fd70..206224f 100644
|
||||
--- a/dlls/kernel32/process.c
|
||||
+++ b/dlls/kernel32/process.c
|
||||
@@ -65,6 +65,7 @@
|
||||
|
||||
WINE_DEFAULT_DEBUG_CHANNEL(process);
|
||||
WINE_DECLARE_DEBUG_CHANNEL(file);
|
||||
WINE_DECLARE_DEBUG_CHANNEL(relay);
|
||||
+WINE_DECLARE_DEBUG_CHANNEL(winediag);
|
||||
|
||||
#ifdef __APPLE__
|
||||
extern char **__wine_get_main_environment(void);
|
||||
@@ -1104,6 +1105,14 @@ static DWORD WINAPI start_process( PEB *peb )
|
||||
DPRINTF( "%04x:Starting process %s (entryproc=%p)\n", GetCurrentThreadId(),
|
||||
debugstr_w(peb->ProcessParameters->ImagePathName.Buffer), entry );
|
||||
@@ -1090,6 +1091,15 @@ void WINAPI start_process( LPTHREAD_START_ROUTINE entry, PEB *peb )
|
||||
|
||||
+ 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());
|
||||
__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;
|
||||
+
|
||||
if (!CheckRemoteDebuggerPresent( GetCurrentProcess(), &being_debugged ))
|
||||
being_debugged = FALSE;
|
||||
|
||||
--
|
||||
2.11.0
|
||||
1.9.1
|
||||
|
||||
|
@@ -1,25 +1,25 @@
|
||||
From 994fe46f1b68d851d285a29cce904bd9f22540ea Mon Sep 17 00:00:00 2001
|
||||
From 95fd708dbdd9f8d61fdd8f1571c44e98c54b8988 Mon Sep 17 00:00:00 2001
|
||||
From: Andrew Wesie <awesie@gmail.com>
|
||||
Date: Tue, 2 May 2017 00:59:49 -0500
|
||||
Subject: advapi32: Implement BuildSecurityDescriptorW.
|
||||
Subject: [PATCH] advapi32: Implement BuildSecurityDescriptorW.
|
||||
|
||||
---
|
||||
dlls/advapi32/security.c | 218 +++++++++++++++++++++++++++++++++++------------
|
||||
1 file changed, 164 insertions(+), 54 deletions(-)
|
||||
|
||||
diff --git a/dlls/advapi32/security.c b/dlls/advapi32/security.c
|
||||
index 24ec3099713..82bb6689d43 100644
|
||||
index 6f4fb44..3737827 100644
|
||||
--- a/dlls/advapi32/security.c
|
||||
+++ b/dlls/advapi32/security.c
|
||||
@@ -58,6 +58,7 @@ static BOOL ParseStringSecurityDescriptorToSecurityDescriptor(
|
||||
SECURITY_DESCRIPTOR_RELATIVE* SecurityDescriptor,
|
||||
LPDWORD cBytes);
|
||||
static DWORD ParseAclStringFlags(LPCWSTR* StringAcl);
|
||||
@@ -48,6 +48,7 @@
|
||||
WINE_DEFAULT_DEBUG_CHANNEL(advapi);
|
||||
|
||||
static BOOL ParseStringSidToSid(LPCWSTR StringSid, PSID pSid, LPDWORD cBytes);
|
||||
+static DWORD trustee_to_sid(DWORD nDestinationSidLength, PSID pDestinationSid, PTRUSTEEW pTrustee);
|
||||
|
||||
typedef struct _ACEFLAG
|
||||
{
|
||||
@@ -1264,16 +1265,122 @@ DWORD WINAPI BuildSecurityDescriptorW(
|
||||
@@ -1255,16 +1256,122 @@ DWORD WINAPI BuildSecurityDescriptorW(
|
||||
IN ULONG cCountOfAccessEntries,
|
||||
IN PEXPLICIT_ACCESSW pListOfAccessEntries,
|
||||
IN ULONG cCountOfAuditEntries,
|
||||
@@ -147,7 +147,7 @@ index 24ec3099713..82bb6689d43 100644
|
||||
}
|
||||
|
||||
/******************************************************************************
|
||||
@@ -3766,6 +3873,56 @@ static void free_trustee_name(TRUSTEE_FORM form, WCHAR *trustee_nameW)
|
||||
@@ -3754,6 +3861,56 @@ static void free_trustee_name(TRUSTEE_FORM form, WCHAR *trustee_nameW)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -204,7 +204,7 @@ index 24ec3099713..82bb6689d43 100644
|
||||
/******************************************************************************
|
||||
* SetEntriesInAclA [ADVAPI32.@]
|
||||
*/
|
||||
@@ -3861,56 +4018,9 @@ DWORD WINAPI SetEntriesInAclW( ULONG count, PEXPLICIT_ACCESSW pEntries,
|
||||
@@ -3849,56 +4006,9 @@ DWORD WINAPI SetEntriesInAclW( ULONG count, PEXPLICIT_ACCESSW pEntries,
|
||||
pEntries[i].Trustee.TrusteeForm, pEntries[i].Trustee.TrusteeType,
|
||||
pEntries[i].Trustee.ptstrName);
|
||||
|
||||
@@ -264,5 +264,5 @@ index 24ec3099713..82bb6689d43 100644
|
||||
/* Note: we overestimate the ACL size here as a tradeoff between
|
||||
* instructions (simplicity) and memory */
|
||||
--
|
||||
2.12.2
|
||||
1.9.1
|
||||
|
||||
|
@@ -1,2 +1 @@
|
||||
Fixes: Initial implementation of advapi32.BuildSecurityDescriptorW
|
||||
Depends: advapi32-GetExplicitEntriesFromAclW
|
||||
Fixes: [37594] Initial implementation of advapi32.BuildSecurityDescriptorW
|
||||
|
@@ -1 +1 @@
|
||||
Fixes: Implement advapi32.CreateRestrictedToken
|
||||
Fixes: [25834] Implement advapi32.CreateRestrictedToken
|
||||
|
@@ -1,279 +0,0 @@
|
||||
From 510d9f43f441bc3a9723aabfd2c1cdc8737d6dcc Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Michael=20M=C3=BCller?= <michael@fds-team.de>
|
||||
Date: Sun, 28 Aug 2016 21:56:41 +0200
|
||||
Subject: advapi32: Implement GetExplicitEntriesFromAclW.
|
||||
|
||||
---
|
||||
dlls/advapi32/security.c | 81 ++++++++++++++++++++++-
|
||||
dlls/advapi32/tests/security.c | 142 +++++++++++++++++++++++++++++++++++++++++
|
||||
2 files changed, 221 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/dlls/advapi32/security.c b/dlls/advapi32/security.c
|
||||
index e36792cff4..b305947347 100644
|
||||
--- a/dlls/advapi32/security.c
|
||||
+++ b/dlls/advapi32/security.c
|
||||
@@ -4205,8 +4205,85 @@ DWORD WINAPI GetExplicitEntriesFromAclA( PACL pacl, PULONG pcCountOfExplicitEntr
|
||||
DWORD WINAPI GetExplicitEntriesFromAclW( PACL pacl, PULONG pcCountOfExplicitEntries,
|
||||
PEXPLICIT_ACCESSW* pListOfExplicitEntries)
|
||||
{
|
||||
- FIXME("%p %p %p\n",pacl, pcCountOfExplicitEntries, pListOfExplicitEntries);
|
||||
- return ERROR_CALL_NOT_IMPLEMENTED;
|
||||
+ ACL_SIZE_INFORMATION sizeinfo;
|
||||
+ EXPLICIT_ACCESSW* entries;
|
||||
+ MAX_SID *sid_entries;
|
||||
+ ACE_HEADER *ace;
|
||||
+ NTSTATUS status;
|
||||
+ int i;
|
||||
+
|
||||
+ FIXME("%p %p %p: semi-stub\n",pacl, pcCountOfExplicitEntries, pListOfExplicitEntries);
|
||||
+
|
||||
+ if (!pcCountOfExplicitEntries || !pListOfExplicitEntries)
|
||||
+ return ERROR_INVALID_PARAMETER;
|
||||
+
|
||||
+ status = RtlQueryInformationAcl(pacl, &sizeinfo, sizeof(sizeinfo), AclSizeInformation);
|
||||
+ if (status) return RtlNtStatusToDosError(status);
|
||||
+
|
||||
+ if (!sizeinfo.AceCount)
|
||||
+ {
|
||||
+ *pcCountOfExplicitEntries = 0;
|
||||
+ *pListOfExplicitEntries = NULL;
|
||||
+ return ERROR_SUCCESS;
|
||||
+ }
|
||||
+
|
||||
+ entries = LocalAlloc(LMEM_FIXED | LMEM_ZEROINIT, (sizeof(EXPLICIT_ACCESSW) + sizeof(MAX_SID)) * sizeinfo.AceCount);
|
||||
+ if (!entries) return ERROR_OUTOFMEMORY;
|
||||
+ sid_entries = (MAX_SID*)((char*)entries + sizeof(EXPLICIT_ACCESSW) * sizeinfo.AceCount);
|
||||
+
|
||||
+ for (i = 0; i < sizeinfo.AceCount; i++)
|
||||
+ {
|
||||
+ status = RtlGetAce(pacl, i, (void**)&ace);
|
||||
+ if (status) goto error;
|
||||
+
|
||||
+ switch (ace->AceType)
|
||||
+ {
|
||||
+ case ACCESS_ALLOWED_ACE_TYPE:
|
||||
+ {
|
||||
+ ACCESS_ALLOWED_ACE *allow = (ACCESS_ALLOWED_ACE *)ace;
|
||||
+ entries[i].grfAccessMode = GRANT_ACCESS;
|
||||
+ entries[i].grfInheritance = ace->AceFlags;
|
||||
+ entries[i].grfAccessPermissions = allow->Mask;
|
||||
+
|
||||
+ CopySid(sizeof(MAX_SID), (PSID)&sid_entries[i], (PSID)&allow->SidStart);
|
||||
+ entries[i].Trustee.pMultipleTrustee = NULL;
|
||||
+ entries[i].Trustee.MultipleTrusteeOperation = NO_MULTIPLE_TRUSTEE;
|
||||
+ entries[i].Trustee.TrusteeForm = TRUSTEE_IS_SID;
|
||||
+ entries[i].Trustee.TrusteeType = TRUSTEE_IS_UNKNOWN;
|
||||
+ entries[i].Trustee.ptstrName = (WCHAR *)&sid_entries[i];
|
||||
+ break;
|
||||
+ }
|
||||
+
|
||||
+ case ACCESS_DENIED_ACE_TYPE:
|
||||
+ {
|
||||
+ ACCESS_DENIED_ACE *deny = (ACCESS_DENIED_ACE *)ace;
|
||||
+ entries[i].grfAccessMode = DENY_ACCESS;
|
||||
+ entries[i].grfInheritance = ace->AceFlags;
|
||||
+ entries[i].grfAccessPermissions = deny->Mask;
|
||||
+
|
||||
+ CopySid(sizeof(MAX_SID), (PSID)&sid_entries[i], (PSID)&deny->SidStart);
|
||||
+ entries[i].Trustee.pMultipleTrustee = NULL;
|
||||
+ entries[i].Trustee.MultipleTrusteeOperation = NO_MULTIPLE_TRUSTEE;
|
||||
+ entries[i].Trustee.TrusteeForm = TRUSTEE_IS_SID;
|
||||
+ entries[i].Trustee.TrusteeType = TRUSTEE_IS_UNKNOWN;
|
||||
+ entries[i].Trustee.ptstrName = (WCHAR *)&sid_entries[i];
|
||||
+ break;
|
||||
+ }
|
||||
+
|
||||
+ default:
|
||||
+ FIXME("Unhandled ace type %d\n", ace->AceType);
|
||||
+ entries[i].grfAccessMode = NOT_USED_ACCESS;
|
||||
+ continue;
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ *pcCountOfExplicitEntries = sizeinfo.AceCount;
|
||||
+ *pListOfExplicitEntries = entries;
|
||||
+ return ERROR_SUCCESS;
|
||||
+
|
||||
+error:
|
||||
+ LocalFree(entries);
|
||||
+ return RtlNtStatusToDosError(status);
|
||||
}
|
||||
|
||||
/******************************************************************************
|
||||
diff --git a/dlls/advapi32/tests/security.c b/dlls/advapi32/tests/security.c
|
||||
index 3c68205922..ca5edffae5 100644
|
||||
--- a/dlls/advapi32/tests/security.c
|
||||
+++ b/dlls/advapi32/tests/security.c
|
||||
@@ -134,6 +134,7 @@ static BOOL (WINAPI *pGetWindowsAccountDomainSid)(PSID,PSID,DWORD*);
|
||||
static void (WINAPI *pRtlInitAnsiString)(PANSI_STRING,PCSZ);
|
||||
static NTSTATUS (WINAPI *pRtlFreeUnicodeString)(PUNICODE_STRING);
|
||||
static PSID_IDENTIFIER_AUTHORITY (WINAPI *pGetSidIdentifierAuthority)(PSID);
|
||||
+static DWORD (WINAPI *pGetExplicitEntriesFromAclW)(PACL,PULONG,PEXPLICIT_ACCESSW*);
|
||||
|
||||
static HMODULE hmod;
|
||||
static int myARGC;
|
||||
@@ -230,6 +231,7 @@ static void init(void)
|
||||
pGetWindowsAccountDomainSid = (void *)GetProcAddress(hmod, "GetWindowsAccountDomainSid");
|
||||
pGetSidIdentifierAuthority = (void *)GetProcAddress(hmod, "GetSidIdentifierAuthority");
|
||||
pDuplicateTokenEx = (void *)GetProcAddress(hmod, "DuplicateTokenEx");
|
||||
+ pGetExplicitEntriesFromAclW = (void *)GetProcAddress(hmod, "GetExplicitEntriesFromAclW");
|
||||
|
||||
myARGC = winetest_get_mainargs( &myARGV );
|
||||
}
|
||||
@@ -7076,6 +7078,145 @@ static void test_child_token_sd(void)
|
||||
HeapFree(GetProcessHeap(), 0, sd);
|
||||
}
|
||||
|
||||
+static void test_GetExplicitEntriesFromAclW(void)
|
||||
+{
|
||||
+ static const WCHAR wszCurrentUser[] = { 'C','U','R','R','E','N','T','_','U','S','E','R','\0'};
|
||||
+ SID_IDENTIFIER_AUTHORITY SIDAuthWorld = { SECURITY_WORLD_SID_AUTHORITY };
|
||||
+ SID_IDENTIFIER_AUTHORITY SIDAuthNT = { SECURITY_NT_AUTHORITY };
|
||||
+ PSID everyone_sid = NULL, users_sid = NULL;
|
||||
+ EXPLICIT_ACCESSW access;
|
||||
+ EXPLICIT_ACCESSW *access2;
|
||||
+ PACL new_acl, old_acl = NULL;
|
||||
+ ULONG count;
|
||||
+ DWORD res;
|
||||
+
|
||||
+ if (!pGetExplicitEntriesFromAclW)
|
||||
+ {
|
||||
+ win_skip("GetExplicitEntriesFromAclW is not available\n");
|
||||
+ return;
|
||||
+ }
|
||||
+
|
||||
+ if (!pSetEntriesInAclW)
|
||||
+ {
|
||||
+ win_skip("SetEntriesInAclW is not available\n");
|
||||
+ return;
|
||||
+ }
|
||||
+
|
||||
+ old_acl = HeapAlloc(GetProcessHeap(), 0, 256);
|
||||
+ res = InitializeAcl(old_acl, 256, ACL_REVISION);
|
||||
+ if(!res && GetLastError() == ERROR_CALL_NOT_IMPLEMENTED)
|
||||
+ {
|
||||
+ win_skip("ACLs not implemented - skipping tests\n");
|
||||
+ HeapFree(GetProcessHeap(), 0, old_acl);
|
||||
+ return;
|
||||
+ }
|
||||
+ ok(res, "InitializeAcl failed with error %d\n", GetLastError());
|
||||
+
|
||||
+ res = AllocateAndInitializeSid(&SIDAuthWorld, 1, SECURITY_WORLD_RID, 0, 0, 0, 0, 0, 0, 0, &everyone_sid);
|
||||
+ ok(res, "AllocateAndInitializeSid failed with error %d\n", GetLastError());
|
||||
+
|
||||
+ res = AllocateAndInitializeSid(&SIDAuthNT, 2, SECURITY_BUILTIN_DOMAIN_RID,
|
||||
+ DOMAIN_ALIAS_RID_USERS, 0, 0, 0, 0, 0, 0, &users_sid);
|
||||
+ ok(res, "AllocateAndInitializeSid failed with error %d\n", GetLastError());
|
||||
+
|
||||
+ res = AddAccessAllowedAce(old_acl, ACL_REVISION, KEY_READ, users_sid);
|
||||
+ ok(res, "AddAccessAllowedAce failed with error %d\n", GetLastError());
|
||||
+
|
||||
+ access2 = NULL;
|
||||
+ res = pGetExplicitEntriesFromAclW(old_acl, &count, &access2);
|
||||
+ ok(res == ERROR_SUCCESS, "GetExplicitEntriesFromAclW failed with error %d\n", GetLastError());
|
||||
+ ok(count == 1, "Expected count == 1, got %d\n", count);
|
||||
+ ok(access2[0].grfAccessMode == GRANT_ACCESS, "Expected GRANT_ACCESS, got %d\n", access2[0].grfAccessMode);
|
||||
+ ok(access2[0].grfAccessPermissions == KEY_READ, "Expected KEY_READ, got %d\n", access2[0].grfAccessPermissions);
|
||||
+ ok(access2[0].Trustee.TrusteeForm == TRUSTEE_IS_SID, "Expected SID trustee, got %d\n", access2[0].Trustee.TrusteeForm);
|
||||
+ ok(access2[0].grfInheritance == NO_INHERITANCE, "Expected NO_INHERITANCE, got %x\n", access2[0].grfInheritance);
|
||||
+ ok(EqualSid(access2[0].Trustee.ptstrName, users_sid), "Expected equal SIDs\n");
|
||||
+ LocalFree(access2);
|
||||
+
|
||||
+ access.Trustee.MultipleTrusteeOperation = NO_MULTIPLE_TRUSTEE;
|
||||
+ access.Trustee.pMultipleTrustee = NULL;
|
||||
+
|
||||
+ access.grfAccessPermissions = KEY_WRITE;
|
||||
+ access.grfAccessMode = GRANT_ACCESS;
|
||||
+ access.grfInheritance = NO_INHERITANCE;
|
||||
+ access.Trustee.TrusteeType = TRUSTEE_IS_WELL_KNOWN_GROUP;
|
||||
+ access.Trustee.TrusteeForm = TRUSTEE_IS_SID;
|
||||
+ access.Trustee.ptstrName = everyone_sid;
|
||||
+ res = pSetEntriesInAclW(1, &access, old_acl, &new_acl);
|
||||
+ ok(res == ERROR_SUCCESS, "SetEntriesInAclW failed: %u\n", res);
|
||||
+ ok(new_acl != NULL, "returned acl was NULL\n");
|
||||
+
|
||||
+ access2 = NULL;
|
||||
+ res = pGetExplicitEntriesFromAclW(new_acl, &count, &access2);
|
||||
+ ok(res == ERROR_SUCCESS, "GetExplicitEntriesFromAclW failed with error %d\n", GetLastError());
|
||||
+ ok(count == 2, "Expected count == 2, got %d\n", count);
|
||||
+ ok(access2[0].grfAccessMode == GRANT_ACCESS, "Expected GRANT_ACCESS, got %d\n", access2[0].grfAccessMode);
|
||||
+ ok(access2[0].grfAccessPermissions == KEY_WRITE, "Expected KEY_WRITE, got %d\n", access2[0].grfAccessPermissions);
|
||||
+ ok(access2[0].Trustee.TrusteeType == TRUSTEE_IS_UNKNOWN,
|
||||
+ "Expected TRUSTEE_IS_UNKNOWN trustee type, got %d\n", access2[0].Trustee.TrusteeType);
|
||||
+ ok(access2[0].Trustee.TrusteeForm == TRUSTEE_IS_SID, "Expected SID trustee, got %d\n", access2[0].Trustee.TrusteeForm);
|
||||
+ ok(access2[0].grfInheritance == NO_INHERITANCE, "Expected NO_INHERITANCE, got %x\n", access2[0].grfInheritance);
|
||||
+ ok(EqualSid(access2[0].Trustee.ptstrName, everyone_sid), "Expected equal SIDs\n");
|
||||
+ LocalFree(access2);
|
||||
+ LocalFree(new_acl);
|
||||
+
|
||||
+ access.Trustee.TrusteeType = TRUSTEE_IS_UNKNOWN;
|
||||
+ res = pSetEntriesInAclW(1, &access, old_acl, &new_acl);
|
||||
+ ok(res == ERROR_SUCCESS, "SetEntriesInAclW failed: %u\n", res);
|
||||
+ ok(new_acl != NULL, "returned acl was NULL\n");
|
||||
+
|
||||
+ access2 = NULL;
|
||||
+ res = pGetExplicitEntriesFromAclW(new_acl, &count, &access2);
|
||||
+ ok(res == ERROR_SUCCESS, "GetExplicitEntriesFromAclW failed with error %d\n", GetLastError());
|
||||
+ ok(count == 2, "Expected count == 2, got %d\n", count);
|
||||
+ ok(access2[0].grfAccessMode == GRANT_ACCESS, "Expected GRANT_ACCESS, got %d\n", access2[0].grfAccessMode);
|
||||
+ ok(access2[0].grfAccessPermissions == KEY_WRITE, "Expected KEY_WRITE, got %d\n", access2[0].grfAccessPermissions);
|
||||
+ ok(access2[0].Trustee.TrusteeType == TRUSTEE_IS_UNKNOWN,
|
||||
+ "Expected TRUSTEE_IS_UNKNOWN trustee type, got %d\n", access2[0].Trustee.TrusteeType);
|
||||
+ ok(access2[0].Trustee.TrusteeForm == TRUSTEE_IS_SID, "Expected SID trustee, got %d\n", access2[0].Trustee.TrusteeForm);
|
||||
+ ok(access2[0].grfInheritance == NO_INHERITANCE, "Expected NO_INHERITANCE, got %x\n", access2[0].grfInheritance);
|
||||
+ ok(EqualSid(access2[0].Trustee.ptstrName, everyone_sid), "Expected equal SIDs\n");
|
||||
+ LocalFree(access2);
|
||||
+ LocalFree(new_acl);
|
||||
+
|
||||
+ access.Trustee.TrusteeForm = TRUSTEE_IS_NAME;
|
||||
+ access.Trustee.ptstrName = (LPWSTR)wszCurrentUser;
|
||||
+ res = pSetEntriesInAclW(1, &access, old_acl, &new_acl);
|
||||
+ ok(res == ERROR_SUCCESS, "SetEntriesInAclW failed: %u\n", res);
|
||||
+ ok(new_acl != NULL, "returned acl was NULL\n");
|
||||
+
|
||||
+ access2 = NULL;
|
||||
+ res = pGetExplicitEntriesFromAclW(new_acl, &count, &access2);
|
||||
+ ok(res == ERROR_SUCCESS, "GetExplicitEntriesFromAclW failed with error %d\n", GetLastError());
|
||||
+ ok(count == 2, "Expected count == 2, got %d\n", count);
|
||||
+ ok(access2[0].grfAccessMode == GRANT_ACCESS, "Expected GRANT_ACCESS, got %d\n", access2[0].grfAccessMode);
|
||||
+ ok(access2[0].grfAccessPermissions == KEY_WRITE, "Expected KEY_WRITE, got %d\n", access2[0].grfAccessPermissions);
|
||||
+ ok(access2[0].Trustee.TrusteeType == TRUSTEE_IS_UNKNOWN,
|
||||
+ "Expected TRUSTEE_IS_UNKNOWN trustee type, got %d\n", access2[0].Trustee.TrusteeType);
|
||||
+ ok(access2[0].Trustee.TrusteeForm == TRUSTEE_IS_SID, "Expected SID trustee, got %d\n", access2[0].Trustee.TrusteeForm);
|
||||
+ ok(access2[0].grfInheritance == NO_INHERITANCE, "Expected NO_INHERITANCE, got %x\n", access2[0].grfInheritance);
|
||||
+ LocalFree(access2);
|
||||
+ LocalFree(new_acl);
|
||||
+
|
||||
+ access.grfAccessMode = REVOKE_ACCESS;
|
||||
+ access.Trustee.TrusteeForm = TRUSTEE_IS_SID;
|
||||
+ access.Trustee.ptstrName = users_sid;
|
||||
+ res = pSetEntriesInAclW(1, &access, old_acl, &new_acl);
|
||||
+ ok(res == ERROR_SUCCESS, "SetEntriesInAclW failed: %u\n", res);
|
||||
+ ok(new_acl != NULL, "returned acl was NULL\n");
|
||||
+
|
||||
+ access2 = (void *)0xdeadbeef;
|
||||
+ res = pGetExplicitEntriesFromAclW(new_acl, &count, &access2);
|
||||
+ ok(res == ERROR_SUCCESS, "GetExplicitEntriesFromAclW failed with error %d\n", GetLastError());
|
||||
+ ok(count == 0, "Expected count == 0, got %d\n", count);
|
||||
+ ok(access2 == NULL, "access2 was not NULL\n");
|
||||
+ LocalFree(new_acl);
|
||||
+
|
||||
+ FreeSid(users_sid);
|
||||
+ FreeSid(everyone_sid);
|
||||
+ HeapFree(GetProcessHeap(), 0, old_acl);
|
||||
+}
|
||||
+
|
||||
START_TEST(security)
|
||||
{
|
||||
init();
|
||||
@@ -7129,6 +7270,7 @@ START_TEST(security)
|
||||
test_pseudo_tokens();
|
||||
test_maximum_allowed();
|
||||
test_token_label();
|
||||
+ test_GetExplicitEntriesFromAclW();
|
||||
|
||||
/* Must be the last test, modifies process token */
|
||||
test_token_security_descriptor();
|
||||
--
|
||||
2.13.1
|
||||
|
@@ -1 +0,0 @@
|
||||
Fixes: Implement semi-stub for advapi32.GetExplicitEntriesFromAclW
|
@@ -1,7 +1,7 @@
|
||||
From 3092c9de3ac89e77a139db97a33b8b15f9a12eac Mon Sep 17 00:00:00 2001
|
||||
From 971789f2af6149998e54382522569b3790309cf2 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: server: Implement token integrity level.
|
||||
Subject: [PATCH] server: Implement token integrity level.
|
||||
|
||||
---
|
||||
dlls/ntdll/nt.c | 23 ++++++++++++++---------
|
||||
@@ -10,10 +10,10 @@ Subject: server: Implement token integrity level.
|
||||
3 files changed, 48 insertions(+), 12 deletions(-)
|
||||
|
||||
diff --git a/dlls/ntdll/nt.c b/dlls/ntdll/nt.c
|
||||
index dda6cabe1cf..6f2b24e6ba4 100644
|
||||
index 9e60196..59c6e49 100644
|
||||
--- a/dlls/ntdll/nt.c
|
||||
+++ b/dlls/ntdll/nt.c
|
||||
@@ -372,7 +372,7 @@ NTSTATUS WINAPI NtQueryInformationToken(
|
||||
@@ -340,7 +340,7 @@ NTSTATUS WINAPI NtQueryInformationToken(
|
||||
0, /* TokenAccessInformation */
|
||||
0, /* TokenVirtualizationAllowed */
|
||||
0, /* TokenVirtualizationEnabled */
|
||||
@@ -21,8 +21,8 @@ index dda6cabe1cf..6f2b24e6ba4 100644
|
||||
+ 0, /* TokenIntegrityLevel */
|
||||
0, /* TokenUIAccess */
|
||||
0, /* TokenMandatoryPolicy */
|
||||
sizeof(TOKEN_GROUPS) + sizeof(logon_sid), /* TokenLogonSid */
|
||||
@@ -625,18 +625,23 @@ NTSTATUS WINAPI NtQueryInformationToken(
|
||||
0, /* TokenLogonSid */
|
||||
@@ -593,18 +593,23 @@ NTSTATUS WINAPI NtQueryInformationToken(
|
||||
}
|
||||
break;
|
||||
case TokenIntegrityLevel:
|
||||
@@ -55,10 +55,10 @@ index dda6cabe1cf..6f2b24e6ba4 100644
|
||||
case TokenAppContainerSid:
|
||||
{
|
||||
diff --git a/server/protocol.def b/server/protocol.def
|
||||
index 33f1d5f0ab8..ac2e2242511 100644
|
||||
index c961eaf..0bb04cd 100644
|
||||
--- a/server/protocol.def
|
||||
+++ b/server/protocol.def
|
||||
@@ -3424,6 +3424,13 @@ enum caret_state
|
||||
@@ -3388,6 +3388,13 @@ enum caret_state
|
||||
VARARG(sid,SID); /* the sid specified by which_sid from the token */
|
||||
@END
|
||||
|
||||
@@ -73,10 +73,10 @@ index 33f1d5f0ab8..ac2e2242511 100644
|
||||
obj_handle_t handle; /* handle to the token */
|
||||
@REPLY
|
||||
diff --git a/server/token.c b/server/token.c
|
||||
index 292e1df80fd..8d2de6ab58e 100644
|
||||
index 355a523..1ed994a 100644
|
||||
--- a/server/token.c
|
||||
+++ b/server/token.c
|
||||
@@ -127,6 +127,7 @@ struct token
|
||||
@@ -112,6 +112,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 292e1df80fd..8d2de6ab58e 100644
|
||||
};
|
||||
|
||||
struct privilege
|
||||
@@ -567,7 +568,8 @@ static struct token *create_token( unsigned primary, const SID *user,
|
||||
@@ -544,7 +545,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 292e1df80fd..8d2de6ab58e 100644
|
||||
{
|
||||
struct token *token = alloc_object( &token_ops );
|
||||
if (token)
|
||||
@@ -648,6 +650,7 @@ static struct token *create_token( unsigned primary, const SID *user,
|
||||
@@ -625,6 +627,7 @@ static struct token *create_token( unsigned primary, const SID *user,
|
||||
}
|
||||
|
||||
token->source = source;
|
||||
@@ -102,7 +102,7 @@ index 292e1df80fd..8d2de6ab58e 100644
|
||||
}
|
||||
return token;
|
||||
}
|
||||
@@ -703,7 +706,8 @@ struct token *token_duplicate( struct token *src_token, unsigned primary,
|
||||
@@ -680,7 +683,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 292e1df80fd..8d2de6ab58e 100644
|
||||
if (!token) return token;
|
||||
|
||||
/* copy groups */
|
||||
@@ -907,7 +911,7 @@ struct token *token_create_admin( void )
|
||||
@@ -884,7 +888,7 @@ struct token *token_create_admin( void )
|
||||
static const TOKEN_SOURCE admin_source = {"SeMgr", {0, 0}};
|
||||
token = create_token( TRUE, user_sid, admin_groups, sizeof(admin_groups)/sizeof(admin_groups[0]),
|
||||
admin_privs, sizeof(admin_privs)/sizeof(admin_privs[0]), default_dacl,
|
||||
@@ -121,7 +121,7 @@ index 292e1df80fd..8d2de6ab58e 100644
|
||||
/* we really need a primary group */
|
||||
assert( token->primary_group );
|
||||
}
|
||||
@@ -1550,6 +1554,26 @@ DECL_HANDLER(get_token_sid)
|
||||
@@ -1530,6 +1534,26 @@ DECL_HANDLER(get_token_sid)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -149,5 +149,5 @@ index 292e1df80fd..8d2de6ab58e 100644
|
||||
DECL_HANDLER(get_token_groups)
|
||||
{
|
||||
--
|
||||
2.13.1
|
||||
1.9.1
|
||||
|
||||
|
@@ -1,7 +1,8 @@
|
||||
From 6444094c9ef4f30a253bcee9e873ed511bda222c Mon Sep 17 00:00:00 2001
|
||||
From d67d7293a17592b580d284fa68881a613e61f591 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: ntdll: Add function to create new tokens for elevation purposes.
|
||||
Subject: [PATCH] ntdll: Add function to create new tokens for elevation
|
||||
purposes.
|
||||
|
||||
---
|
||||
dlls/ntdll/ntdll.spec | 3 ++
|
||||
@@ -13,10 +14,10 @@ Subject: ntdll: Add function to create new tokens for elevation purposes.
|
||||
6 files changed, 117 insertions(+)
|
||||
|
||||
diff --git a/dlls/ntdll/ntdll.spec b/dlls/ntdll/ntdll.spec
|
||||
index c814f405017..eb84cc97bf8 100644
|
||||
index dbead5e..586b504 100644
|
||||
--- a/dlls/ntdll/ntdll.spec
|
||||
+++ b/dlls/ntdll/ntdll.spec
|
||||
@@ -1483,6 +1483,9 @@
|
||||
@@ -1482,6 +1482,9 @@
|
||||
# Virtual memory
|
||||
@ cdecl __wine_locked_recvmsg(long ptr long)
|
||||
|
||||
@@ -27,10 +28,10 @@ index c814f405017..eb84cc97bf8 100644
|
||||
@ cdecl wine_get_version() NTDLL_wine_get_version
|
||||
@ cdecl wine_get_patches() NTDLL_wine_get_patches
|
||||
diff --git a/dlls/ntdll/ntdll_misc.h b/dlls/ntdll/ntdll_misc.h
|
||||
index 907bbdd2d95..a7810f716ad 100644
|
||||
index 8a64338..137a22d 100644
|
||||
--- a/dlls/ntdll/ntdll_misc.h
|
||||
+++ b/dlls/ntdll/ntdll_misc.h
|
||||
@@ -77,6 +77,9 @@ extern void virtual_init_threading(void) DECLSPEC_HIDDEN;
|
||||
@@ -80,6 +80,9 @@ extern void virtual_init_threading(void) DECLSPEC_HIDDEN;
|
||||
extern void fill_cpu_info(void) DECLSPEC_HIDDEN;
|
||||
extern void heap_set_debug_flags( HANDLE handle ) DECLSPEC_HIDDEN;
|
||||
|
||||
@@ -41,7 +42,7 @@ index 907bbdd2d95..a7810f716ad 100644
|
||||
extern timeout_t server_start_time DECLSPEC_HIDDEN;
|
||||
extern unsigned int server_cpus DECLSPEC_HIDDEN;
|
||||
diff --git a/dlls/ntdll/process.c b/dlls/ntdll/process.c
|
||||
index f615ce2fea7..77048003ace 100644
|
||||
index 40034b4..1ebbb79 100644
|
||||
--- a/dlls/ntdll/process.c
|
||||
+++ b/dlls/ntdll/process.c
|
||||
@@ -99,6 +99,24 @@ HANDLE CDECL __wine_make_process_system(void)
|
||||
@@ -70,10 +71,10 @@ index f615ce2fea7..77048003ace 100644
|
||||
|
||||
#define UNIMPLEMENTED_INFO_CLASS(c) \
|
||||
diff --git a/server/protocol.def b/server/protocol.def
|
||||
index c8ab4bf8c36..59fe9aec7a8 100644
|
||||
index 0bb04cd..f2deca6 100644
|
||||
--- a/server/protocol.def
|
||||
+++ b/server/protocol.def
|
||||
@@ -3628,6 +3628,14 @@ struct handle_info
|
||||
@@ -3641,6 +3641,14 @@ struct handle_info
|
||||
@END
|
||||
|
||||
|
||||
@@ -89,7 +90,7 @@ index c8ab4bf8c36..59fe9aec7a8 100644
|
||||
@REQ(create_completion)
|
||||
unsigned int access; /* desired access to a port */
|
||||
diff --git a/server/security.h b/server/security.h
|
||||
index 6c337143c3d..21e90ccf23f 100644
|
||||
index 6c33714..21e90cc 100644
|
||||
--- a/server/security.h
|
||||
+++ b/server/security.h
|
||||
@@ -49,6 +49,7 @@ extern const PSID security_builtin_users_sid;
|
||||
@@ -101,18 +102,18 @@ index 6c337143c3d..21e90ccf23f 100644
|
||||
|
||||
/* token functions */
|
||||
diff --git a/server/token.c b/server/token.c
|
||||
index 3301283ee25..7abd92386ea 100644
|
||||
index 7776cbe..64ab565 100644
|
||||
--- a/server/token.c
|
||||
+++ b/server/token.c
|
||||
@@ -71,6 +71,7 @@ static const SID anonymous_logon_sid = { SID_REVISION, 1, { SECURITY_NT_AUTHORIT
|
||||
@@ -79,6 +79,7 @@ static const SID anonymous_logon_sid = { SID_REVISION, 1, { SECURITY_NT_AUTHORIT
|
||||
static const SID authenticated_user_sid = { SID_REVISION, 1, { SECURITY_NT_AUTHORITY }, { SECURITY_AUTHENTICATED_USER_RID } };
|
||||
static const SID local_system_sid = { SID_REVISION, 1, { SECURITY_NT_AUTHORITY }, { SECURITY_LOCAL_SYSTEM_RID } };
|
||||
static const SID high_label_sid = { SID_REVISION, 1, { SECURITY_MANDATORY_LABEL_AUTHORITY }, { SECURITY_MANDATORY_HIGH_RID } };
|
||||
+static const SID medium_label_sid = { SID_REVISION, 1, { SECURITY_MANDATORY_LABEL_AUTHORITY }, { SECURITY_MANDATORY_MEDIUM_RID } };
|
||||
static const struct /* same fields as struct SID */
|
||||
{
|
||||
BYTE Revision;
|
||||
@@ -110,6 +111,7 @@ const PSID security_builtin_admins_sid = (PSID)&builtin_admins_sid;
|
||||
static const SID_N(5) local_user_sid = { SID_REVISION, 5, { SECURITY_NT_AUTHORITY }, { SECURITY_NT_NON_UNIQUE, 0, 0, 0, 1000 } };
|
||||
static const SID_N(2) builtin_admins_sid = { SID_REVISION, 2, { SECURITY_NT_AUTHORITY }, { SECURITY_BUILTIN_DOMAIN_RID, DOMAIN_ALIAS_RID_ADMINS } };
|
||||
static const SID_N(2) builtin_users_sid = { SID_REVISION, 2, { SECURITY_NT_AUTHORITY }, { SECURITY_BUILTIN_DOMAIN_RID, DOMAIN_ALIAS_RID_USERS } };
|
||||
@@ -95,6 +96,7 @@ const PSID security_builtin_admins_sid = (PSID)&builtin_admins_sid;
|
||||
const PSID security_builtin_users_sid = (PSID)&builtin_users_sid;
|
||||
const PSID security_domain_users_sid = (PSID)&domain_users_sid;
|
||||
const PSID security_high_label_sid = (PSID)&high_label_sid;
|
||||
@@ -120,7 +121,7 @@ index 3301283ee25..7abd92386ea 100644
|
||||
|
||||
static luid_t prev_luid_value = { 1000, 0 };
|
||||
|
||||
@@ -915,6 +917,64 @@ struct token *token_create_admin( void )
|
||||
@@ -901,6 +903,64 @@ struct token *token_create_admin( void )
|
||||
return token;
|
||||
}
|
||||
|
||||
@@ -185,7 +186,7 @@ index 3301283ee25..7abd92386ea 100644
|
||||
static struct privilege *token_find_privilege( struct token *token, const LUID *luid, int enabled_only )
|
||||
{
|
||||
struct privilege *privilege;
|
||||
@@ -1729,3 +1789,27 @@ DECL_HANDLER(set_token_default_dacl)
|
||||
@@ -1718,3 +1778,27 @@ DECL_HANDLER(set_token_default_dacl)
|
||||
release_object( token );
|
||||
}
|
||||
}
|
||||
@@ -214,5 +215,5 @@ index 3301283ee25..7abd92386ea 100644
|
||||
+ }
|
||||
+}
|
||||
--
|
||||
2.14.1
|
||||
1.9.1
|
||||
|
||||
|
@@ -1,7 +1,7 @@
|
||||
From e15be9d22652dbf7ef027ce5f3ef3faa42139c7a Mon Sep 17 00:00:00 2001
|
||||
From 3ff546b9cbde1d0f5ea43c5cbb92ac8dc2028676 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: ntdll: Implement process token elevation through manifests.
|
||||
Subject: [PATCH] ntdll: Implement process token elevation through manifests.
|
||||
|
||||
---
|
||||
dlls/ntdll/loader.c | 37 +++++++++++++++++++++++++++++++++++++
|
||||
@@ -12,10 +12,10 @@ Subject: 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 cdf8d586c36..5162e2fc0ec 100644
|
||||
index 3fcbbf77a5..2399f1246e 100644
|
||||
--- a/dlls/ntdll/loader.c
|
||||
+++ b/dlls/ntdll/loader.c
|
||||
@@ -3095,6 +3095,32 @@ static void load_global_options(void)
|
||||
@@ -3054,6 +3054,32 @@ NTSTATUS attach_dlls( CONTEXT *context )
|
||||
}
|
||||
|
||||
|
||||
@@ -46,18 +46,18 @@ index cdf8d586c36..5162e2fc0ec 100644
|
||||
+
|
||||
+
|
||||
/***********************************************************************
|
||||
* start_process
|
||||
* load_global_options
|
||||
*/
|
||||
@@ -3111,6 +3137,7 @@ void WINAPI LdrInitializeThunk( void *kernel_start, ULONG_PTR unknown2,
|
||||
@@ -3115,6 +3141,7 @@ void WINAPI LdrInitializeThunk( void *kernel_start, ULONG_PTR unknown2,
|
||||
ULONG_PTR unknown3, ULONG_PTR unknown4 )
|
||||
{
|
||||
static const WCHAR globalflagW[] = {'G','l','o','b','a','l','F','l','a','g',0};
|
||||
+ ACTIVATION_CONTEXT_RUN_LEVEL_INFORMATION runlevel;
|
||||
LARGE_INTEGER timeout;
|
||||
NTSTATUS status;
|
||||
WINE_MODREF *wm;
|
||||
@@ -3154,6 +3181,16 @@ void WINAPI LdrInitializeThunk( void *kernel_start, ULONG_PTR unknown2,
|
||||
if ((status = fixup_imports( wm, load_path )) != STATUS_SUCCESS) goto error;
|
||||
PEB *peb = NtCurrentTeb()->Peb;
|
||||
@@ -3142,6 +3169,16 @@ void WINAPI LdrInitializeThunk( void *kernel_start, ULONG_PTR unknown2,
|
||||
REG_DWORD, &peb->NtGlobalFlag, sizeof(peb->NtGlobalFlag), NULL );
|
||||
heap_set_debug_flags( GetProcessHeap() );
|
||||
|
||||
+ /* elevate process if necessary */
|
||||
@@ -70,14 +70,14 @@ index cdf8d586c36..5162e2fc0ec 100644
|
||||
+ elevate_process(); /* FIXME: the process exists with a wrong token for a short time */
|
||||
+ }
|
||||
+
|
||||
status = wine_call_on_stack( attach_process_dlls, wm, (char *)NtCurrentTeb()->Tib.StackBase - page_size );
|
||||
if (status != STATUS_SUCCESS) goto error;
|
||||
|
||||
/* the main exe needs to be the first in the load order list */
|
||||
RemoveEntryList( &wm->ldr.InLoadOrderModuleList );
|
||||
InsertHeadList( &peb->LdrData->InLoadOrderModuleList, &wm->ldr.InLoadOrderModuleList );
|
||||
diff --git a/server/process.c b/server/process.c
|
||||
index f8969433ede..10cf39d8962 100644
|
||||
index ee85249bd4..81cea2f1ba 100644
|
||||
--- a/server/process.c
|
||||
+++ b/server/process.c
|
||||
@@ -1136,6 +1136,14 @@ struct process_snapshot *process_snap( int *count )
|
||||
@@ -1133,6 +1133,14 @@ struct process_snapshot *process_snap( int *count )
|
||||
return snapshot;
|
||||
}
|
||||
|
||||
@@ -93,10 +93,10 @@ index f8969433ede..10cf39d8962 100644
|
||||
DECL_HANDLER(new_process)
|
||||
{
|
||||
diff --git a/server/process.h b/server/process.h
|
||||
index 548796f9c22..262eb59627b 100644
|
||||
index f22c128f07..78e88ec350 100644
|
||||
--- a/server/process.h
|
||||
+++ b/server/process.h
|
||||
@@ -137,6 +137,7 @@ extern void break_process( struct process *process );
|
||||
@@ -136,6 +136,7 @@ extern void break_process( struct process *process );
|
||||
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);
|
||||
@@ -105,10 +105,10 @@ index 548796f9c22..262eb59627b 100644
|
||||
/* console functions */
|
||||
extern void inherit_console(struct thread *parent_thread, struct process *process, obj_handle_t hconin);
|
||||
diff --git a/server/protocol.def b/server/protocol.def
|
||||
index 7590541ac8a..55cc768d21a 100644
|
||||
index 0abd1683f0..5fb6e38ea5 100644
|
||||
--- a/server/protocol.def
|
||||
+++ b/server/protocol.def
|
||||
@@ -3610,6 +3610,13 @@ struct handle_info
|
||||
@@ -3654,6 +3654,13 @@ struct handle_info
|
||||
@END
|
||||
|
||||
|
||||
@@ -123,10 +123,10 @@ index 7590541ac8a..55cc768d21a 100644
|
||||
@REQ(create_completion)
|
||||
unsigned int access; /* desired access to a port */
|
||||
diff --git a/server/token.c b/server/token.c
|
||||
index 7abd92386ea..49e84362a83 100644
|
||||
index 64ab565a95..52fa10d52e 100644
|
||||
--- a/server/token.c
|
||||
+++ b/server/token.c
|
||||
@@ -1813,3 +1813,17 @@ DECL_HANDLER(create_token)
|
||||
@@ -1802,3 +1802,17 @@ DECL_HANDLER(create_token)
|
||||
release_object( token );
|
||||
}
|
||||
}
|
||||
@@ -145,5 +145,5 @@ index 7abd92386ea..49e84362a83 100644
|
||||
+ }
|
||||
+}
|
||||
--
|
||||
2.14.1
|
||||
2.16.1
|
||||
|
||||
|
@@ -1,7 +1,7 @@
|
||||
From 1546d28f3e52363ad805a1c1df1a3163d65afbed Mon Sep 17 00:00:00 2001
|
||||
From 796879e9a1840f7b893933d37821751cf1d35048 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Michael=20M=C3=BCller?= <michael@fds-team.de>
|
||||
Date: Sat, 5 Aug 2017 04:02:16 +0200
|
||||
Subject: kernel32: Implement CreateProcessInternalW.
|
||||
Subject: [PATCH] kernel32: Implement CreateProcessInternalW.
|
||||
|
||||
---
|
||||
dlls/kernel32/kernel32.spec | 2 +-
|
||||
@@ -11,7 +11,7 @@ Subject: kernel32: Implement CreateProcessInternalW.
|
||||
4 files changed, 17 insertions(+), 12 deletions(-)
|
||||
|
||||
diff --git a/dlls/kernel32/kernel32.spec b/dlls/kernel32/kernel32.spec
|
||||
index c60c5d6e532..7b5397a126e 100644
|
||||
index 60809f4..59915f9 100644
|
||||
--- a/dlls/kernel32/kernel32.spec
|
||||
+++ b/dlls/kernel32/kernel32.spec
|
||||
@@ -315,7 +315,7 @@
|
||||
@@ -24,10 +24,10 @@ index c60c5d6e532..7b5397a126e 100644
|
||||
@ stdcall CreateProcessW(wstr wstr ptr ptr long long ptr wstr ptr ptr)
|
||||
@ stdcall CreateRemoteThread(long ptr long ptr long long ptr)
|
||||
diff --git a/dlls/kernel32/process.c b/dlls/kernel32/process.c
|
||||
index 46449c9bf34..6cae911fdfb 100644
|
||||
index e7f9fd9..d37003c 100644
|
||||
--- a/dlls/kernel32/process.c
|
||||
+++ b/dlls/kernel32/process.c
|
||||
@@ -2441,12 +2441,13 @@ static LPWSTR get_file_name( LPCWSTR appname, LPWSTR cmdline, LPWSTR buffer,
|
||||
@@ -2432,12 +2432,13 @@ static LPWSTR get_file_name( LPCWSTR appname, LPWSTR cmdline, LPWSTR buffer,
|
||||
return ret;
|
||||
}
|
||||
|
||||
@@ -47,7 +47,7 @@ index 46449c9bf34..6cae911fdfb 100644
|
||||
{
|
||||
BOOL retv = FALSE;
|
||||
HANDLE hFile = 0;
|
||||
@@ -2459,6 +2460,9 @@ static BOOL create_process_impl( LPCWSTR app_name, LPWSTR cmd_line, LPSECURITY_A
|
||||
@@ -2450,6 +2451,9 @@ static BOOL create_process_impl( LPCWSTR app_name, LPWSTR cmd_line, LPSECURITY_A
|
||||
|
||||
TRACE("app %s cmdline %s\n", debugstr_w(app_name), debugstr_w(cmd_line) );
|
||||
|
||||
@@ -57,7 +57,7 @@ index 46449c9bf34..6cae911fdfb 100644
|
||||
if (!(tidy_cmdline = get_file_name( app_name, cmd_line, name, sizeof(name)/sizeof(WCHAR),
|
||||
&hFile, &binary_info )))
|
||||
return FALSE;
|
||||
@@ -2610,8 +2614,8 @@ BOOL WINAPI DECLSPEC_HOTPATCH CreateProcessA( LPCSTR app_name, LPSTR cmd_line, L
|
||||
@@ -2601,8 +2605,8 @@ BOOL WINAPI DECLSPEC_HOTPATCH CreateProcessA( LPCSTR app_name, LPSTR cmd_line, L
|
||||
FIXME("StartupInfo.lpReserved is used, please report (%s)\n",
|
||||
debugstr_a(startup_info->lpReserved));
|
||||
|
||||
@@ -68,7 +68,7 @@ index 46449c9bf34..6cae911fdfb 100644
|
||||
done:
|
||||
HeapFree( GetProcessHeap(), 0, app_nameW );
|
||||
HeapFree( GetProcessHeap(), 0, cmd_lineW );
|
||||
@@ -2630,8 +2634,8 @@ BOOL WINAPI DECLSPEC_HOTPATCH CreateProcessW( LPCWSTR app_name, LPWSTR cmd_line,
|
||||
@@ -2621,8 +2625,8 @@ BOOL WINAPI DECLSPEC_HOTPATCH CreateProcessW( LPCWSTR app_name, LPWSTR cmd_line,
|
||||
LPVOID env, LPCWSTR cur_dir, LPSTARTUPINFOW startup_info,
|
||||
LPPROCESS_INFORMATION info )
|
||||
{
|
||||
@@ -80,7 +80,7 @@ index 46449c9bf34..6cae911fdfb 100644
|
||||
|
||||
|
||||
diff --git a/dlls/kernelbase/kernelbase.spec b/dlls/kernelbase/kernelbase.spec
|
||||
index bf254155aab..7b8c8c44161 100644
|
||||
index 1a6f1ff..8d2b722 100644
|
||||
--- a/dlls/kernelbase/kernelbase.spec
|
||||
+++ b/dlls/kernelbase/kernelbase.spec
|
||||
@@ -209,7 +209,7 @@
|
||||
@@ -91,12 +91,12 @@ index bf254155aab..7b8c8c44161 100644
|
||||
+@ stdcall CreateProcessInternalW(long wstr wstr ptr ptr long long ptr wstr ptr ptr ptr) kernel32.CreateProcessInternalW
|
||||
@ stdcall CreateProcessW(wstr wstr ptr ptr long long ptr wstr ptr ptr) kernel32.CreateProcessW
|
||||
@ stdcall CreateRemoteThread(long ptr long ptr long long ptr) kernel32.CreateRemoteThread
|
||||
@ stdcall CreateRemoteThreadEx(long ptr long ptr long long ptr ptr) kernel32.CreateRemoteThreadEx
|
||||
@ stdcall CreateRemoteThreadEx(long ptr long ptr ptr long ptr ptr) kernel32.CreateRemoteThreadEx
|
||||
diff --git a/include/winbase.h b/include/winbase.h
|
||||
index 24efbd865ab..7982fa4a070 100644
|
||||
index 8d65d78..35a2213 100644
|
||||
--- a/include/winbase.h
|
||||
+++ b/include/winbase.h
|
||||
@@ -1847,6 +1847,7 @@ WINBASEAPI BOOL WINAPI CreateProcessW(LPCWSTR,LPWSTR,LPSECURITY_ATTRIBUTE
|
||||
@@ -1856,6 +1856,7 @@ WINBASEAPI BOOL WINAPI CreateProcessW(LPCWSTR,LPWSTR,LPSECURITY_ATTRIBUTE
|
||||
WINADVAPI BOOL WINAPI CreateProcessAsUserA(HANDLE,LPCSTR,LPSTR,LPSECURITY_ATTRIBUTES,LPSECURITY_ATTRIBUTES,BOOL,DWORD,LPVOID,LPCSTR,LPSTARTUPINFOA,LPPROCESS_INFORMATION);
|
||||
WINADVAPI BOOL WINAPI CreateProcessAsUserW(HANDLE,LPCWSTR,LPWSTR,LPSECURITY_ATTRIBUTES,LPSECURITY_ATTRIBUTES,BOOL,DWORD,LPVOID,LPCWSTR,LPSTARTUPINFOW,LPPROCESS_INFORMATION);
|
||||
#define CreateProcessAsUser WINELIB_NAME_AW(CreateProcessAsUser)
|
||||
@@ -105,5 +105,5 @@ index 24efbd865ab..7982fa4a070 100644
|
||||
WINBASEAPI HANDLE WINAPI CreateRemoteThread(HANDLE,LPSECURITY_ATTRIBUTES,SIZE_T,LPTHREAD_START_ROUTINE,LPVOID,DWORD,LPDWORD);
|
||||
WINBASEAPI HANDLE WINAPI CreateRemoteThreadEx(HANDLE,LPSECURITY_ATTRIBUTES,SIZE_T,LPTHREAD_START_ROUTINE,LPVOID,DWORD,LPPROC_THREAD_ATTRIBUTE_LIST,LPDWORD);
|
||||
--
|
||||
2.13.1
|
||||
1.9.1
|
||||
|
||||
|
@@ -1,8 +1,8 @@
|
||||
From 3c523f6408b12cbf2f70ae857df3a386e8b18cb4 Mon Sep 17 00:00:00 2001
|
||||
From 05b8bc95cff5742cf02b67afa3d6fc875d26e041 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Michael=20M=C3=BCller?= <michael@fds-team.de>
|
||||
Date: Sun, 6 Aug 2017 03:15:34 +0200
|
||||
Subject: programs/runas: Basic implementation for starting processes with a
|
||||
different trustlevel.
|
||||
Subject: [PATCH] programs/runas: Basic implementation for starting processes
|
||||
with a different trustlevel.
|
||||
|
||||
---
|
||||
configure.ac | 1 +
|
||||
@@ -17,20 +17,20 @@ Subject: programs/runas: Basic implementation for starting processes with a
|
||||
create mode 100644 programs/runas/runas.rc
|
||||
|
||||
diff --git a/configure.ac b/configure.ac
|
||||
index edc100f4637..b9c648bce43 100644
|
||||
index cfc2080..5c97c1c 100644
|
||||
--- a/configure.ac
|
||||
+++ b/configure.ac
|
||||
@@ -3861,6 +3861,7 @@ WINE_CONFIG_TEST(programs/regedit/tests)
|
||||
WINE_CONFIG_PROGRAM(regsvcs,,[install])
|
||||
WINE_CONFIG_PROGRAM(regsvr32,,[clean,install,installbin,manpage])
|
||||
WINE_CONFIG_PROGRAM(rpcss,,[clean,install])
|
||||
+WINE_CONFIG_PROGRAM(runas,,[install])
|
||||
WINE_CONFIG_PROGRAM(rundll.exe16,enable_win16,[install])
|
||||
WINE_CONFIG_PROGRAM(rundll32,,[install])
|
||||
WINE_CONFIG_PROGRAM(sc,,[install])
|
||||
@@ -3847,6 +3847,7 @@ WINE_CONFIG_MAKEFILE(programs/regedit/tests)
|
||||
WINE_CONFIG_MAKEFILE(programs/regsvcs)
|
||||
WINE_CONFIG_MAKEFILE(programs/regsvr32)
|
||||
WINE_CONFIG_MAKEFILE(programs/rpcss)
|
||||
+WINE_CONFIG_MAKEFILE(programs/runas)
|
||||
WINE_CONFIG_MAKEFILE(programs/rundll.exe16,enable_win16)
|
||||
WINE_CONFIG_MAKEFILE(programs/rundll32)
|
||||
WINE_CONFIG_MAKEFILE(programs/sc)
|
||||
diff --git a/programs/runas/Makefile.in b/programs/runas/Makefile.in
|
||||
new file mode 100644
|
||||
index 00000000000..be9434b214a
|
||||
index 0000000..be9434b
|
||||
--- /dev/null
|
||||
+++ b/programs/runas/Makefile.in
|
||||
@@ -0,0 +1,8 @@
|
||||
@@ -44,7 +44,7 @@ index 00000000000..be9434b214a
|
||||
+RC_SRCS = runas.rc
|
||||
diff --git a/programs/runas/runas.c b/programs/runas/runas.c
|
||||
new file mode 100644
|
||||
index 00000000000..cfd1c73ac56
|
||||
index 0000000..cfd1c73
|
||||
--- /dev/null
|
||||
+++ b/programs/runas/runas.c
|
||||
@@ -0,0 +1,214 @@
|
||||
@@ -264,7 +264,7 @@ index 00000000000..cfd1c73ac56
|
||||
+}
|
||||
diff --git a/programs/runas/runas.h b/programs/runas/runas.h
|
||||
new file mode 100644
|
||||
index 00000000000..40599a3b33b
|
||||
index 0000000..40599a3
|
||||
--- /dev/null
|
||||
+++ b/programs/runas/runas.h
|
||||
@@ -0,0 +1,26 @@
|
||||
@@ -296,7 +296,7 @@ index 00000000000..40599a3b33b
|
||||
+#define STRING_START_ERROR 104
|
||||
diff --git a/programs/runas/runas.rc b/programs/runas/runas.rc
|
||||
new file mode 100644
|
||||
index 00000000000..f9297a44794
|
||||
index 0000000..f9297a4
|
||||
--- /dev/null
|
||||
+++ b/programs/runas/runas.rc
|
||||
@@ -0,0 +1,39 @@
|
||||
@@ -340,5 +340,5 @@ index 00000000000..f9297a44794
|
||||
+ %2!u!: %3\n"
|
||||
+}
|
||||
--
|
||||
2.13.1
|
||||
1.9.1
|
||||
|
||||
|
@@ -1,12 +1,7 @@
|
||||
Fixes: [40613] Basic implementation for token integrity levels and UAC handling
|
||||
Fixes: [39262] Run explorer.exe as unevaluated process
|
||||
Depends: advapi32-CreateRestrictedToken
|
||||
Depends: advapi32-GetExplicitEntriesFromAclW
|
||||
Depends: kernel32-COMSPEC
|
||||
Depends: kernel32-UmsStubs
|
||||
Depends: ntdll-APC_Start_Process
|
||||
Depends: ntdll-TokenLogonSid
|
||||
Depends: ntdll-RunlevelInformationInActivationContext
|
||||
Depends: server-CreateProcess_ACLs
|
||||
Depends: server-Misc_ACL
|
||||
Depends: Staging
|
||||
|
@@ -1,65 +0,0 @@
|
||||
From 634abe5fdb4fcd20f1675324f0adbe9d302c1d56 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Michael=20M=C3=BCller?= <michael@fds-team.de>
|
||||
Date: Fri, 15 Jan 2016 13:01:15 +0100
|
||||
Subject: kernelbase: Add dll and add stub for QuirkIsEnabled.
|
||||
|
||||
---
|
||||
.../api-ms-win-core-quirks-l1-1-0.spec | 2 +-
|
||||
dlls/kernelbase/kernelbase.spec | 2 +-
|
||||
dlls/kernelbase/main.c | 10 ++++++++++
|
||||
3 files changed, 12 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/dlls/api-ms-win-core-quirks-l1-1-0/api-ms-win-core-quirks-l1-1-0.spec b/dlls/api-ms-win-core-quirks-l1-1-0/api-ms-win-core-quirks-l1-1-0.spec
|
||||
index e8f77c73f36..1485512d0ef 100644
|
||||
--- a/dlls/api-ms-win-core-quirks-l1-1-0/api-ms-win-core-quirks-l1-1-0.spec
|
||||
+++ b/dlls/api-ms-win-core-quirks-l1-1-0/api-ms-win-core-quirks-l1-1-0.spec
|
||||
@@ -1,6 +1,6 @@
|
||||
@ stub QuirkGetData
|
||||
@ stub QuirkGetData2
|
||||
-@ stub QuirkIsEnabled
|
||||
+@ stdcall QuirkIsEnabled(ptr) kernelbase.QuirkIsEnabled
|
||||
@ stub QuirkIsEnabled2
|
||||
@ stdcall QuirkIsEnabled3(ptr ptr) kernelbase.QuirkIsEnabled3
|
||||
@ stub QuirkIsEnabledForPackage
|
||||
diff --git a/dlls/kernelbase/kernelbase.spec b/dlls/kernelbase/kernelbase.spec
|
||||
index 75916a4851c..2f04a0a46f9 100644
|
||||
--- a/dlls/kernelbase/kernelbase.spec
|
||||
+++ b/dlls/kernelbase/kernelbase.spec
|
||||
@@ -1223,7 +1223,7 @@
|
||||
@ stdcall QueueUserWorkItem(ptr ptr long) kernel32.QueueUserWorkItem
|
||||
# @ stub QuirkGetData
|
||||
# @ stub QuirkGetData2
|
||||
-# @ stub QuirkIsEnabled
|
||||
+@ stdcall QuirkIsEnabled(ptr)
|
||||
# @ stub QuirkIsEnabled2
|
||||
@ stdcall QuirkIsEnabled3(ptr ptr)
|
||||
# @ stub QuirkIsEnabledForPackage
|
||||
diff --git a/dlls/kernelbase/main.c b/dlls/kernelbase/main.c
|
||||
index ff1b2f67623..f4d7cde8b7d 100644
|
||||
--- a/dlls/kernelbase/main.c
|
||||
+++ b/dlls/kernelbase/main.c
|
||||
@@ -1,4 +1,5 @@
|
||||
/*
|
||||
+ * Copyright (c) 2016 Michael MĂĽller
|
||||
* Copyright 2017 Andrey Gusev
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
@@ -49,6 +50,15 @@ LONG WINAPI AppPolicyGetThreadInitializationType(HANDLE token, AppPolicyThreadIn
|
||||
return ERROR_SUCCESS;
|
||||
}
|
||||
|
||||
+/***********************************************************************
|
||||
+ * QuirkIsEnabled (KERNELBASE.@)
|
||||
+ */
|
||||
+BOOL WINAPI QuirkIsEnabled(void *arg)
|
||||
+{
|
||||
+ FIXME("(%p): stub\n", arg);
|
||||
+ return FALSE;
|
||||
+}
|
||||
+
|
||||
/***********************************************************************
|
||||
* QuirkIsEnabled3 (KERNELBASE.@)
|
||||
*/
|
||||
--
|
||||
2.14.1
|
||||
|
@@ -1,7 +1,7 @@
|
||||
From e20e1494010e20efd0325efe9c535651d4750dfe Mon Sep 17 00:00:00 2001
|
||||
From 19683a27eaaed9c23635e9b5fa768a6c120a2ace Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Michael=20M=C3=BCller?= <michael@fds-team.de>
|
||||
Date: Sun, 17 Jan 2016 01:11:46 +0100
|
||||
Subject: iertutil: Add dll and add stub for ordinal 811.
|
||||
Subject: [PATCH] iertutil: Add dll and add stub for ordinal 811.
|
||||
|
||||
---
|
||||
configure.ac | 1 +
|
||||
@@ -14,20 +14,20 @@ Subject: iertutil: Add dll and add stub for ordinal 811.
|
||||
create mode 100644 dlls/iertutil/main.c
|
||||
|
||||
diff --git a/configure.ac b/configure.ac
|
||||
index 5ea7db07294..13fe97eed7a 100644
|
||||
index 5c97c1c..d70dcea 100644
|
||||
--- a/configure.ac
|
||||
+++ b/configure.ac
|
||||
@@ -3172,6 +3172,7 @@ WINE_CONFIG_DLL(icmp)
|
||||
WINE_CONFIG_DLL(ieframe,,[clean,implib])
|
||||
WINE_CONFIG_TEST(dlls/ieframe/tests)
|
||||
WINE_CONFIG_DLL(ieproxy,,[clean])
|
||||
+WINE_CONFIG_DLL(iertutil)
|
||||
WINE_CONFIG_DLL(ifsmgr.vxd,enable_win16)
|
||||
WINE_CONFIG_DLL(imaadp32.acm)
|
||||
WINE_CONFIG_DLL(imagehlp,,[implib])
|
||||
@@ -3286,6 +3286,7 @@ WINE_CONFIG_MAKEFILE(dlls/icmp)
|
||||
WINE_CONFIG_MAKEFILE(dlls/ieframe)
|
||||
WINE_CONFIG_MAKEFILE(dlls/ieframe/tests)
|
||||
WINE_CONFIG_MAKEFILE(dlls/ieproxy)
|
||||
+WINE_CONFIG_MAKEFILE(dlls/iertutil)
|
||||
WINE_CONFIG_MAKEFILE(dlls/ifsmgr.vxd,enable_win16)
|
||||
WINE_CONFIG_MAKEFILE(dlls/imaadp32.acm)
|
||||
WINE_CONFIG_MAKEFILE(dlls/imagehlp)
|
||||
diff --git a/dlls/iertutil/Makefile.in b/dlls/iertutil/Makefile.in
|
||||
new file mode 100644
|
||||
index 00000000000..268026e7031
|
||||
index 0000000..268026e
|
||||
--- /dev/null
|
||||
+++ b/dlls/iertutil/Makefile.in
|
||||
@@ -0,0 +1,4 @@
|
||||
@@ -37,7 +37,7 @@ index 00000000000..268026e7031
|
||||
+ main.c
|
||||
diff --git a/dlls/iertutil/iertutil.spec b/dlls/iertutil/iertutil.spec
|
||||
new file mode 100644
|
||||
index 00000000000..a13779bebbd
|
||||
index 0000000..a13779b
|
||||
--- /dev/null
|
||||
+++ b/dlls/iertutil/iertutil.spec
|
||||
@@ -0,0 +1,521 @@
|
||||
@@ -564,7 +564,7 @@ index 00000000000..a13779bebbd
|
||||
+@ stub UriFromHostAndScheme
|
||||
diff --git a/dlls/iertutil/main.c b/dlls/iertutil/main.c
|
||||
new file mode 100644
|
||||
index 00000000000..2b993a44ca4
|
||||
index 0000000..2b993a4
|
||||
--- /dev/null
|
||||
+++ b/dlls/iertutil/main.c
|
||||
@@ -0,0 +1,48 @@
|
||||
@@ -617,5 +617,5 @@ index 00000000000..2b993a44ca4
|
||||
+ return FALSE;
|
||||
+}
|
||||
--
|
||||
2.13.1
|
||||
1.9.1
|
||||
|
||||
|
@@ -1,141 +0,0 @@
|
||||
From 8f6353a291eaa4d1b61d2063c93a294b7deef7a7 Mon Sep 17 00:00:00 2001
|
||||
From: Sebastian Lackner <sebastian@fds-team.de>
|
||||
Date: Sun, 17 Jan 2016 20:17:46 +0100
|
||||
Subject: shcore: Add dll.
|
||||
|
||||
---
|
||||
configure.ac | 1 +
|
||||
dlls/shcore/Makefile.in | 1 +
|
||||
dlls/shcore/shcore.spec | 83 +++++++++++++++++++++++++++++++++++++++++++++++++
|
||||
tools/make_specfiles | 5 +++
|
||||
4 files changed, 90 insertions(+)
|
||||
create mode 100644 dlls/shcore/Makefile.in
|
||||
create mode 100644 dlls/shcore/shcore.spec
|
||||
|
||||
diff --git a/configure.ac b/configure.ac
|
||||
index 04015a1..557f26b 100644
|
||||
--- a/configure.ac
|
||||
+++ b/configure.ac
|
||||
@@ -3289,6 +3289,7 @@ WINE_CONFIG_TEST(dlls/setupapi/tests)
|
||||
WINE_CONFIG_DLL(setupx.dll16,enable_win16)
|
||||
WINE_CONFIG_DLL(sfc,,[implib])
|
||||
WINE_CONFIG_DLL(sfc_os,,[implib])
|
||||
+WINE_CONFIG_DLL(shcore)
|
||||
WINE_CONFIG_DLL(shdoclc,,[clean])
|
||||
WINE_CONFIG_DLL(shdocvw,,[clean,implib])
|
||||
WINE_CONFIG_TEST(dlls/shdocvw/tests)
|
||||
diff --git a/dlls/shcore/Makefile.in b/dlls/shcore/Makefile.in
|
||||
new file mode 100644
|
||||
index 0000000..dd5f08f
|
||||
--- /dev/null
|
||||
+++ b/dlls/shcore/Makefile.in
|
||||
@@ -0,0 +1 @@
|
||||
+MODULE = shcore.dll
|
||||
diff --git a/dlls/shcore/shcore.spec b/dlls/shcore/shcore.spec
|
||||
new file mode 100644
|
||||
index 0000000..12a4ef3
|
||||
--- /dev/null
|
||||
+++ b/dlls/shcore/shcore.spec
|
||||
@@ -0,0 +1,83 @@
|
||||
+@ stdcall CommandLineToArgvW(wstr ptr) shell32.CommandLineToArgvW
|
||||
+@ stub CreateRandomAccessStreamOnFile
|
||||
+@ stub CreateRandomAccessStreamOverStream
|
||||
+@ stub CreateStreamOverRandomAccessStream
|
||||
+@ stdcall -private DllCanUnloadNow() shell32.DllCanUnloadNow
|
||||
+@ stub DllGetActivationFactory
|
||||
+@ stdcall -private DllGetClassObject(ptr ptr ptr) shell32.DllGetClassObject
|
||||
+@ stdcall GetCurrentProcessExplicitAppUserModelID(ptr) shell32.GetCurrentProcessExplicitAppUserModelID
|
||||
+@ stub GetDpiForMonitor
|
||||
+@ stub GetDpiForShellUIComponent
|
||||
+@ stub GetProcessDpiAwareness
|
||||
+@ stub GetProcessReference
|
||||
+@ stub GetScaleFactorForDevice
|
||||
+@ stub GetScaleFactorForMonitor
|
||||
+@ stub IStream_Copy
|
||||
+@ stdcall IStream_Read(ptr ptr long) shlwapi.IStream_Read
|
||||
+@ stub IStream_ReadStr
|
||||
+@ stdcall IStream_Reset(ptr) shlwapi.IStream_Reset
|
||||
+@ stdcall IStream_Size(ptr ptr) shlwapi.IStream_Size
|
||||
+@ stdcall IStream_Write(ptr ptr long) shlwapi.IStream_Write
|
||||
+@ stub IStream_WriteStr
|
||||
+@ stdcall IUnknown_AtomicRelease(long) shlwapi.IUnknown_AtomicRelease
|
||||
+@ stdcall IUnknown_GetSite(ptr ptr ptr) shlwapi.IUnknown_GetSite
|
||||
+@ stdcall IUnknown_QueryService(ptr ptr ptr ptr) shlwapi.IUnknown_QueryService
|
||||
+@ stdcall IUnknown_Set(ptr ptr) shlwapi.IUnknown_Set
|
||||
+@ stdcall IUnknown_SetSite(ptr ptr) shlwapi.IUnknown_SetSite
|
||||
+@ stdcall IsOS(long) shlwapi.IsOS
|
||||
+@ stub RegisterScaleChangeEvent
|
||||
+@ stub RegisterScaleChangeNotifications
|
||||
+@ stub RevokeScaleChangeNotifications
|
||||
+@ stdcall SHAnsiToAnsi(str ptr long) shlwapi.SHAnsiToAnsi
|
||||
+@ stdcall SHAnsiToUnicode(str ptr long) shlwapi.SHAnsiToUnicode
|
||||
+@ stdcall SHCopyKeyA(long str long long) shlwapi.SHCopyKeyA
|
||||
+@ stdcall SHCopyKeyW(long wstr long long) shlwapi.SHCopyKeyW
|
||||
+@ stdcall SHCreateMemStream(ptr long) shlwapi.SHCreateMemStream
|
||||
+@ stdcall SHCreateStreamOnFileA(str long ptr) shlwapi.SHCreateStreamOnFileA
|
||||
+@ stdcall SHCreateStreamOnFileEx(wstr long long long ptr ptr) shlwapi.SHCreateStreamOnFileEx
|
||||
+@ stdcall SHCreateStreamOnFileW(wstr long ptr) shlwapi.SHCreateStreamOnFileW
|
||||
+@ stdcall SHCreateThread(ptr ptr long ptr) shlwapi.SHCreateThread
|
||||
+@ stdcall SHCreateThreadRef(ptr ptr) shlwapi.SHCreateThreadRef
|
||||
+@ stub SHCreateThreadWithHandle
|
||||
+@ stdcall SHDeleteEmptyKeyA(long ptr) shlwapi.SHDeleteEmptyKeyA
|
||||
+@ stdcall SHDeleteEmptyKeyW(long ptr) shlwapi.SHDeleteEmptyKeyW
|
||||
+@ stdcall SHDeleteKeyA(long str) shlwapi.SHDeleteKeyA
|
||||
+@ stdcall SHDeleteKeyW(long wstr) shlwapi.SHDeleteKeyW
|
||||
+@ stdcall SHDeleteValueA(long str str) shlwapi.SHDeleteValueA
|
||||
+@ stdcall SHDeleteValueW(long wstr wstr) shlwapi.SHDeleteValueW
|
||||
+@ stdcall SHEnumKeyExA(long long str ptr) shlwapi.SHEnumKeyExA
|
||||
+@ stdcall SHEnumKeyExW(long long wstr ptr) shlwapi.SHEnumKeyExW
|
||||
+@ stdcall SHEnumValueA(long long str ptr ptr ptr ptr) shlwapi.SHEnumValueA
|
||||
+@ stdcall SHEnumValueW(long long wstr ptr ptr ptr ptr) shlwapi.SHEnumValueW
|
||||
+@ stdcall SHGetThreadRef(ptr) shlwapi.SHGetThreadRef
|
||||
+@ stdcall SHGetValueA( long str str ptr ptr ptr ) shlwapi.SHGetValueA
|
||||
+@ stdcall SHGetValueW( long wstr wstr ptr ptr ptr ) shlwapi.SHGetValueW
|
||||
+@ stdcall SHOpenRegStream2A(long str str long) shlwapi.SHOpenRegStream2A
|
||||
+@ stdcall SHOpenRegStream2W(long wstr wstr long) shlwapi.SHOpenRegStream2W
|
||||
+@ stdcall SHOpenRegStreamA(long str str long) shlwapi.SHOpenRegStreamA
|
||||
+@ stdcall SHOpenRegStreamW(long wstr wstr long) shlwapi.SHOpenRegStreamW
|
||||
+@ stdcall SHQueryInfoKeyA(long ptr ptr ptr ptr) shlwapi.SHQueryInfoKeyA
|
||||
+@ stdcall SHQueryInfoKeyW(long ptr ptr ptr ptr) shlwapi.SHQueryInfoKeyW
|
||||
+@ stdcall SHQueryValueExA(long str ptr ptr ptr ptr) shlwapi.SHQueryValueExA
|
||||
+@ stdcall SHQueryValueExW(long wstr ptr ptr ptr ptr) shlwapi.SHQueryValueExW
|
||||
+@ stdcall SHRegDuplicateHKey(long) shlwapi.SHRegDuplicateHKey
|
||||
+@ stdcall SHRegGetIntW(ptr wstr long) shlwapi.SHRegGetIntW
|
||||
+@ stdcall SHRegGetPathA(long str str ptr long) shlwapi.SHRegGetPathA
|
||||
+@ stdcall SHRegGetPathW(long wstr wstr ptr long) shlwapi.SHRegGetPathW
|
||||
+@ stdcall SHRegGetValueA( long str str long ptr ptr ptr ) shlwapi.SHRegGetValueA
|
||||
+@ stub SHRegGetValueFromHKCUHKLM
|
||||
+@ stdcall SHRegGetValueW( long wstr wstr long ptr ptr ptr ) shlwapi.SHRegGetValueW
|
||||
+@ stdcall SHRegSetPathA(long str str str long) shlwapi.SHRegSetPathA
|
||||
+@ stdcall SHRegSetPathW(long wstr wstr wstr long) shlwapi.SHRegSetPathW
|
||||
+@ stdcall SHReleaseThreadRef() shlwapi.SHReleaseThreadRef
|
||||
+@ stdcall SHSetThreadRef(ptr) shlwapi.SHSetThreadRef
|
||||
+@ stdcall SHSetValueA(long str str long ptr long) shlwapi.SHSetValueA
|
||||
+@ stdcall SHSetValueW(long wstr wstr long ptr long) shlwapi.SHSetValueW
|
||||
+@ stdcall SHStrDupA(str ptr) shlwapi.SHStrDupA
|
||||
+@ stdcall SHStrDupW(wstr ptr) shlwapi.SHStrDupW
|
||||
+@ stdcall SHUnicodeToAnsi(wstr ptr ptr) shlwapi.SHUnicodeToAnsi
|
||||
+@ stdcall SHUnicodeToUnicode(wstr ptr long) shlwapi.SHUnicodeToUnicode
|
||||
+@ stdcall SetCurrentProcessExplicitAppUserModelID(wstr) shell32.SetCurrentProcessExplicitAppUserModelID
|
||||
+@ stub SetProcessDpiAwareness
|
||||
+@ stub SetProcessReference
|
||||
+@ stub UnregisterScaleChangeEvent
|
||||
diff --git a/tools/make_specfiles b/tools/make_specfiles
|
||||
index 2c64243..611aaca 100755
|
||||
--- a/tools/make_specfiles
|
||||
+++ b/tools/make_specfiles
|
||||
@@ -238,6 +238,11 @@ my @dll_groups =
|
||||
"api-ms-win-core-url-l1-1-0",
|
||||
],
|
||||
[
|
||||
+ "shell32",
|
||||
+ "shlwapi",
|
||||
+ "shcore",
|
||||
+ ],
|
||||
+ [
|
||||
"user32",
|
||||
"api-ms-win-core-stringansi-l1-1-0",
|
||||
"api-ms-win-core-string-l2-1-0",
|
||||
--
|
||||
2.9.0
|
||||
|
@@ -1,60 +0,0 @@
|
||||
From 44c826229e00ebefac0bca596746c1037c5c370b Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Michael=20M=C3=BCller?= <michael@fds-team.de>
|
||||
Date: Sun, 17 Jan 2016 17:02:41 +0100
|
||||
Subject: api-ms-win-shcore-obsolete-l1-1-0: Add dll.
|
||||
|
||||
---
|
||||
configure.ac | 1 +
|
||||
dlls/api-ms-win-shcore-obsolete-l1-1-0/Makefile.in | 1 +
|
||||
.../api-ms-win-shcore-obsolete-l1-1-0.spec | 3 +++
|
||||
tools/make_specfiles | 4 ++++
|
||||
4 files changed, 9 insertions(+)
|
||||
create mode 100644 dlls/api-ms-win-shcore-obsolete-l1-1-0/Makefile.in
|
||||
create mode 100644 dlls/api-ms-win-shcore-obsolete-l1-1-0/api-ms-win-shcore-obsolete-l1-1-0.spec
|
||||
|
||||
diff --git a/configure.ac b/configure.ac
|
||||
index cc1d5ba443c..78c163e5f35 100644
|
||||
--- a/configure.ac
|
||||
+++ b/configure.ac
|
||||
@@ -2939,6 +2939,7 @@ WINE_CONFIG_DLL(api-ms-win-service-management-l2-1-0)
|
||||
WINE_CONFIG_DLL(api-ms-win-service-private-l1-1-1)
|
||||
WINE_CONFIG_DLL(api-ms-win-service-winsvc-l1-1-0)
|
||||
WINE_CONFIG_DLL(api-ms-win-service-winsvc-l1-2-0)
|
||||
+WINE_CONFIG_DLL(api-ms-win-shcore-obsolete-l1-1-0)
|
||||
WINE_CONFIG_DLL(api-ms-win-shcore-scaling-l1-1-1)
|
||||
WINE_CONFIG_DLL(api-ms-win-shell-shellcom-l1-1-0)
|
||||
WINE_CONFIG_DLL(api-ms-win-shell-shellfolders-l1-1-0)
|
||||
diff --git a/dlls/api-ms-win-shcore-obsolete-l1-1-0/Makefile.in b/dlls/api-ms-win-shcore-obsolete-l1-1-0/Makefile.in
|
||||
new file mode 100644
|
||||
index 00000000000..6588d13937e
|
||||
--- /dev/null
|
||||
+++ b/dlls/api-ms-win-shcore-obsolete-l1-1-0/Makefile.in
|
||||
@@ -0,0 +1 @@
|
||||
+MODULE = api-ms-win-shcore-obsolete-l1-1-0.dll
|
||||
diff --git a/dlls/api-ms-win-shcore-obsolete-l1-1-0/api-ms-win-shcore-obsolete-l1-1-0.spec b/dlls/api-ms-win-shcore-obsolete-l1-1-0/api-ms-win-shcore-obsolete-l1-1-0.spec
|
||||
new file mode 100644
|
||||
index 00000000000..edb8143799d
|
||||
--- /dev/null
|
||||
+++ b/dlls/api-ms-win-shcore-obsolete-l1-1-0/api-ms-win-shcore-obsolete-l1-1-0.spec
|
||||
@@ -0,0 +1,3 @@
|
||||
+@ stdcall CommandLineToArgvW(wstr ptr) shcore.CommandLineToArgvW
|
||||
+@ stdcall SHStrDupA(str ptr) shcore.SHStrDupA
|
||||
+@ stdcall SHStrDupW(wstr ptr) shcore.SHStrDupW
|
||||
diff --git a/tools/make_specfiles b/tools/make_specfiles
|
||||
index ec4b68c2cf1..00f70283d49 100755
|
||||
--- a/tools/make_specfiles
|
||||
+++ b/tools/make_specfiles
|
||||
@@ -330,6 +330,10 @@ my @dll_groups =
|
||||
"shlwapi",
|
||||
"shcore",
|
||||
],
|
||||
+ [
|
||||
+ "shcore",
|
||||
+ "api-ms-win-shcore-obsolete-l1-1-0",
|
||||
+ ],
|
||||
[
|
||||
"user32",
|
||||
"api-ms-win-core-stringansi-l1-1-0",
|
||||
--
|
||||
2.14.2
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user