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
295 Commits
Author | SHA1 | Date | |
---|---|---|---|
|
676dd02663 | ||
|
648db00708 | ||
|
6bfaa3b0a5 | ||
|
cbf7f73313 | ||
|
c896e5cb69 | ||
|
4d65ec9456 | ||
|
d14250ab03 | ||
|
789f5c7c64 | ||
|
69cb47fd36 | ||
|
8450903b5c | ||
|
ffe93505d2 | ||
|
5213d551f8 | ||
|
e61a75f75f | ||
|
7428dd8656 | ||
|
40e84b052b | ||
|
92b2688a74 | ||
|
f7eec766a5 | ||
|
b4e0277488 | ||
|
f54b943bca | ||
|
6138369b4f | ||
|
59fe96c14c | ||
|
afdf5020ff | ||
|
2fc5c88068 | ||
|
ad3de029e7 | ||
|
4ff3984c49 | ||
|
deeaa04aa4 | ||
|
592b853fe4 | ||
|
26f14c2ddd | ||
|
57204d77d9 | ||
|
37e000145f | ||
|
d68ab574f5 | ||
|
469cbe7ed8 | ||
|
1fe141dd3e | ||
|
a3b99d730d | ||
|
de7c2faf80 | ||
|
8b2fd051c9 | ||
|
ede44e4e8f | ||
|
aca614eb8b | ||
|
49d52336e1 | ||
|
17fdb93f55 | ||
|
3f43238b01 | ||
|
59d19c8963 | ||
|
d3ad4e1115 | ||
|
b3f1e5566f | ||
|
c26be86c42 | ||
|
14a3242b92 | ||
|
991bebfee7 | ||
|
0d7a4f0c73 | ||
|
30c1e2757a | ||
|
e55a3a3f43 | ||
|
ca1047528f | ||
|
d53a1b4a17 | ||
|
47facf2571 | ||
|
b7c9feb3c1 | ||
|
c263c4f896 | ||
|
fa188fd6b0 | ||
|
6e474e34fb | ||
|
f917b2fc24 | ||
|
44115dbd63 | ||
|
59f43478d6 | ||
|
d83b9f53fb | ||
|
f57d1b8d02 | ||
|
f397af1c7f | ||
|
44fb25d66d | ||
|
4ad9169f53 | ||
|
bbc86a61db | ||
|
537b6dd5e3 | ||
|
8b862038c5 | ||
|
3b2fb113fa | ||
|
964b6c1ab5 | ||
|
fc87fb74db | ||
|
8bbe365bfc | ||
|
07ef9c93b8 | ||
|
050435f28e | ||
|
00f288b12e | ||
|
b1e9ef0294 | ||
|
3ac1519f34 | ||
|
9a2a33ee2b | ||
|
9c3a91903e | ||
|
dd581d0b2f | ||
|
506efa392c | ||
|
a45597f811 | ||
|
7073073fcc | ||
|
9dc9c57bbf | ||
|
915ed2cec1 | ||
|
329005baaf | ||
|
d8496cacd1 | ||
|
695a835b0a | ||
|
68bfc31be4 | ||
|
23960d9862 | ||
|
bca3c546d2 | ||
|
1e3eb08c69 | ||
|
bd8f35fad1 | ||
|
ccd0bc4ccd | ||
|
89af635b94 | ||
|
f05f084d9a | ||
|
93a708bf2b | ||
|
b9f34bbbc3 | ||
|
8be2c25e19 | ||
|
7059b2e1ec | ||
|
7044b0dc98 | ||
|
a1bf11e38a | ||
|
703c84ce70 | ||
|
b79e576574 | ||
|
db1f94bae4 | ||
|
0f52b315d6 | ||
|
ce3fc5723d | ||
|
595f2f9860 | ||
|
c01051f313 | ||
|
d163510e1e | ||
|
c675804204 | ||
|
d729a7b132 | ||
|
2782e6db1e | ||
|
a08376bca0 | ||
|
3371e62824 | ||
|
8218a78955 | ||
|
a8cb853708 | ||
|
6cbb6dc117 | ||
|
34302e77dd | ||
|
ae0343f628 | ||
|
5905340060 | ||
|
c8e3795e69 | ||
|
108662b1cc | ||
|
088d7f9ddf | ||
|
b788fe9549 | ||
|
b8b836e43d | ||
|
d44f4885f2 | ||
|
73caf7ace2 | ||
|
d36d63ac84 | ||
|
8e8259db69 | ||
|
e6aac5d240 | ||
|
40d020d66e | ||
|
0db8c6ad3c | ||
|
45d69ec48b | ||
|
2326756550 | ||
|
4522654f1c | ||
|
dc9fa12a14 | ||
|
b011002d55 | ||
|
3e6d6e3909 | ||
|
62c069eb9f | ||
|
cb9aa710d5 | ||
|
3a14d63abf | ||
|
af616c5fc3 | ||
|
7167c4d6ad | ||
|
d388288e2e | ||
|
7b177b15fa | ||
|
70aaee4bf8 | ||
|
f23d30bc06 | ||
|
2f95fb4782 | ||
|
9be789b289 | ||
|
0da25307db | ||
|
9f10bba729 | ||
|
14a1f8bd0c | ||
|
3ba119e67c | ||
|
f4987b47e3 | ||
|
ced0f96514 | ||
|
f62913bfc3 | ||
|
3fe9b83fa4 | ||
|
194199011a | ||
|
7e4e808869 | ||
|
38efd9d1bc | ||
|
29cc042257 | ||
|
1f5394ae51 | ||
|
a9639c412f | ||
|
d391086546 | ||
|
41ebbee85d | ||
|
69cf026375 | ||
|
356f228262 | ||
|
f94a274729 | ||
|
cec9c7c73e | ||
|
411f2a9702 | ||
|
ef0e88407e | ||
|
8148194353 | ||
|
ca018c8079 | ||
|
7a3f594df2 | ||
|
01a3c15320 | ||
|
fb40c21c72 | ||
|
0a469905c2 | ||
|
e1ac8f20fe | ||
|
471dc198a8 | ||
|
6c44e84e74 | ||
|
0c89d96edc | ||
|
5fbf201ea8 | ||
|
8c5d374d5a | ||
|
ded2e22686 | ||
|
1f77584097 | ||
|
6e793996ba | ||
|
6f1ebb84a2 | ||
|
d26687d90a | ||
|
067a975495 | ||
|
bc4e00ae02 | ||
|
086d99f83e | ||
|
bc7627cdf1 | ||
|
e380c1e9a7 | ||
|
a568bd3e79 | ||
|
9807a02bb3 | ||
|
eab8fd69f7 | ||
|
b95882c061 | ||
|
49b240d88c | ||
|
c96aa29030 | ||
|
d432608737 | ||
|
db09443c86 | ||
|
da73254259 | ||
|
a246130f81 | ||
|
042a633c8a | ||
|
cf04b8d6ac | ||
|
6be963ebfd | ||
|
5b066d6aed | ||
|
c24cb89257 | ||
|
3d5bb83e05 | ||
|
0c7512f5f5 | ||
|
9fe5cabf21 | ||
|
99c474f018 | ||
|
c942f42ee5 | ||
|
670a9e20c0 | ||
|
0c815a486b | ||
|
cdfddb170a | ||
|
c58f817de8 | ||
|
c7d0330ce8 | ||
|
c6f7b46951 | ||
|
84a644848c | ||
|
b24b3a88cc | ||
|
ced72a6a0a | ||
|
e09468ec17 | ||
|
81ac4ea01a | ||
|
053de1b617 | ||
|
47891c1826 | ||
|
dd7f7cc1ba | ||
|
649c35ff92 | ||
|
7c57b6eba4 | ||
|
c0389b0479 | ||
|
fd3b1a04e7 | ||
|
fab929969c | ||
|
ccdf3d98ff | ||
|
1e58aad446 | ||
|
8dc124ce70 | ||
|
b6054fa105 | ||
|
fe6b2652ef | ||
|
692d7d43e0 | ||
|
6bee4b6e76 | ||
|
c323ef47c7 | ||
|
9e6693ed13 | ||
|
29bdd4cd85 | ||
|
39d7dcb2c6 | ||
|
2e4d0f4727 | ||
|
fd818b1914 | ||
|
26e542b4e5 | ||
|
6ef7be2566 | ||
|
5b012f08d5 | ||
|
8390ba0d95 | ||
|
fb18deb95f | ||
|
27b33a4be9 | ||
|
a15bdaa0ba | ||
|
734918298c | ||
|
bc1aa54891 | ||
|
2da0d341f6 | ||
|
155cb0b051 | ||
|
498c9eae60 | ||
|
a46b9ff3dc | ||
|
6589142220 | ||
|
fd3bb06a4c | ||
|
49aafeb17b | ||
|
841e2a8cda | ||
|
4aa460b8cd | ||
|
512d0b1d30 | ||
|
ff10ae6e74 | ||
|
fcfeaf092c | ||
|
2da5f18812 | ||
|
004a5a5717 | ||
|
7447216104 | ||
|
938dddf7df | ||
|
618e349c72 | ||
|
2007f010ac | ||
|
fb4fcb4da6 | ||
|
74068f2cab | ||
|
31157f5ed4 | ||
|
3813f414ed | ||
|
c6f239ef2e | ||
|
3b3cb09acc | ||
|
5734c2c2df | ||
|
8ceae1a2a3 | ||
|
31c73c6b53 | ||
|
c205df71c7 | ||
|
010c308abd | ||
|
924665da6f | ||
|
523d4ac996 | ||
|
67035d62f7 | ||
|
35a5f7db93 | ||
|
ca09e8918c | ||
|
49b441e0df | ||
|
f901156486 | ||
|
c7780d90cb | ||
|
73f58bac41 | ||
|
ad822b6405 | ||
|
9917fb4559 |
@@ -1,30 +0,0 @@
|
||||
Contributing to Wine Staging
|
||||
----------------------------
|
||||
|
||||
First of all, thank you for taking the time to contribute to this project.
|
||||
|
||||
### Reporting bugs
|
||||
|
||||
Since WineConf 2015 Wine Staging is an official part of WineHQ, which means you
|
||||
can report problems directly at [bugs.winehq.org](https://bugs.winehq.org/).
|
||||
Most of the time bugs found in Wine Staging also turn out to be present in the
|
||||
development branch, so its recommended to open your bug in the "Wine" product,
|
||||
unless you are sure its really "Wine Staging" specific. For bugs related to our
|
||||
binary packages, please open a bug report in the "Packaging" product.
|
||||
|
||||
### Submitting patches
|
||||
|
||||
**IMPORTANT:** Please use [dev.wine-staging.com](https://dev.wine-staging.com/patches)
|
||||
for patch submissions, we currently do not accept Pull requests on GitHub.
|
||||
|
||||
Wine Staging mainly concentrates on experimental features and patches which are
|
||||
difficult to get into the development branch. If you have a very simple bug fix
|
||||
including tests, there is usually no need to send it to Wine Staging. You can
|
||||
directly contribute it to the
|
||||
[development branch](http://wiki.winehq.org/SubmittingPatches). However, if you
|
||||
already tried that without success, or are working on such a complex area that
|
||||
you do not really think its ready for inclusion, you might want to submit it to
|
||||
our Staging tree. Please open a patch submission request on
|
||||
[dev.wine-staging.com](https://dev.wine-staging.com/patches) including the patch.
|
||||
More information is also available in our
|
||||
[Wiki](https://wiki.winehq.org/Wine-Staging_Patches).
|
@@ -8,7 +8,8 @@ are part of **Wine Staging** and are licensed under the terms of the
|
||||
|
||||
```
|
||||
Copyright (C) 2014-2017 the Wine Staging project authors.
|
||||
Copyright (C) 2018 Alistair Leslie-Hughes
|
||||
Copyright (C) 2018 Alistair Leslie-Hughes, Zebediah Figura
|
||||
Copyright (C) 2019-2020 Alistair Leslie-Hughes, Zebediah Figura, Paul Gofman
|
||||
|
||||
Wine Staging is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Lesser General Public
|
||||
|
12
README.md
12
README.md
@@ -6,15 +6,14 @@ features, which have not been integrated into the development branch yet. The
|
||||
idea of Wine Staging is to provide experimental features faster to end users and
|
||||
to give developers the possibility to discuss and improve their patches before
|
||||
they are integrated into the main branch. More information about Wine Staging
|
||||
can also be found on our website [wine-staging.com](http://wine-staging.com).
|
||||
can also be found [on the WineHQ wiki](https://wiki.winehq.org/Wine-Staging).
|
||||
|
||||
Installation
|
||||
------------
|
||||
|
||||
Ready-to-use packages for Wine Staging are available for a variety of Linux
|
||||
distributions and for Mac OS X. Just follow the
|
||||
[installation instructions](https://wine-staging.com/installation.html)
|
||||
for your operating system.
|
||||
distributions and for Mac OS X. Just follow the [installation
|
||||
instructions](https://wiki.winehq.org/Download) for your operating system.
|
||||
|
||||
On most distributions the `wine-staging` package is installed to
|
||||
`/opt/wine-staging`, such that multiple Wine versions can be installed in
|
||||
@@ -78,5 +77,6 @@ in our [Wiki](https://wiki.winehq.org/Wine-Staging).
|
||||
Contributing
|
||||
------------
|
||||
|
||||
Please see CONTRIBUTING.md for more information about contributing to Wine
|
||||
Staging.
|
||||
For information on contributing to Wine-Staging, please see
|
||||
<https://wiki.winehq.org/Wine-Staging_Contributing>. Note that GitHub pull
|
||||
requests are strongly dispreferred, especially for patches.
|
@@ -1,4 +1,4 @@
|
||||
From c8f9b712a946fac79af1290d14c1d31d0a8f0c10 Mon Sep 17 00:00:00 2001
|
||||
From a0211ba2069af11a64588a49222dcdcce1d805be Mon Sep 17 00:00:00 2001
|
||||
From: Sebastian Lackner <sebastian@fds-team.de>
|
||||
Date: Tue, 22 Mar 2016 21:54:26 +0100
|
||||
Subject: [PATCH] d2d1: Avoid implicit cast of interface pointer.
|
||||
@@ -7,16 +7,16 @@ Subject: [PATCH] d2d1: Avoid implicit cast of interface pointer.
|
||||
dlls/d2d1/bitmap.c | 2 +-
|
||||
dlls/d2d1/brush.c | 8 ++++----
|
||||
dlls/d2d1/dc_render_target.c | 2 +-
|
||||
dlls/d2d1/geometry.c | 6 +++---
|
||||
dlls/d2d1/geometry.c | 8 ++++----
|
||||
dlls/d2d1/hwnd_render_target.c | 2 +-
|
||||
dlls/d2d1/state_block.c | 2 +-
|
||||
6 files changed, 11 insertions(+), 11 deletions(-)
|
||||
6 files changed, 12 insertions(+), 12 deletions(-)
|
||||
|
||||
diff --git a/dlls/d2d1/bitmap.c b/dlls/d2d1/bitmap.c
|
||||
index 39e81192f77..52810211701 100644
|
||||
index bc958e50a1..76ecc7f02a 100644
|
||||
--- a/dlls/d2d1/bitmap.c
|
||||
+++ b/dlls/d2d1/bitmap.c
|
||||
@@ -623,5 +623,5 @@ struct d2d_bitmap *unsafe_impl_from_ID2D1Bitmap(ID2D1Bitmap *iface)
|
||||
@@ -617,5 +617,5 @@ struct d2d_bitmap *unsafe_impl_from_ID2D1Bitmap(ID2D1Bitmap *iface)
|
||||
if (!iface)
|
||||
return NULL;
|
||||
assert(iface->lpVtbl == (ID2D1BitmapVtbl *)&d2d_bitmap_vtbl);
|
||||
@@ -24,7 +24,7 @@ index 39e81192f77..52810211701 100644
|
||||
+ return CONTAINING_RECORD((ID2D1Bitmap1*)iface, struct d2d_bitmap, ID2D1Bitmap1_iface);
|
||||
}
|
||||
diff --git a/dlls/d2d1/brush.c b/dlls/d2d1/brush.c
|
||||
index 21abf1456ab..1030884c2b7 100644
|
||||
index 80fc0f5331..a612e683b6 100644
|
||||
--- a/dlls/d2d1/brush.c
|
||||
+++ b/dlls/d2d1/brush.c
|
||||
@@ -253,7 +253,7 @@ static void d2d_brush_init(struct d2d_brush *brush, ID2D1Factory *factory,
|
||||
@@ -64,7 +64,7 @@ index 21abf1456ab..1030884c2b7 100644
|
||||
|
||||
static HRESULT STDMETHODCALLTYPE d2d_bitmap_brush_QueryInterface(ID2D1BitmapBrush1 *iface,
|
||||
diff --git a/dlls/d2d1/dc_render_target.c b/dlls/d2d1/dc_render_target.c
|
||||
index 310c5412967..9d9168dc8ee 100644
|
||||
index 47aa99697d..0efa3ebeaf 100644
|
||||
--- a/dlls/d2d1/dc_render_target.c
|
||||
+++ b/dlls/d2d1/dc_render_target.c
|
||||
@@ -23,7 +23,7 @@ WINE_DEFAULT_DEBUG_CHANNEL(d2d);
|
||||
@@ -77,7 +77,7 @@ index 310c5412967..9d9168dc8ee 100644
|
||||
|
||||
static HRESULT d2d_dc_render_target_present(IUnknown *outer_unknown)
|
||||
diff --git a/dlls/d2d1/geometry.c b/dlls/d2d1/geometry.c
|
||||
index 91ce32c28e7..da4a1f2d3ee 100644
|
||||
index 79850f1c20..b9b6a32f76 100644
|
||||
--- a/dlls/d2d1/geometry.c
|
||||
+++ b/dlls/d2d1/geometry.c
|
||||
@@ -2982,7 +2982,7 @@ static const struct ID2D1GeometrySinkVtbl d2d_geometry_sink_vtbl =
|
||||
@@ -89,7 +89,7 @@ index 91ce32c28e7..da4a1f2d3ee 100644
|
||||
}
|
||||
|
||||
static HRESULT STDMETHODCALLTYPE d2d_path_geometry_QueryInterface(ID2D1PathGeometry *iface, REFIID iid, void **out)
|
||||
@@ -3498,7 +3498,7 @@ void d2d_path_geometry_init(struct d2d_geometry *geometry, ID2D1Factory *factory
|
||||
@@ -3502,7 +3502,7 @@ void d2d_path_geometry_init(struct d2d_geometry *geometry, ID2D1Factory2 *factor
|
||||
|
||||
static inline struct d2d_geometry *impl_from_ID2D1RectangleGeometry(ID2D1RectangleGeometry *iface)
|
||||
{
|
||||
@@ -98,7 +98,7 @@ index 91ce32c28e7..da4a1f2d3ee 100644
|
||||
}
|
||||
|
||||
static HRESULT STDMETHODCALLTYPE d2d_rectangle_geometry_QueryInterface(ID2D1RectangleGeometry *iface,
|
||||
@@ -3833,7 +3833,7 @@ fail:
|
||||
@@ -3841,7 +3841,7 @@ fail:
|
||||
|
||||
static inline struct d2d_geometry *impl_from_ID2D1TransformedGeometry(ID2D1TransformedGeometry *iface)
|
||||
{
|
||||
@@ -107,8 +107,17 @@ index 91ce32c28e7..da4a1f2d3ee 100644
|
||||
}
|
||||
|
||||
static HRESULT STDMETHODCALLTYPE d2d_transformed_geometry_QueryInterface(ID2D1TransformedGeometry *iface,
|
||||
@@ -4122,7 +4122,7 @@ void d2d_transformed_geometry_init(struct d2d_geometry *geometry, ID2D1Factory2
|
||||
|
||||
static inline struct d2d_geometry *impl_from_ID2D1GeometryGroup(ID2D1GeometryGroup *iface)
|
||||
{
|
||||
- return CONTAINING_RECORD(iface, struct d2d_geometry, ID2D1Geometry_iface);
|
||||
+ return CONTAINING_RECORD( (ID2D1Geometry*)iface, struct d2d_geometry, ID2D1Geometry_iface);
|
||||
}
|
||||
|
||||
static HRESULT STDMETHODCALLTYPE d2d_geometry_group_QueryInterface(ID2D1GeometryGroup *iface,
|
||||
diff --git a/dlls/d2d1/hwnd_render_target.c b/dlls/d2d1/hwnd_render_target.c
|
||||
index 625f101eaa7..f3626c42cee 100644
|
||||
index 625f101eaa..f3626c42ce 100644
|
||||
--- a/dlls/d2d1/hwnd_render_target.c
|
||||
+++ b/dlls/d2d1/hwnd_render_target.c
|
||||
@@ -23,7 +23,7 @@ WINE_DEFAULT_DEBUG_CHANNEL(d2d);
|
||||
@@ -121,7 +130,7 @@ index 625f101eaa7..f3626c42cee 100644
|
||||
|
||||
static HRESULT d2d_hwnd_render_target_present(IUnknown *outer_unknown)
|
||||
diff --git a/dlls/d2d1/state_block.c b/dlls/d2d1/state_block.c
|
||||
index e3175146a64..b66752983e6 100644
|
||||
index e3175146a6..b66752983e 100644
|
||||
--- a/dlls/d2d1/state_block.c
|
||||
+++ b/dlls/d2d1/state_block.c
|
||||
@@ -187,5 +187,5 @@ struct d2d_state_block *unsafe_impl_from_ID2D1DrawingStateBlock(ID2D1DrawingStat
|
||||
@@ -132,5 +141,5 @@ index e3175146a64..b66752983e6 100644
|
||||
+ return CONTAINING_RECORD((ID2D1DrawingStateBlock1*)iface, struct d2d_state_block, ID2D1DrawingStateBlock1_iface);
|
||||
}
|
||||
--
|
||||
2.20.1
|
||||
2.17.1
|
||||
|
||||
|
@@ -1,4 +1,4 @@
|
||||
From 5e4c31d0796f2e559889d4f84cdb571130217e7d Mon Sep 17 00:00:00 2001
|
||||
From 7529755fcc41fda650aac6b27f34438354435d34 Mon Sep 17 00:00:00 2001
|
||||
From: Sebastian Lackner <sebastian@fds-team.de>
|
||||
Date: Tue, 22 Mar 2016 21:58:40 +0100
|
||||
Subject: [PATCH] dwrite: Avoid implicit cast of interface pointer.
|
||||
@@ -9,10 +9,10 @@ Subject: [PATCH] dwrite: Avoid implicit cast of interface pointer.
|
||||
2 files changed, 3 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/dlls/dwrite/font.c b/dlls/dwrite/font.c
|
||||
index f50133d..1bc7b59 100644
|
||||
index 9280b5d32..2f0974a4c 100644
|
||||
--- a/dlls/dwrite/font.c
|
||||
+++ b/dlls/dwrite/font.c
|
||||
@@ -1815,7 +1815,7 @@ static struct dwrite_font *unsafe_impl_from_IDWriteFont(IDWriteFont *iface)
|
||||
@@ -1887,7 +1887,7 @@ static struct dwrite_font *unsafe_impl_from_IDWriteFont(IDWriteFont *iface)
|
||||
if (!iface)
|
||||
return NULL;
|
||||
assert(iface->lpVtbl == (IDWriteFontVtbl*)&dwritefontvtbl);
|
||||
@@ -21,28 +21,28 @@ index f50133d..1bc7b59 100644
|
||||
}
|
||||
|
||||
struct dwrite_fontface *unsafe_impl_from_IDWriteFontFace(IDWriteFontFace *iface)
|
||||
@@ -1823,7 +1823,7 @@ struct dwrite_fontface *unsafe_impl_from_IDWriteFontFace(IDWriteFontFace *iface)
|
||||
@@ -1895,7 +1895,7 @@ struct dwrite_fontface *unsafe_impl_from_IDWriteFontFace(IDWriteFontFace *iface)
|
||||
if (!iface)
|
||||
return NULL;
|
||||
assert(iface->lpVtbl == (IDWriteFontFaceVtbl*)&dwritefontfacevtbl);
|
||||
- return CONTAINING_RECORD(iface, struct dwrite_fontface, IDWriteFontFace4_iface);
|
||||
+ return CONTAINING_RECORD((IDWriteFontFace4 *)iface, struct dwrite_fontface, IDWriteFontFace4_iface);
|
||||
- return CONTAINING_RECORD(iface, struct dwrite_fontface, IDWriteFontFace5_iface);
|
||||
+ return CONTAINING_RECORD((IDWriteFontFace5 *)iface, struct dwrite_fontface, IDWriteFontFace5_iface);
|
||||
}
|
||||
|
||||
void get_logfont_from_font(IDWriteFont *iface, LOGFONTW *lf)
|
||||
static struct dwrite_fontfacereference *unsafe_impl_from_IDWriteFontFaceReference(IDWriteFontFaceReference *iface)
|
||||
diff --git a/dlls/dwrite/layout.c b/dlls/dwrite/layout.c
|
||||
index f27fe9f..ee1eb5a 100644
|
||||
index b9321157a..76ea23ba6 100644
|
||||
--- a/dlls/dwrite/layout.c
|
||||
+++ b/dlls/dwrite/layout.c
|
||||
@@ -5622,7 +5622,7 @@ static const IDWriteTextFormat2Vtbl dwritetextformatvtbl = {
|
||||
@@ -5895,7 +5895,7 @@ static const IDWriteTextFormat3Vtbl dwritetextformatvtbl =
|
||||
static struct dwrite_textformat *unsafe_impl_from_IDWriteTextFormat(IDWriteTextFormat *iface)
|
||||
{
|
||||
return (iface->lpVtbl == (IDWriteTextFormatVtbl*)&dwritetextformatvtbl) ?
|
||||
- CONTAINING_RECORD(iface, struct dwrite_textformat, IDWriteTextFormat2_iface) : NULL;
|
||||
+ CONTAINING_RECORD((IDWriteTextFormat2 *)iface, struct dwrite_textformat, IDWriteTextFormat2_iface) : NULL;
|
||||
- CONTAINING_RECORD(iface, struct dwrite_textformat, IDWriteTextFormat3_iface) : NULL;
|
||||
+ CONTAINING_RECORD((IDWriteTextFormat3 *)iface, struct dwrite_textformat, IDWriteTextFormat3_iface) : NULL;
|
||||
}
|
||||
|
||||
HRESULT create_textformat(const WCHAR *family_name, IDWriteFontCollection *collection, DWRITE_FONT_WEIGHT weight, DWRITE_FONT_STYLE style,
|
||||
--
|
||||
1.9.1
|
||||
2.24.0
|
||||
|
||||
|
@@ -1,2 +1 @@
|
||||
Fixes: Fixes compile warnings.
|
||||
Depends: mailing-list-patches
|
||||
|
@@ -1,7 +1,7 @@
|
||||
From 08d8e1c398ed6f3e237ad9fd3d29e10d09dcff3d Mon Sep 17 00:00:00 2001
|
||||
From 40630c14377561e90a4be405d2124338002a88f7 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Michael=20M=C3=BCller?= <michael@fds-team.de>
|
||||
Date: Fri, 2 May 2014 20:46:19 +0200
|
||||
Subject: user32: Decrease minimum SetTimer interval to 5 ms. (try 2)
|
||||
Subject: [PATCH] user32: Decrease minimum SetTimer interval to 5 ms. (try 2)
|
||||
|
||||
---
|
||||
dlls/user32/message.c | 2 +-
|
||||
@@ -9,10 +9,10 @@ Subject: user32: Decrease minimum SetTimer interval to 5 ms. (try 2)
|
||||
2 files changed, 3 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/dlls/user32/message.c b/dlls/user32/message.c
|
||||
index d122980..aec0938 100644
|
||||
index 1336865112a..cbe9920384f 100644
|
||||
--- a/dlls/user32/message.c
|
||||
+++ b/dlls/user32/message.c
|
||||
@@ -4443,7 +4443,7 @@ UINT_PTR WINAPI SetTimer( HWND hwnd, UINT_PTR id, UINT timeout, TIMERPROC proc )
|
||||
@@ -4496,7 +4496,7 @@ UINT_PTR WINAPI SetCoalescableTimer( HWND hwnd, UINT_PTR id, UINT timeout, TIMER
|
||||
|
||||
if (proc) winproc = WINPROC_AllocProc( (WNDPROC)proc, FALSE );
|
||||
|
||||
@@ -22,25 +22,25 @@ index d122980..aec0938 100644
|
||||
SERVER_START_REQ( set_win_timer )
|
||||
{
|
||||
diff --git a/dlls/user32/tests/msg.c b/dlls/user32/tests/msg.c
|
||||
index d92fbc7..dbaddb7 100644
|
||||
index c0ba5834cf9..a6bc158e8a7 100644
|
||||
--- a/dlls/user32/tests/msg.c
|
||||
+++ b/dlls/user32/tests/msg.c
|
||||
@@ -8521,6 +8521,7 @@ static void test_timers(void)
|
||||
@@ -10282,6 +10282,7 @@ static void test_timers(void)
|
||||
start = GetTickCount();
|
||||
while (GetTickCount()-start < 1001 && GetMessageA(&msg, info.hWnd, 0, 0))
|
||||
DispatchMessageA(&msg);
|
||||
+todo_wine
|
||||
ok(abs(count-TIMER_COUNT_EXPECTED) < TIMER_COUNT_TOLERANCE /* xp */
|
||||
|| broken(abs(count-64) < TIMER_COUNT_TOLERANCE) /* most common */
|
||||
|| broken(abs(count-43) < TIMER_COUNT_TOLERANCE) /* w2k3, win8 */,
|
||||
@@ -8589,6 +8590,7 @@ static void test_timers_no_wnd(void)
|
||||
|| broken(abs(count-64) <= TIMER_COUNT_TOLERANCE) /* most common */
|
||||
|| broken(abs(count-43) <= TIMER_COUNT_TOLERANCE) /* w2k3, win8 */,
|
||||
@@ -10352,6 +10353,7 @@ static void test_timers_no_wnd(void)
|
||||
start = GetTickCount();
|
||||
while (GetTickCount()-start < 1001 && GetMessageA(&msg, NULL, 0, 0))
|
||||
DispatchMessageA(&msg);
|
||||
+todo_wine
|
||||
ok(abs(count-TIMER_COUNT_EXPECTED) < TIMER_COUNT_TOLERANCE /* xp */
|
||||
|| broken(abs(count-64) < TIMER_COUNT_TOLERANCE) /* most common */,
|
||||
"did not get expected count for minimum timeout (%d != ~%d).\n",
|
||||
|| broken(abs(count-64) <= TIMER_COUNT_TOLERANCE) /* most common */
|
||||
|| broken(abs(count-43) <= TIMER_COUNT_TOLERANCE) /* w1064v1809 */,
|
||||
--
|
||||
2.5.1
|
||||
2.17.1
|
||||
|
||||
|
@@ -1,4 +1,4 @@
|
||||
From ee1533db82fa2a955765b6a00f5300900350d2fe Mon Sep 17 00:00:00 2001
|
||||
From 9e585de1f2f28e1ef18c1edca875779c491375cb 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
|
||||
@@ -9,7 +9,7 @@ Subject: [PATCH] kernel32: Add winediag message to show warning, that this
|
||||
1 file changed, 10 insertions(+)
|
||||
|
||||
diff --git a/dlls/kernel32/process.c b/dlls/kernel32/process.c
|
||||
index 0a3fd70..206224f 100644
|
||||
index 36ed82bff8c..b8a677c5485 100644
|
||||
--- a/dlls/kernel32/process.c
|
||||
+++ b/dlls/kernel32/process.c
|
||||
@@ -65,6 +65,7 @@
|
||||
@@ -18,9 +18,9 @@ index 0a3fd70..206224f 100644
|
||||
WINE_DECLARE_DEBUG_CHANNEL(relay);
|
||||
+WINE_DECLARE_DEBUG_CHANNEL(winediag);
|
||||
|
||||
#ifdef __APPLE__
|
||||
extern char **__wine_get_main_environment(void);
|
||||
@@ -1090,6 +1091,15 @@ void WINAPI start_process( LPTHREAD_START_ROUTINE entry, PEB *peb )
|
||||
typedef struct
|
||||
{
|
||||
@@ -997,6 +998,15 @@ void WINAPI start_process( LPTHREAD_START_ROUTINE entry, PEB *peb )
|
||||
|
||||
__TRY
|
||||
{
|
||||
@@ -37,5 +37,5 @@ index 0a3fd70..206224f 100644
|
||||
being_debugged = FALSE;
|
||||
|
||||
--
|
||||
1.9.1
|
||||
2.23.0
|
||||
|
||||
|
@@ -1,4 +1,4 @@
|
||||
From fa73044dd60bae90b9a5ec850205a07579d4db17 Mon Sep 17 00:00:00 2001
|
||||
From d216f85a593a09e7983d9178fb3e1f20bfcf08cc 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
|
||||
@@ -14,13 +14,14 @@ Subject: [PATCH] loader: Add commandline option --patches to show the patch
|
||||
6 files changed, 58 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/dlls/ntdll/misc.c b/dlls/ntdll/misc.c
|
||||
index bb75d9c..21e2db6 100644
|
||||
index c29a1c26c..8906e1942 100644
|
||||
--- a/dlls/ntdll/misc.c
|
||||
+++ b/dlls/ntdll/misc.c
|
||||
@@ -61,6 +61,14 @@ const char * CDECL NTDLL_wine_get_version(void)
|
||||
@@ -60,6 +60,14 @@ const char * CDECL NTDLL_wine_get_version(void)
|
||||
return wine_get_version();
|
||||
}
|
||||
|
||||
/*********************************************************************
|
||||
+/*********************************************************************
|
||||
+ * wine_get_patches (NTDLL.@)
|
||||
+ */
|
||||
+const void * CDECL NTDLL_wine_get_patches(void)
|
||||
@@ -28,15 +29,14 @@ index bb75d9c..21e2db6 100644
|
||||
+ return wine_get_patches();
|
||||
+}
|
||||
+
|
||||
+/*********************************************************************
|
||||
/*********************************************************************
|
||||
* wine_get_build_id (NTDLL.@)
|
||||
*/
|
||||
const char * CDECL NTDLL_wine_get_build_id(void)
|
||||
diff --git a/dlls/ntdll/ntdll.spec b/dlls/ntdll/ntdll.spec
|
||||
index 292b0f6..fb45a94 100644
|
||||
index 7aa953ca6..cf7d5b6f9 100644
|
||||
--- a/dlls/ntdll/ntdll.spec
|
||||
+++ b/dlls/ntdll/ntdll.spec
|
||||
@@ -1516,6 +1516,7 @@
|
||||
@@ -1566,6 +1566,7 @@
|
||||
|
||||
# Version
|
||||
@ cdecl wine_get_version() NTDLL_wine_get_version
|
||||
@@ -45,10 +45,10 @@ index 292b0f6..fb45a94 100644
|
||||
@ cdecl wine_get_host_version(ptr ptr) NTDLL_wine_get_host_version
|
||||
|
||||
diff --git a/include/wine/library.h b/include/wine/library.h
|
||||
index 242bb69..fae73fe 100644
|
||||
index a6fe28059..511bf4722 100644
|
||||
--- a/include/wine/library.h
|
||||
+++ b/include/wine/library.h
|
||||
@@ -43,6 +43,7 @@ extern const char *wine_get_data_dir(void);
|
||||
@@ -47,6 +47,7 @@ extern const char *wine_get_data_dir(void);
|
||||
extern const char *wine_get_server_dir(void);
|
||||
extern const char *wine_get_user_name(void);
|
||||
extern const char *wine_get_version(void);
|
||||
@@ -57,10 +57,10 @@ index 242bb69..fae73fe 100644
|
||||
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 3c9110b..5da6263 100644
|
||||
index 2a3314cbf..5b66c063d 100644
|
||||
--- a/libs/wine/config.c
|
||||
+++ b/libs/wine/config.c
|
||||
@@ -522,6 +522,12 @@ const char *wine_get_version(void)
|
||||
@@ -504,6 +504,12 @@ const char *wine_get_version(void)
|
||||
return PACKAGE_VERSION;
|
||||
}
|
||||
|
||||
@@ -74,19 +74,19 @@ index 3c9110b..5da6263 100644
|
||||
const char *wine_get_build_id(void)
|
||||
{
|
||||
diff --git a/libs/wine/wine.map b/libs/wine/wine.map
|
||||
index 2159fac..7cb2918 100644
|
||||
index 3f2c430fa..ca46979f5 100644
|
||||
--- a/libs/wine/wine.map
|
||||
+++ b/libs/wine/wine.map
|
||||
@@ -90,6 +90,7 @@ WINE_1.0
|
||||
@@ -28,6 +28,7 @@ WINE_1.0
|
||||
wine_get_ss;
|
||||
wine_get_user_name;
|
||||
wine_get_version;
|
||||
+ wine_get_patches;
|
||||
wine_init;
|
||||
wine_init_argv0_path;
|
||||
wine_is_dbcs_leadbyte;
|
||||
wine_ldt_alloc_entries;
|
||||
diff --git a/loader/main.c b/loader/main.c
|
||||
index f197cf8..f662912 100644
|
||||
index f197cf802..f6629128d 100644
|
||||
--- a/loader/main.c
|
||||
+++ b/loader/main.c
|
||||
@@ -54,7 +54,8 @@ static void check_command_line( int argc, char *argv[] )
|
||||
@@ -146,5 +146,5 @@ index f197cf8..f662912 100644
|
||||
|
||||
|
||||
--
|
||||
1.9.1
|
||||
2.25.0
|
||||
|
||||
|
@@ -1,21 +1,21 @@
|
||||
From 9618572cf2eace39198fb83b747a70d1865015e3 Mon Sep 17 00:00:00 2001
|
||||
From c07a490a6950f4efe563e38ca78b1aa459dfad86 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Michael=20M=C3=BCller?= <michael@fds-team.de>
|
||||
Date: Wed, 28 May 2014 19:50:51 +0200
|
||||
Subject: [PATCH] loader: Add commandline option --check-libs.
|
||||
|
||||
---
|
||||
include/wine/library.h | 2 +
|
||||
libs/wine/config.c | 124 +++++++++++++++++++++++++++++++++++++++++++++++++
|
||||
libs/wine/loader.c | 36 ++++++++++++++
|
||||
libs/wine/config.c | 124 +++++++++++++++++++++++++++++++++++++++++
|
||||
libs/wine/loader.c | 36 ++++++++++++
|
||||
libs/wine/wine.map | 2 +
|
||||
loader/main.c | 50 +++++++++++++++++++-
|
||||
loader/main.c | 50 ++++++++++++++++-
|
||||
5 files changed, 213 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/include/wine/library.h b/include/wine/library.h
|
||||
index fae73fe..7395a11 100644
|
||||
index 511bf4722..557cec20c 100644
|
||||
--- a/include/wine/library.h
|
||||
+++ b/include/wine/library.h
|
||||
@@ -40,6 +40,7 @@ extern "C" {
|
||||
@@ -44,6 +44,7 @@ extern "C" {
|
||||
extern const char *wine_get_build_dir(void);
|
||||
extern const char *wine_get_config_dir(void);
|
||||
extern const char *wine_get_data_dir(void);
|
||||
@@ -23,7 +23,7 @@ index fae73fe..7395a11 100644
|
||||
extern const char *wine_get_server_dir(void);
|
||||
extern const char *wine_get_user_name(void);
|
||||
extern const char *wine_get_version(void);
|
||||
@@ -52,6 +53,7 @@ extern void wine_exec_wine_binary( const char *name, char **argv, const char *en
|
||||
@@ -56,6 +57,7 @@ extern void wine_exec_wine_binary( const char *name, char **argv, const char *en
|
||||
|
||||
typedef void (*load_dll_callback_t)( void *, const char * );
|
||||
|
||||
@@ -32,10 +32,10 @@ index fae73fe..7395a11 100644
|
||||
extern void *wine_dlsym( void *handle, const char *symbol, char *error, size_t errorsize );
|
||||
extern int wine_dlclose( void *handle, char *error, size_t errorsize );
|
||||
diff --git a/libs/wine/config.c b/libs/wine/config.c
|
||||
index 5da6263..6cedfb7 100644
|
||||
index 5b66c063d..e0988513e 100644
|
||||
--- a/libs/wine/config.c
|
||||
+++ b/libs/wine/config.c
|
||||
@@ -488,6 +488,130 @@ const char *wine_get_build_dir(void)
|
||||
@@ -470,6 +470,130 @@ const char *wine_get_build_dir(void)
|
||||
return build_dir;
|
||||
}
|
||||
|
||||
@@ -167,13 +167,14 @@ index 5da6263..6cedfb7 100644
|
||||
const char *wine_get_server_dir(void)
|
||||
{
|
||||
diff --git a/libs/wine/loader.c b/libs/wine/loader.c
|
||||
index 649aa22..367dde3 100644
|
||||
index 2a569f5b7..5f10c3f9d 100644
|
||||
--- a/libs/wine/loader.c
|
||||
+++ b/libs/wine/loader.c
|
||||
@@ -1064,6 +1064,42 @@ void *wine_dlopen( const char *filename, int flag, char *error, size_t errorsize
|
||||
@@ -1072,6 +1072,42 @@ void *wine_dlopen( const char *filename, int flag, char *error, size_t errorsize
|
||||
return ret;
|
||||
}
|
||||
|
||||
/***********************************************************************
|
||||
+/***********************************************************************
|
||||
+ * wine_dladdr
|
||||
+ */
|
||||
+int wine_dladdr( void *addr, void *info, char *error, size_t errorsize )
|
||||
@@ -209,32 +210,31 @@ index 649aa22..367dde3 100644
|
||||
+#endif
|
||||
+}
|
||||
+
|
||||
+/***********************************************************************
|
||||
/***********************************************************************
|
||||
* wine_dlsym
|
||||
*/
|
||||
void *wine_dlsym( void *handle, const char *symbol, char *error, size_t errorsize )
|
||||
diff --git a/libs/wine/wine.map b/libs/wine/wine.map
|
||||
index 7cb2918..72ffed8 100644
|
||||
index ca46979f5..22a4e73b0 100644
|
||||
--- a/libs/wine/wine.map
|
||||
+++ b/libs/wine/wine.map
|
||||
@@ -65,6 +65,7 @@ WINE_1.0
|
||||
wine_dbg_sprintf;
|
||||
wine_dbgstr_an;
|
||||
wine_dbgstr_wn;
|
||||
@@ -9,6 +9,7 @@ WINE_1.0
|
||||
wine_anon_mmap;
|
||||
wine_casemap_lower;
|
||||
wine_casemap_upper;
|
||||
+ wine_dladdr;
|
||||
wine_dlclose;
|
||||
wine_dll_enum_load_path;
|
||||
wine_dll_get_owner;
|
||||
@@ -85,6 +86,7 @@ WINE_1.0
|
||||
wine_dll_set_callback;
|
||||
@@ -24,6 +25,7 @@ WINE_1.0
|
||||
wine_get_es;
|
||||
wine_get_fs;
|
||||
wine_get_gs;
|
||||
+ wine_get_libs;
|
||||
wine_get_server_dir;
|
||||
wine_get_sortkey;
|
||||
wine_get_ss;
|
||||
wine_get_user_name;
|
||||
diff --git a/loader/main.c b/loader/main.c
|
||||
index f662912..a2dc40c 100644
|
||||
index f6629128d..a2dc40c51 100644
|
||||
--- a/loader/main.c
|
||||
+++ b/loader/main.c
|
||||
@@ -36,6 +36,12 @@
|
||||
@@ -309,5 +309,5 @@ index f662912..a2dc40c 100644
|
||||
|
||||
|
||||
--
|
||||
1.9.1
|
||||
2.25.0
|
||||
|
||||
|
@@ -1,47 +0,0 @@
|
||||
From 246cb6b72666dcb77fb2f553d318d7dabbe8811d Mon Sep 17 00:00:00 2001
|
||||
From: Qian Hong <qhong@codeweavers.com>
|
||||
Date: Tue, 7 Apr 2015 13:18:47 +0800
|
||||
Subject: advapi32: Prepend a hidden LSA_TRUST_INFORMATION in LsaLookupSids to
|
||||
avoid crash when Domains[-1] incorrectly accessed by application. (try 2)
|
||||
|
||||
---
|
||||
dlls/advapi32/lsa.c | 10 +++++++---
|
||||
1 file changed, 7 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/dlls/advapi32/lsa.c b/dlls/advapi32/lsa.c
|
||||
index 69c29c5..dfe25b3 100644
|
||||
--- a/dlls/advapi32/lsa.c
|
||||
+++ b/dlls/advapi32/lsa.c
|
||||
@@ -488,14 +488,17 @@ NTSTATUS WINAPI LsaLookupSids(
|
||||
if (!(*Names = heap_alloc(name_fullsize))) return STATUS_NO_MEMORY;
|
||||
/* maximum count of stored domain infos is Count, allocate it like that cause really needed
|
||||
count could only be computed after sid data is retrieved */
|
||||
- domain_fullsize = sizeof(LSA_REFERENCED_DOMAIN_LIST) + sizeof(LSA_TRUST_INFORMATION)*Count;
|
||||
+ domain_fullsize = sizeof(LSA_REFERENCED_DOMAIN_LIST) + sizeof(LSA_TRUST_INFORMATION) * (Count + 1);
|
||||
if (!(*ReferencedDomains = heap_alloc(domain_fullsize)))
|
||||
{
|
||||
heap_free(*Names);
|
||||
return STATUS_NO_MEMORY;
|
||||
}
|
||||
(*ReferencedDomains)->Entries = 0;
|
||||
- (*ReferencedDomains)->Domains = (LSA_TRUST_INFORMATION*)((char*)*ReferencedDomains + sizeof(LSA_REFERENCED_DOMAIN_LIST));
|
||||
+ (*ReferencedDomains)->Domains = (LSA_TRUST_INFORMATION*)((char*)*ReferencedDomains +
|
||||
+ sizeof(LSA_REFERENCED_DOMAIN_LIST) + sizeof(LSA_TRUST_INFORMATION));
|
||||
+ (*ReferencedDomains)->Domains[-1].Sid = NULL;
|
||||
+ RtlInitUnicodeStringEx(&(*ReferencedDomains)->Domains[-1].Name, NULL);
|
||||
|
||||
/* Get full names data length and full length needed to store domain name and SID */
|
||||
for (i = 0; i < Count; i++)
|
||||
@@ -555,7 +558,8 @@ NTSTATUS WINAPI LsaLookupSids(
|
||||
|
||||
*ReferencedDomains = heap_realloc(*ReferencedDomains, domain_fullsize);
|
||||
/* fix pointer after reallocation */
|
||||
- (*ReferencedDomains)->Domains = (LSA_TRUST_INFORMATION*)((char*)*ReferencedDomains + sizeof(LSA_REFERENCED_DOMAIN_LIST));
|
||||
+ (*ReferencedDomains)->Domains = (LSA_TRUST_INFORMATION*)((char*)*ReferencedDomains +
|
||||
+ sizeof(LSA_REFERENCED_DOMAIN_LIST) + sizeof(LSA_TRUST_INFORMATION));
|
||||
domain_data = (char*)(*ReferencedDomains)->Domains + sizeof(LSA_TRUST_INFORMATION)*Count;
|
||||
|
||||
mapped = 0;
|
||||
--
|
||||
2.3.5
|
||||
|
@@ -1,39 +0,0 @@
|
||||
From ce254ac3659e0c040136341d035629f99ec6d1ea Mon Sep 17 00:00:00 2001
|
||||
From: Qian Hong <qhong@codeweavers.com>
|
||||
Date: Tue, 7 Apr 2015 13:19:06 +0800
|
||||
Subject: advapi32: Prepend a hidden LSA_TRUST_INFORMATION in LsaLookupNames2
|
||||
to avoid crash when Domains[-1] incorrectly accessed by application. (try 2)
|
||||
|
||||
---
|
||||
dlls/advapi32/lsa.c | 10 +++++++---
|
||||
1 file changed, 7 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/dlls/advapi32/lsa.c b/dlls/advapi32/lsa.c
|
||||
index dfe25b3..258b8ca 100644
|
||||
--- a/dlls/advapi32/lsa.c
|
||||
+++ b/dlls/advapi32/lsa.c
|
||||
@@ -404,14 +404,18 @@ NTSTATUS WINAPI LsaLookupNames2( LSA_HANDLE policy, ULONG flags, ULONG count,
|
||||
sid = (SID *)(*sids + count);
|
||||
|
||||
/* use maximum domain count */
|
||||
- if (!(*domains = heap_alloc(sizeof(LSA_REFERENCED_DOMAIN_LIST) + sizeof(LSA_TRUST_INFORMATION)*count +
|
||||
- sid_size_total + domainname_size_total*sizeof(WCHAR))))
|
||||
+ if (!(*domains = heap_alloc(sizeof(LSA_REFERENCED_DOMAIN_LIST) + sizeof(LSA_TRUST_INFORMATION) * (count + 1) +
|
||||
+ sid_size_total + domainname_size_total * sizeof(WCHAR))))
|
||||
{
|
||||
heap_free(*sids);
|
||||
return STATUS_NO_MEMORY;
|
||||
}
|
||||
(*domains)->Entries = 0;
|
||||
- (*domains)->Domains = (LSA_TRUST_INFORMATION*)((char*)*domains + sizeof(LSA_REFERENCED_DOMAIN_LIST));
|
||||
+ (*domains)->Domains = (LSA_TRUST_INFORMATION*)((char*)*domains +
|
||||
+ sizeof(LSA_REFERENCED_DOMAIN_LIST) + sizeof(LSA_TRUST_INFORMATION));
|
||||
+ (*domains)->Domains[-1].Sid = NULL;
|
||||
+ RtlInitUnicodeStringEx(&(*domains)->Domains[-1].Name, NULL);
|
||||
+
|
||||
domain_data = (char*)(*domains)->Domains + sizeof(LSA_TRUST_INFORMATION)*count;
|
||||
|
||||
domain.Buffer = heap_alloc(domain_size_max*sizeof(WCHAR));
|
||||
--
|
||||
2.3.5
|
||||
|
@@ -1,68 +0,0 @@
|
||||
From 77d43d721793edda9b419f7426442a35f0cb5918 Mon Sep 17 00:00:00 2001
|
||||
From: Qian Hong <qhong@codeweavers.com>
|
||||
Date: Tue, 7 Apr 2015 11:23:34 +0800
|
||||
Subject: advapi32: Fallback to Sid string when LookupAccountSid fails.
|
||||
|
||||
---
|
||||
dlls/advapi32/lsa.c | 31 +++++++++++++++++++++++++++++++
|
||||
1 file changed, 31 insertions(+)
|
||||
|
||||
diff --git a/dlls/advapi32/lsa.c b/dlls/advapi32/lsa.c
|
||||
index 1b270a80829..b8dedbd6d58 100644
|
||||
--- a/dlls/advapi32/lsa.c
|
||||
+++ b/dlls/advapi32/lsa.c
|
||||
@@ -29,6 +29,7 @@
|
||||
#include "winbase.h"
|
||||
#include "winreg.h"
|
||||
#include "winternl.h"
|
||||
+#include "sddl.h"
|
||||
#include "advapi32_misc.h"
|
||||
|
||||
#include "wine/debug.h"
|
||||
@@ -562,6 +563,21 @@ NTSTATUS WINAPI LsaLookupSids(
|
||||
domain.MaximumLength = sizeof(WCHAR);
|
||||
}
|
||||
}
|
||||
+ else
|
||||
+ {
|
||||
+ WCHAR *strsid = NULL;
|
||||
+
|
||||
+ if (ConvertSidToStringSidW(Sids[i], &strsid))
|
||||
+ {
|
||||
+ name_size = strlenW(strsid) + 1;
|
||||
+
|
||||
+ (*Names)[i].Name.Length = (name_size - 1) * sizeof(WCHAR);
|
||||
+ (*Names)[i].Name.MaximumLength = name_size * sizeof(WCHAR);
|
||||
+ name_fullsize += (*Names)[i].Name.MaximumLength;
|
||||
+
|
||||
+ LocalFree(strsid);
|
||||
+ }
|
||||
+ }
|
||||
}
|
||||
|
||||
/* now we have full length needed for both */
|
||||
@@ -605,6 +621,21 @@ NTSTATUS WINAPI LsaLookupSids(
|
||||
(*Names)[i].DomainIndex = lsa_reflist_add_domain(*ReferencedDomains, &domain, &domain_data);
|
||||
heap_free(domain.Buffer);
|
||||
}
|
||||
+ else
|
||||
+ {
|
||||
+ WCHAR *strsid = NULL;
|
||||
+
|
||||
+ if (ConvertSidToStringSidW(Sids[i], &strsid))
|
||||
+ {
|
||||
+ name_size = strlenW(strsid) + 1;
|
||||
+ mapped++;
|
||||
+
|
||||
+ (*Names)[i].Name.Buffer = name_buffer;
|
||||
+ memcpy((*Names)[i].Name.Buffer, strsid, name_size * sizeof(WCHAR));
|
||||
+
|
||||
+ LocalFree(strsid);
|
||||
+ }
|
||||
+ }
|
||||
|
||||
name_buffer += name_size;
|
||||
}
|
||||
--
|
||||
2.11.0
|
||||
|
@@ -1,53 +0,0 @@
|
||||
From 83517396c266c2de290670128d678770f5d79cc9 Mon Sep 17 00:00:00 2001
|
||||
From: Qian Hong <qhong@codeweavers.com>
|
||||
Date: Tue, 28 Apr 2015 23:00:08 +0800
|
||||
Subject: advapi32: Fix name and use of DOMAIN_GROUP_RID_USERS.
|
||||
|
||||
---
|
||||
dlls/advapi32/security.c | 7 +++++--
|
||||
dlls/advapi32/tests/security.c | 4 ++--
|
||||
2 files changed, 7 insertions(+), 4 deletions(-)
|
||||
|
||||
diff --git a/dlls/advapi32/security.c b/dlls/advapi32/security.c
|
||||
index d27b2e7..2362dd5 100644
|
||||
--- a/dlls/advapi32/security.c
|
||||
+++ b/dlls/advapi32/security.c
|
||||
@@ -191,7 +191,7 @@ static const WCHAR Domain_Admins[] = { 'D','o','m','a','i','n',' ','A','d','m','
|
||||
static const WCHAR Domain_Computers[] = { 'D','o','m','a','i','n',' ','C','o','m','p','u','t','e','r','s',0 };
|
||||
static const WCHAR Domain_Controllers[] = { 'D','o','m','a','i','n',' ','C','o','n','t','r','o','l','l','e','r','s',0 };
|
||||
static const WCHAR Domain_Guests[] = { 'D','o','m','a','i','n',' ','G','u','e','s','t','s',0 };
|
||||
-static const WCHAR Domain_Users[] = { 'D','o','m','a','i','n',' ','U','s','e','r','s',0 };
|
||||
+static const WCHAR None[] = { 'N','o','n','e',0 };
|
||||
static const WCHAR Enterprise_Admins[] = { 'E','n','t','e','r','p','r','i','s','e',' ','A','d','m','i','n','s',0 };
|
||||
static const WCHAR ENTERPRISE_DOMAIN_CONTROLLERS[] = { 'E','N','T','E','R','P','R','I','S','E',' ','D','O','M','A','I','N',' ','C','O','N','T','R','O','L','L','E','R','S',0 };
|
||||
static const WCHAR Everyone[] = { 'E','v','e','r','y','o','n','e',0 };
|
||||
@@ -2206,7 +2206,10 @@ LookupAccountSidW(
|
||||
ac = Domain_Admins;
|
||||
break;
|
||||
case DOMAIN_GROUP_RID_USERS:
|
||||
- ac = Domain_Users;
|
||||
+ /* MSDN says the name of DOMAIN_GROUP_RID_USERS is Domain Users,
|
||||
+ * tests show that MSDN seems to be wrong. */
|
||||
+ ac = None;
|
||||
+ use = 2;
|
||||
break;
|
||||
case DOMAIN_GROUP_RID_GUESTS:
|
||||
ac = Domain_Guests;
|
||||
diff --git a/dlls/advapi32/tests/security.c b/dlls/advapi32/tests/security.c
|
||||
index 573119f..490ce26 100644
|
||||
--- a/dlls/advapi32/tests/security.c
|
||||
+++ b/dlls/advapi32/tests/security.c
|
||||
@@ -2578,8 +2578,8 @@ static void test_process_security(void)
|
||||
dom_size = sizeof(domain);
|
||||
ret = LookupAccountSidA( NULL, UsersSid, account, &acc_size, domain, &dom_size, &use );
|
||||
ok(ret, "LookupAccountSid failed with %d\n", ret);
|
||||
- todo_wine ok(use == SidTypeGroup, "expect SidTypeGroup, got %d\n", use);
|
||||
- todo_wine ok(!strcmp(account, "None"), "expect None, got %s\n", account);
|
||||
+ ok(use == SidTypeGroup, "expect SidTypeGroup, got %d\n", use);
|
||||
+ ok(!strcmp(account, "None"), "expect None, got %s\n", account);
|
||||
|
||||
res = GetTokenInformation( token, TokenUser, NULL, 0, &size );
|
||||
ok(!res, "Expected failure, got %d\n", res);
|
||||
--
|
||||
2.3.5
|
||||
|
@@ -1,15 +1,16 @@
|
||||
From ba50fc98ee4690e62899d48efc856c2bc910536c Mon Sep 17 00:00:00 2001
|
||||
From 8044f571b7e674ce9e562488864d48646a9c7b88 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Michael=20M=C3=BCller?= <michael@fds-team.de>
|
||||
Date: Mon, 7 Aug 2017 01:25:02 +0200
|
||||
Subject: advapi32/tests: Extend security label / token integrity tests.
|
||||
Subject: [PATCH] advapi32/tests: Extend security label / token integrity
|
||||
tests.
|
||||
|
||||
---
|
||||
dlls/advapi32/tests/Makefile.in | 2 +-
|
||||
dlls/advapi32/tests/security.c | 389 +++++++++++++++++++++++++++++++++++++++-
|
||||
dlls/advapi32/tests/security.c | 389 +++++++++++++++++++++++++++++++-
|
||||
2 files changed, 387 insertions(+), 4 deletions(-)
|
||||
|
||||
diff --git a/dlls/advapi32/tests/Makefile.in b/dlls/advapi32/tests/Makefile.in
|
||||
index 36ce031ef62..4437e6e5de7 100644
|
||||
index 12583e59f57..caee5fae308 100644
|
||||
--- a/dlls/advapi32/tests/Makefile.in
|
||||
+++ b/dlls/advapi32/tests/Makefile.in
|
||||
@@ -1,5 +1,5 @@
|
||||
@@ -20,10 +21,10 @@ index 36ce031ef62..4437e6e5de7 100644
|
||||
C_SRCS = \
|
||||
cred.c \
|
||||
diff --git a/dlls/advapi32/tests/security.c b/dlls/advapi32/tests/security.c
|
||||
index 0fd41fe82fa..4a03db27e69 100644
|
||||
index a736dbffd22..4529469d932 100644
|
||||
--- a/dlls/advapi32/tests/security.c
|
||||
+++ b/dlls/advapi32/tests/security.c
|
||||
@@ -7191,13 +7191,19 @@ static void test_token_security_descriptor(void)
|
||||
@@ -7034,13 +7034,19 @@ static void test_token_security_descriptor(void)
|
||||
{
|
||||
static SID low_level = {SID_REVISION, 1, {SECURITY_MANDATORY_LABEL_AUTHORITY},
|
||||
{SECURITY_MANDATORY_LOW_RID}};
|
||||
@@ -46,7 +47,7 @@ index 0fd41fe82fa..4a03db27e69 100644
|
||||
PROCESS_INFORMATION info;
|
||||
DWORD size, index, retd;
|
||||
ACCESS_ALLOWED_ACE *ace;
|
||||
@@ -7347,6 +7353,185 @@ static void test_token_security_descriptor(void)
|
||||
@@ -7190,6 +7196,185 @@ static void test_token_security_descriptor(void)
|
||||
/* The security label is also not inherited */
|
||||
if (pAddMandatoryAce)
|
||||
{
|
||||
@@ -103,7 +104,7 @@ index 0fd41fe82fa..4a03db27e69 100644
|
||||
+
|
||||
+ if (sacl)
|
||||
+ {
|
||||
+ ret = pGetAce(sacl, 0, (void **)&ace);
|
||||
+ ret = GetAce(sacl, 0, (void **)&ace);
|
||||
+ ok(ret, "GetAce failed with error %u\n", GetLastError());
|
||||
+ ok(ace->Header.AceType == SYSTEM_MANDATORY_LABEL_ACE_TYPE,
|
||||
+ "Unexpected ACE type %#x\n", ace->Header.AceType);
|
||||
@@ -165,7 +166,7 @@ index 0fd41fe82fa..4a03db27e69 100644
|
||||
+
|
||||
+ if (sacl)
|
||||
+ {
|
||||
+ ret = pGetAce(sacl, 0, (void **)&ace);
|
||||
+ ret = GetAce(sacl, 0, (void **)&ace);
|
||||
+ ok(ret, "GetAce failed with error %u\n", GetLastError());
|
||||
+ ok(ace->Header.AceType == SYSTEM_MANDATORY_LABEL_ACE_TYPE,
|
||||
+ "Unexpected ACE type %#x\n", ace->Header.AceType);
|
||||
@@ -215,7 +216,7 @@ index 0fd41fe82fa..4a03db27e69 100644
|
||||
+
|
||||
+ if (sacl)
|
||||
+ {
|
||||
+ ret = pGetAce(sacl, 0, (void **)&ace);
|
||||
+ ret = GetAce(sacl, 0, (void **)&ace);
|
||||
+ ok(ret, "GetAce failed with error %u\n", GetLastError());
|
||||
+ ok(ace->Header.AceType == SYSTEM_MANDATORY_LABEL_ACE_TYPE,
|
||||
+ "Unexpected ACE type %#x\n", ace->Header.AceType);
|
||||
@@ -232,7 +233,7 @@ index 0fd41fe82fa..4a03db27e69 100644
|
||||
ret = InitializeAcl(acl, 256, ACL_REVISION);
|
||||
ok(ret, "InitializeAcl failed with error %u\n", GetLastError());
|
||||
|
||||
@@ -7362,6 +7547,90 @@ static void test_token_security_descriptor(void)
|
||||
@@ -7205,6 +7390,90 @@ static void test_token_security_descriptor(void)
|
||||
|
||||
ret = SetKernelObjectSecurity(token, LABEL_SECURITY_INFORMATION, sd);
|
||||
ok(ret, "SetKernelObjectSecurity failed with error %u\n", GetLastError());
|
||||
@@ -272,7 +273,7 @@ index 0fd41fe82fa..4a03db27e69 100644
|
||||
+
|
||||
+ if (sacl)
|
||||
+ {
|
||||
+ ret = pGetAce(sacl, 0, (void **)&ace);
|
||||
+ ret = GetAce(sacl, 0, (void **)&ace);
|
||||
+ ok(ret, "GetAce failed with error %u\n", GetLastError());
|
||||
+ ok(ace->Header.AceType == SYSTEM_MANDATORY_LABEL_ACE_TYPE,
|
||||
+ "Unexpected ACE type %#x\n", ace->Header.AceType);
|
||||
@@ -310,7 +311,7 @@ index 0fd41fe82fa..4a03db27e69 100644
|
||||
+
|
||||
+ if (sacl)
|
||||
+ {
|
||||
+ ret = pGetAce(sacl, 0, (void **)&ace);
|
||||
+ ret = GetAce(sacl, 0, (void **)&ace);
|
||||
+ ok(ret, "GetAce failed with error %u\n", GetLastError());
|
||||
+ ok(ace->Header.AceType == SYSTEM_MANDATORY_LABEL_ACE_TYPE,
|
||||
+ "Unexpected ACE type %#x\n", ace->Header.AceType);
|
||||
@@ -323,7 +324,7 @@ index 0fd41fe82fa..4a03db27e69 100644
|
||||
}
|
||||
else
|
||||
win_skip("SYSTEM_MANDATORY_LABEL not supported\n");
|
||||
@@ -7467,6 +7736,116 @@ static void test_child_token_sd(void)
|
||||
@@ -7312,6 +7581,116 @@ static void test_child_token_sd(void)
|
||||
HeapFree(GetProcessHeap(), 0, sd);
|
||||
}
|
||||
|
||||
@@ -366,7 +367,7 @@ index 0fd41fe82fa..4a03db27e69 100644
|
||||
+ ok(acl && acl != (void *)0xdeadbeef, "Got invalid SACL\n");
|
||||
+ ok(!defaulted, "SACL defaulted\n");
|
||||
+ ok(acl->AceCount == 1, "Expected exactly one ACE\n");
|
||||
+ ret = pGetAce(acl, 0, (void **)&ace_label);
|
||||
+ ret = GetAce(acl, 0, (void **)&ace_label);
|
||||
+ ok(ret, "GetAce failed with error %u\n", GetLastError());
|
||||
+ ok(ace_label->Header.AceType == SYSTEM_MANDATORY_LABEL_ACE_TYPE,
|
||||
+ "Unexpected ACE type %#x\n", ace_label->Header.AceType);
|
||||
@@ -421,7 +422,7 @@ index 0fd41fe82fa..4a03db27e69 100644
|
||||
+ ok(acl && acl != (void *)0xdeadbeef, "Got invalid SACL\n");
|
||||
+ ok(!defaulted, "SACL defaulted\n");
|
||||
+ ok(acl->AceCount == 1, "Expected exactly one ACE\n");
|
||||
+ ret = pGetAce(acl, 0, (void **)&ace_label);
|
||||
+ ret = GetAce(acl, 0, (void **)&ace_label);
|
||||
+ ok(ret, "GetAce failed with error %u\n", GetLastError());
|
||||
+ ok(ace_label->Header.AceType == SYSTEM_MANDATORY_LABEL_ACE_TYPE,
|
||||
+ "Unexpected ACE type %#x\n", ace_label->Header.AceType);
|
||||
@@ -440,7 +441,7 @@ index 0fd41fe82fa..4a03db27e69 100644
|
||||
static void test_GetExplicitEntriesFromAclW(void)
|
||||
{
|
||||
static const WCHAR wszCurrentUser[] = { 'C','U','R','R','E','N','T','_','U','S','E','R','\0'};
|
||||
@@ -7653,6 +8032,10 @@ START_TEST(security)
|
||||
@@ -7571,6 +7950,10 @@ START_TEST(security)
|
||||
{
|
||||
if (!strcmp(myARGV[2], "test_token_sd"))
|
||||
test_child_token_sd();
|
||||
@@ -452,5 +453,5 @@ index 0fd41fe82fa..4a03db27e69 100644
|
||||
test_process_security_child();
|
||||
return;
|
||||
--
|
||||
2.13.1
|
||||
2.17.1
|
||||
|
||||
|
@@ -1,4 +1,4 @@
|
||||
From f94296129eb249a04ccb012a10f50b79fb0a631a Mon Sep 17 00:00:00 2001
|
||||
From 8959c13f2be7e2a31f27c8483ee2202692f00710 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
|
||||
@@ -7,17 +7,17 @@ Subject: [PATCH] ntdll: Add function to create new tokens for elevation
|
||||
---
|
||||
dlls/ntdll/ntdll.spec | 3 ++
|
||||
dlls/ntdll/ntdll_misc.h | 3 ++
|
||||
dlls/ntdll/process.c | 18 +++++++++++
|
||||
server/protocol.def | 8 +++++
|
||||
dlls/ntdll/process.c | 18 +++++++++
|
||||
server/protocol.def | 8 ++++
|
||||
server/security.h | 1 +
|
||||
server/token.c | 84 +++++++++++++++++++++++++++++++++++++++++++++++++
|
||||
server/token.c | 84 +++++++++++++++++++++++++++++++++++++++++
|
||||
6 files changed, 117 insertions(+)
|
||||
|
||||
diff --git a/dlls/ntdll/ntdll.spec b/dlls/ntdll/ntdll.spec
|
||||
index 969cee7..008abb7 100644
|
||||
index d626e0bf2..5057e2b07 100644
|
||||
--- a/dlls/ntdll/ntdll.spec
|
||||
+++ b/dlls/ntdll/ntdll.spec
|
||||
@@ -1508,6 +1508,9 @@
|
||||
@@ -1556,6 +1556,9 @@
|
||||
# Virtual memory
|
||||
@ cdecl __wine_locked_recvmsg(long ptr long)
|
||||
|
||||
@@ -28,12 +28,12 @@ index 969cee7..008abb7 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 5a93ede..cb02bd1 100644
|
||||
index ac1469412..6c2345c6c 100644
|
||||
--- a/dlls/ntdll/ntdll_misc.h
|
||||
+++ b/dlls/ntdll/ntdll_misc.h
|
||||
@@ -83,6 +83,9 @@ extern void heap_set_debug_flags( HANDLE handle ) DECLSPEC_HIDDEN;
|
||||
extern void init_user_process_params( SIZE_T data_size ) DECLSPEC_HIDDEN;
|
||||
extern void update_user_process_params( const UNICODE_STRING *image ) DECLSPEC_HIDDEN;
|
||||
@@ -89,6 +89,9 @@ extern void init_user_process_params( SIZE_T data_size ) DECLSPEC_HIDDEN;
|
||||
extern char **build_envp( const WCHAR *envW ) DECLSPEC_HIDDEN;
|
||||
extern NTSTATUS restart_process( RTL_USER_PROCESS_PARAMETERS *params, NTSTATUS status ) DECLSPEC_HIDDEN;
|
||||
|
||||
+/* token */
|
||||
+extern HANDLE CDECL __wine_create_default_token(BOOL admin);
|
||||
@@ -42,10 +42,10 @@ index 5a93ede..cb02bd1 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 2ff8610..bb4a171 100644
|
||||
index 52d7ea429..e24691b8a 100644
|
||||
--- a/dlls/ntdll/process.c
|
||||
+++ b/dlls/ntdll/process.c
|
||||
@@ -118,6 +118,24 @@ HANDLE CDECL __wine_make_process_system(void)
|
||||
@@ -125,6 +125,24 @@ HANDLE CDECL __wine_make_process_system(void)
|
||||
return ret;
|
||||
}
|
||||
|
||||
@@ -71,10 +71,10 @@ index 2ff8610..bb4a171 100644
|
||||
|
||||
#define UNIMPLEMENTED_INFO_CLASS(c) \
|
||||
diff --git a/server/protocol.def b/server/protocol.def
|
||||
index 493100b..071f740 100644
|
||||
index e908f2131..0177cb579 100644
|
||||
--- a/server/protocol.def
|
||||
+++ b/server/protocol.def
|
||||
@@ -3666,6 +3666,14 @@ struct handle_info
|
||||
@@ -3734,6 +3734,14 @@ struct handle_info
|
||||
@END
|
||||
|
||||
|
||||
@@ -90,7 +90,7 @@ index 493100b..071f740 100644
|
||||
@REQ(create_completion)
|
||||
unsigned int access; /* desired access to a port */
|
||||
diff --git a/server/security.h b/server/security.h
|
||||
index 6c33714..21e90cc 100644
|
||||
index 6c337143c..21e90ccf2 100644
|
||||
--- a/server/security.h
|
||||
+++ b/server/security.h
|
||||
@@ -49,6 +49,7 @@ extern const PSID security_builtin_users_sid;
|
||||
@@ -102,7 +102,7 @@ index 6c33714..21e90cc 100644
|
||||
|
||||
/* token functions */
|
||||
diff --git a/server/token.c b/server/token.c
|
||||
index 4c37c67..e449e61 100644
|
||||
index 381ae6871..fcab79955 100644
|
||||
--- a/server/token.c
|
||||
+++ b/server/token.c
|
||||
@@ -79,6 +79,7 @@ static const SID anonymous_logon_sid = { SID_REVISION, 1, { SECURITY_NT_AUTHORIT
|
||||
@@ -121,7 +121,7 @@ index 4c37c67..e449e61 100644
|
||||
|
||||
static luid_t prev_luid_value = { 1000, 0 };
|
||||
|
||||
@@ -908,6 +910,64 @@ struct token *token_create_admin( void )
|
||||
@@ -917,6 +919,64 @@ struct token *token_create_admin( void )
|
||||
return token;
|
||||
}
|
||||
|
||||
@@ -186,7 +186,7 @@ index 4c37c67..e449e61 100644
|
||||
static struct privilege *token_find_privilege( struct token *token, const LUID *luid, int enabled_only )
|
||||
{
|
||||
struct privilege *privilege;
|
||||
@@ -1713,3 +1773,27 @@ DECL_HANDLER(set_token_default_dacl)
|
||||
@@ -1722,3 +1782,27 @@ DECL_HANDLER(set_token_default_dacl)
|
||||
release_object( token );
|
||||
}
|
||||
}
|
||||
@@ -215,5 +215,5 @@ index 4c37c67..e449e61 100644
|
||||
+ }
|
||||
+}
|
||||
--
|
||||
1.9.1
|
||||
2.23.0
|
||||
|
||||
|
@@ -1,24 +1,25 @@
|
||||
From 19cfff2a16953b65f9767fee571a4ce5d51b0536 Mon Sep 17 00:00:00 2001
|
||||
From 6a09d34647aa517e45bc0bb20a92d0d94a1da888 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Michael=20M=C3=BCller?= <michael@fds-team.de>
|
||||
Date: Sat, 5 Aug 2017 03:39:55 +0200
|
||||
Subject: [PATCH] ntdll: Implement process token elevation through manifests.
|
||||
|
||||
---
|
||||
dlls/ntdll/loader.c | 40 ++++++++++++++++++++++++++++++++++++++--
|
||||
dlls/ntdll/loader.c | 37 +++++++++++++++++++++++++++++++++++++
|
||||
server/process.c | 8 ++++++++
|
||||
server/process.h | 1 +
|
||||
server/protocol.def | 7 +++++++
|
||||
server/token.c | 14 ++++++++++++++
|
||||
5 files changed, 68 insertions(+), 2 deletions(-)
|
||||
5 files changed, 67 insertions(+)
|
||||
|
||||
diff --git a/dlls/ntdll/loader.c b/dlls/ntdll/loader.c
|
||||
index c0708c6..479608f 100644
|
||||
index 2f203447e..7c5dd308b 100644
|
||||
--- a/dlls/ntdll/loader.c
|
||||
+++ b/dlls/ntdll/loader.c
|
||||
@@ -3505,6 +3505,32 @@ void WINAPI LdrInitializeThunk( CONTEXT *context, void **entry, ULONG_PTR unknow
|
||||
@@ -3804,6 +3804,32 @@ void WINAPI LdrInitializeThunk( CONTEXT *context, void **entry, ULONG_PTR unknow
|
||||
}
|
||||
|
||||
|
||||
/***********************************************************************
|
||||
+/***********************************************************************
|
||||
+ * elevate_process
|
||||
+ */
|
||||
+static void elevate_process( void )
|
||||
@@ -44,38 +45,20 @@ index c0708c6..479608f 100644
|
||||
+}
|
||||
+
|
||||
+
|
||||
+/***********************************************************************
|
||||
/***********************************************************************
|
||||
* load_global_options
|
||||
*/
|
||||
static void load_global_options(void)
|
||||
@@ -3557,6 +3583,7 @@ static void load_global_options(void)
|
||||
}
|
||||
|
||||
|
||||
+
|
||||
/***********************************************************************
|
||||
* RtlImageDirectoryEntryToData (NTDLL.@)
|
||||
*/
|
||||
@@ -3592,7 +3619,6 @@ PVOID WINAPI RtlImageDirectoryEntryToData( HMODULE module, BOOL image, WORD dir,
|
||||
return RtlImageRvaToVa( nt, module, addr, NULL );
|
||||
}
|
||||
|
||||
-
|
||||
/***********************************************************************
|
||||
* RtlImageRvaToSection (NTDLL.@)
|
||||
*/
|
||||
@@ -3691,7 +3717,7 @@ void __wine_process_init(void)
|
||||
@@ -4233,6 +4259,7 @@ void __wine_process_init(void)
|
||||
's','y','s','t','e','m','3','2','\\',
|
||||
'k','e','r','n','e','l','3','2','.','d','l','l',0};
|
||||
static const WCHAR globalflagW[] = {'G','l','o','b','a','l','F','l','a','g',0};
|
||||
-
|
||||
RTL_USER_PROCESS_PARAMETERS *params;
|
||||
+ ACTIVATION_CONTEXT_RUN_LEVEL_INFORMATION runlevel;
|
||||
WINE_MODREF *wm;
|
||||
NTSTATUS status;
|
||||
ANSI_STRING func_name;
|
||||
@@ -3742,6 +3768,16 @@ void __wine_process_init(void)
|
||||
&NtCurrentTeb()->Peb->NtGlobalFlag, sizeof(DWORD), NULL );
|
||||
heap_set_debug_flags( GetProcessHeap() );
|
||||
@@ -4324,6 +4351,16 @@ void __wine_process_init(void)
|
||||
|
||||
virtual_set_large_address_space();
|
||||
|
||||
+ /* elevate process if necessary */
|
||||
+ status = RtlQueryInformationActivationContext( 0, NULL, 0, RunlevelInformationInActivationContext,
|
||||
@@ -89,12 +72,12 @@ index c0708c6..479608f 100644
|
||||
+
|
||||
/* the main exe needs to be the first in the load order list */
|
||||
RemoveEntryList( &wm->ldr.InLoadOrderModuleList );
|
||||
InsertHeadList( &NtCurrentTeb()->Peb->LdrData->InLoadOrderModuleList, &wm->ldr.InLoadOrderModuleList );
|
||||
InsertHeadList( &peb->LdrData->InLoadOrderModuleList, &wm->ldr.InLoadOrderModuleList );
|
||||
diff --git a/server/process.c b/server/process.c
|
||||
index d8fdfcc..2c9365a 100644
|
||||
index 4c7da9223..d6f71a774 100644
|
||||
--- a/server/process.c
|
||||
+++ b/server/process.c
|
||||
@@ -1129,6 +1129,14 @@ struct process_snapshot *process_snap( int *count )
|
||||
@@ -1107,6 +1107,14 @@ struct process_snapshot *process_snap( int *count )
|
||||
return snapshot;
|
||||
}
|
||||
|
||||
@@ -110,22 +93,22 @@ index d8fdfcc..2c9365a 100644
|
||||
DECL_HANDLER(new_process)
|
||||
{
|
||||
diff --git a/server/process.h b/server/process.h
|
||||
index d9d29f0..a494eab 100644
|
||||
index 5b83e111a..dfe5c4e52 100644
|
||||
--- a/server/process.h
|
||||
+++ b/server/process.h
|
||||
@@ -139,6 +139,7 @@ extern void break_process( struct process *process );
|
||||
@@ -139,6 +139,7 @@ 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 *process, obj_handle_t hconin);
|
||||
extern void inherit_console( struct thread *parent_thread, struct process *parent,
|
||||
diff --git a/server/protocol.def b/server/protocol.def
|
||||
index 2b8d51a..650c279 100644
|
||||
index 6022e1715..45ab670ea 100644
|
||||
--- a/server/protocol.def
|
||||
+++ b/server/protocol.def
|
||||
@@ -3721,6 +3721,13 @@ struct handle_info
|
||||
@@ -3755,6 +3755,13 @@ struct handle_info
|
||||
@END
|
||||
|
||||
|
||||
@@ -140,7 +123,7 @@ index 2b8d51a..650c279 100644
|
||||
@REQ(create_completion)
|
||||
unsigned int access; /* desired access to a port */
|
||||
diff --git a/server/token.c b/server/token.c
|
||||
index fcab799..181219d 100644
|
||||
index fcab79955..181219d21 100644
|
||||
--- a/server/token.c
|
||||
+++ b/server/token.c
|
||||
@@ -1806,3 +1806,17 @@ DECL_HANDLER(create_token)
|
||||
@@ -162,5 +145,5 @@ index fcab799..181219d 100644
|
||||
+ }
|
||||
+}
|
||||
--
|
||||
1.9.1
|
||||
2.24.0
|
||||
|
||||
|
@@ -1,130 +1,145 @@
|
||||
From 9f35230848f29e79b65c8e340221d7eb81382a43 Mon Sep 17 00:00:00 2001
|
||||
From 51830c6683b199e79cb9e782ee51555054a4da7c Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Michael=20M=C3=BCller?= <michael@fds-team.de>
|
||||
Date: Sun, 6 Aug 2017 02:08:05 +0200
|
||||
Subject: [PATCH] server: Implement support for creating processes using a
|
||||
token.
|
||||
|
||||
---
|
||||
dlls/kernel32/process.c | 27 +++++++++++++++------------
|
||||
server/process.c | 39 +++++++++++++++++++++++++++++++++++----
|
||||
server/process.h | 2 +-
|
||||
server/protocol.def | 1 +
|
||||
server/request.c | 2 +-
|
||||
server/security.h | 2 ++
|
||||
server/token.c | 11 +++++++++++
|
||||
7 files changed, 66 insertions(+), 18 deletions(-)
|
||||
dlls/kernelbase/process.c | 24 +++++++++++++-----------
|
||||
dlls/ntdll/process.c | 3 ++-
|
||||
server/process.c | 39 +++++++++++++++++++++++++++++++++++----
|
||||
server/process.h | 2 +-
|
||||
server/protocol.def | 1 +
|
||||
server/request.c | 2 +-
|
||||
server/security.h | 2 ++
|
||||
server/token.c | 11 +++++++++++
|
||||
8 files changed, 66 insertions(+), 18 deletions(-)
|
||||
|
||||
diff --git a/dlls/kernel32/process.c b/dlls/kernel32/process.c
|
||||
index 802d99f2a12..03c0588d59a 100644
|
||||
--- a/dlls/kernel32/process.c
|
||||
+++ b/dlls/kernel32/process.c
|
||||
@@ -2341,7 +2341,7 @@ static BOOL replace_process( HANDLE handle, const RTL_USER_PROCESS_PARAMETERS *p
|
||||
* Create a new process. If hFile is a valid handle we have an exe
|
||||
* file, otherwise it is a Winelib app.
|
||||
diff --git a/dlls/kernelbase/process.c b/dlls/kernelbase/process.c
|
||||
index a07dddb1f..99985ab89 100644
|
||||
--- a/dlls/kernelbase/process.c
|
||||
+++ b/dlls/kernelbase/process.c
|
||||
@@ -242,7 +242,7 @@ static RTL_USER_PROCESS_PARAMETERS *create_process_params( const WCHAR *filename
|
||||
/***********************************************************************
|
||||
* create_nt_process
|
||||
*/
|
||||
-static BOOL create_process( HANDLE hFile, LPSECURITY_ATTRIBUTES psa, LPSECURITY_ATTRIBUTES tsa,
|
||||
+static BOOL create_process( HANDLE token, HANDLE hFile, LPSECURITY_ATTRIBUTES psa, LPSECURITY_ATTRIBUTES tsa,
|
||||
BOOL inherit, DWORD flags, const RTL_USER_PROCESS_PARAMETERS *params,
|
||||
LPPROCESS_INFORMATION info, LPCSTR unixdir, const pe_image_info_t *pe_info )
|
||||
-static NTSTATUS create_nt_process( SECURITY_ATTRIBUTES *psa, SECURITY_ATTRIBUTES *tsa,
|
||||
+static NTSTATUS create_nt_process( HANDLE token, SECURITY_ATTRIBUTES *psa, SECURITY_ATTRIBUTES *tsa,
|
||||
BOOL inherit, DWORD flags, RTL_USER_PROCESS_PARAMETERS *params,
|
||||
RTL_USER_PROCESS_INFORMATION *info, HANDLE parent )
|
||||
{
|
||||
@@ -2408,6 +2408,7 @@ static BOOL create_process( HANDLE hFile, LPSECURITY_ATTRIBUTES psa, LPSECURITY_
|
||||
@@ -257,7 +257,7 @@ static NTSTATUS create_nt_process( SECURITY_ATTRIBUTES *psa, SECURITY_ATTRIBUTES
|
||||
status = RtlCreateUserProcess( &nameW, OBJ_CASE_INSENSITIVE, params,
|
||||
psa ? psa->lpSecurityDescriptor : NULL,
|
||||
tsa ? tsa->lpSecurityDescriptor : NULL,
|
||||
- parent, inherit, 0, 0, info );
|
||||
+ parent, inherit, 0, token, info );
|
||||
RtlFreeUnicodeString( &nameW );
|
||||
}
|
||||
return status;
|
||||
@@ -267,7 +267,7 @@ static NTSTATUS create_nt_process( SECURITY_ATTRIBUTES *psa, SECURITY_ATTRIBUTES
|
||||
/***********************************************************************
|
||||
* create_vdm_process
|
||||
*/
|
||||
-static NTSTATUS create_vdm_process( SECURITY_ATTRIBUTES *psa, SECURITY_ATTRIBUTES *tsa,
|
||||
+static NTSTATUS create_vdm_process( HANDLE token, SECURITY_ATTRIBUTES *psa, SECURITY_ATTRIBUTES *tsa,
|
||||
BOOL inherit, DWORD flags, RTL_USER_PROCESS_PARAMETERS *params,
|
||||
RTL_USER_PROCESS_INFORMATION *info )
|
||||
{
|
||||
@@ -288,7 +288,7 @@ static NTSTATUS create_vdm_process( SECURITY_ATTRIBUTES *psa, SECURITY_ATTRIBUTE
|
||||
winevdm, params->ImagePathName.Buffer, params->CommandLine.Buffer );
|
||||
RtlInitUnicodeString( ¶ms->ImagePathName, winevdm );
|
||||
RtlInitUnicodeString( ¶ms->CommandLine, newcmdline );
|
||||
- status = create_nt_process( psa, tsa, inherit, flags, params, info, NULL );
|
||||
+ status = create_nt_process( token, psa, tsa, inherit, flags, params, info, NULL );
|
||||
HeapFree( GetProcessHeap(), 0, newcmdline );
|
||||
return status;
|
||||
}
|
||||
@@ -297,7 +297,7 @@ static NTSTATUS create_vdm_process( SECURITY_ATTRIBUTES *psa, SECURITY_ATTRIBUTE
|
||||
/***********************************************************************
|
||||
* create_cmd_process
|
||||
*/
|
||||
-static NTSTATUS create_cmd_process( SECURITY_ATTRIBUTES *psa, SECURITY_ATTRIBUTES *tsa,
|
||||
+static NTSTATUS create_cmd_process( HANDLE token, SECURITY_ATTRIBUTES *psa, SECURITY_ATTRIBUTES *tsa,
|
||||
BOOL inherit, DWORD flags, RTL_USER_PROCESS_PARAMETERS *params,
|
||||
RTL_USER_PROCESS_INFORMATION *info )
|
||||
{
|
||||
@@ -316,7 +316,7 @@ static NTSTATUS create_cmd_process( SECURITY_ATTRIBUTES *psa, SECURITY_ATTRIBUTE
|
||||
swprintf( newcmdline, len, L"%s /s/c \"%s\"", comspec, params->CommandLine.Buffer );
|
||||
RtlInitUnicodeString( ¶ms->ImagePathName, comspec );
|
||||
RtlInitUnicodeString( ¶ms->CommandLine, newcmdline );
|
||||
- status = create_nt_process( psa, tsa, inherit, flags, params, info, NULL );
|
||||
+ status = create_nt_process( token, psa, tsa, inherit, flags, params, info, NULL );
|
||||
RtlFreeHeap( GetProcessHeap(), 0, newcmdline );
|
||||
return status;
|
||||
}
|
||||
@@ -448,7 +448,9 @@ BOOL WINAPI DECLSPEC_HOTPATCH CreateProcessInternalW( HANDLE token, const WCHAR
|
||||
|
||||
TRACE( "app %s cmdline %s\n", debugstr_w(app_name), debugstr_w(cmd_line) );
|
||||
|
||||
- if (token) FIXME( "Creating a process with a token is not yet implemented\n" );
|
||||
+ /* FIXME: Starting a process which requires admin rights should fail
|
||||
+ * with ERROR_ELEVATION_REQUIRED when no token is passed. */
|
||||
+
|
||||
if (new_token) FIXME( "No support for returning created process token\n" );
|
||||
|
||||
if (app_name)
|
||||
@@ -521,7 +523,7 @@ BOOL WINAPI DECLSPEC_HOTPATCH CreateProcessInternalW( HANDLE token, const WCHAR
|
||||
}
|
||||
}
|
||||
|
||||
- status = create_nt_process( process_attr, thread_attr, inherit, flags, params, &rtl_info, parent );
|
||||
+ status = create_nt_process( token, process_attr, thread_attr, inherit, flags, params, &rtl_info, parent );
|
||||
switch (status)
|
||||
{
|
||||
case STATUS_SUCCESS:
|
||||
@@ -530,7 +532,7 @@ BOOL WINAPI DECLSPEC_HOTPATCH CreateProcessInternalW( HANDLE token, const WCHAR
|
||||
case STATUS_INVALID_IMAGE_NE_FORMAT:
|
||||
case STATUS_INVALID_IMAGE_PROTECT:
|
||||
TRACE( "starting %s as Win16/DOS binary\n", debugstr_w(app_name) );
|
||||
- status = create_vdm_process( process_attr, thread_attr, inherit, flags, params, &rtl_info );
|
||||
+ status = create_vdm_process( token, process_attr, thread_attr, inherit, flags, params, &rtl_info );
|
||||
break;
|
||||
case STATUS_INVALID_IMAGE_NOT_MZ:
|
||||
/* check for .com or .bat extension */
|
||||
@@ -538,12 +540,12 @@ BOOL WINAPI DECLSPEC_HOTPATCH CreateProcessInternalW( HANDLE token, const WCHAR
|
||||
if (!wcsicmp( p, L".com" ) || !wcsicmp( p, L".pif" ))
|
||||
{
|
||||
TRACE( "starting %s as DOS binary\n", debugstr_w(app_name) );
|
||||
- status = create_vdm_process( process_attr, thread_attr, inherit, flags, params, &rtl_info );
|
||||
+ status = create_vdm_process( token, process_attr, thread_attr, inherit, flags, params, &rtl_info );
|
||||
}
|
||||
else if (!wcsicmp( p, L".bat" ) || !wcsicmp( p, L".cmd" ))
|
||||
{
|
||||
TRACE( "starting %s as batch binary\n", debugstr_w(app_name) );
|
||||
- status = create_cmd_process( process_attr, thread_attr, inherit, flags, params, &rtl_info );
|
||||
+ status = create_cmd_process( token, process_attr, thread_attr, inherit, flags, params, &rtl_info );
|
||||
}
|
||||
break;
|
||||
}
|
||||
diff --git a/dlls/ntdll/process.c b/dlls/ntdll/process.c
|
||||
index f3d9079f8..2fa553091 100644
|
||||
--- a/dlls/ntdll/process.c
|
||||
+++ b/dlls/ntdll/process.c
|
||||
@@ -1667,7 +1667,7 @@ NTSTATUS WINAPI RtlCreateUserProcess( UNICODE_STRING *path, ULONG attributes,
|
||||
RTL_USER_PROCESS_PARAMETERS *params,
|
||||
SECURITY_DESCRIPTOR *process_descr,
|
||||
SECURITY_DESCRIPTOR *thread_descr,
|
||||
- HANDLE parent, BOOLEAN inherit, HANDLE debug, HANDLE exception,
|
||||
+ HANDLE parent, BOOLEAN inherit, HANDLE debug, HANDLE token,
|
||||
RTL_USER_PROCESS_INFORMATION *info )
|
||||
{
|
||||
NTSTATUS status;
|
||||
@@ -1735,6 +1735,7 @@ NTSTATUS WINAPI RtlCreateUserProcess( UNICODE_STRING *path, ULONG attributes,
|
||||
req->access = PROCESS_ALL_ACCESS;
|
||||
req->cpu = pe_info->cpu;
|
||||
req->cpu = pe_info.cpu;
|
||||
req->info_size = startup_info_size;
|
||||
+ req->token = wine_server_obj_handle( token );
|
||||
wine_server_add_data( req, objattr, attr_len );
|
||||
wine_server_add_data( req, startup_info, startup_info_size );
|
||||
wine_server_add_data( req, params->Environment, (env_end - params->Environment) * sizeof(WCHAR) );
|
||||
@@ -2567,7 +2568,7 @@ static RTL_USER_PROCESS_PARAMETERS *get_vdm_params( const RTL_USER_PROCESS_PARAM
|
||||
*
|
||||
* Create a new VDM process for a 16-bit or DOS application.
|
||||
*/
|
||||
-static BOOL create_vdm_process( LPSECURITY_ATTRIBUTES psa, LPSECURITY_ATTRIBUTES tsa,
|
||||
+static BOOL create_vdm_process( HANDLE token, LPSECURITY_ATTRIBUTES psa, LPSECURITY_ATTRIBUTES tsa,
|
||||
BOOL inherit, DWORD flags, const RTL_USER_PROCESS_PARAMETERS *params,
|
||||
LPPROCESS_INFORMATION info, LPCSTR unixdir )
|
||||
{
|
||||
@@ -2577,7 +2578,7 @@ static BOOL create_vdm_process( LPSECURITY_ATTRIBUTES psa, LPSECURITY_ATTRIBUTES
|
||||
|
||||
if (!(new_params = get_vdm_params( params, &pe_info ))) return FALSE;
|
||||
|
||||
- ret = create_process( 0, psa, tsa, inherit, flags, new_params, info, unixdir, &pe_info );
|
||||
+ ret = create_process( token, 0, psa, tsa, inherit, flags, new_params, info, unixdir, &pe_info );
|
||||
RtlDestroyProcessParameters( new_params );
|
||||
return ret;
|
||||
}
|
||||
@@ -2588,7 +2589,7 @@ static BOOL create_vdm_process( LPSECURITY_ATTRIBUTES psa, LPSECURITY_ATTRIBUTES
|
||||
*
|
||||
* Create a new cmd shell process for a .BAT file.
|
||||
*/
|
||||
-static BOOL create_cmd_process( LPSECURITY_ATTRIBUTES psa, LPSECURITY_ATTRIBUTES tsa,
|
||||
+static BOOL create_cmd_process( HANDLE token, LPSECURITY_ATTRIBUTES psa, LPSECURITY_ATTRIBUTES tsa,
|
||||
BOOL inherit, DWORD flags, LPSTARTUPINFOW startup,
|
||||
const RTL_USER_PROCESS_PARAMETERS *params,
|
||||
LPPROCESS_INFORMATION info )
|
||||
@@ -2618,9 +2619,9 @@ static BOOL create_cmd_process( LPSECURITY_ATTRIBUTES psa, LPSECURITY_ATTRIBUTES
|
||||
strcatW( newcmdline, params->CommandLine.Buffer );
|
||||
strcatW( newcmdline, quotW );
|
||||
if (params->CurrentDirectory.DosPath.Length) cur_dir = params->CurrentDirectory.DosPath.Buffer;
|
||||
- ret = CreateProcessW( comspec, newcmdline, psa, tsa, inherit,
|
||||
+ ret = CreateProcessInternalW( token, comspec, newcmdline, psa, tsa, inherit,
|
||||
flags | CREATE_UNICODE_ENVIRONMENT, params->Environment, cur_dir,
|
||||
- startup, info );
|
||||
+ startup, info, NULL );
|
||||
HeapFree( GetProcessHeap(), 0, newcmdline );
|
||||
return ret;
|
||||
}
|
||||
@@ -2734,7 +2735,9 @@ BOOL WINAPI CreateProcessInternalW( HANDLE token, LPCWSTR app_name, LPWSTR cmd_l
|
||||
|
||||
TRACE("app %s cmdline %s\n", debugstr_w(app_name), debugstr_w(cmd_line) );
|
||||
|
||||
- if (token) FIXME("Creating a process with a token is not yet implemented\n");
|
||||
+ /* FIXME: Starting a process which requires admin rights should fail
|
||||
+ * with ERROR_ELEVATION_REQUIRED when no token is passed. */
|
||||
+
|
||||
if (new_token) FIXME("No support for returning created process token\n");
|
||||
|
||||
if (!(tidy_cmdline = get_file_name( app_name, cmd_line, name, ARRAY_SIZE( name ), &hFile, &is_64bit )))
|
||||
@@ -2802,17 +2805,17 @@ BOOL WINAPI CreateProcessInternalW( HANDLE token, LPCWSTR app_name, LPWSTR cmd_l
|
||||
debugstr_w(name), is_64bit_arch(pe_info.cpu) ? 64 : 32,
|
||||
wine_dbgstr_longlong(pe_info.base), wine_dbgstr_longlong(pe_info.base + pe_info.map_size),
|
||||
cpu_names[pe_info.cpu] );
|
||||
- retv = create_process( hFile, process_attr, thread_attr,
|
||||
+ retv = create_process( token, hFile, process_attr, thread_attr,
|
||||
inherit, flags, params, info, unixdir, &pe_info );
|
||||
break;
|
||||
case BINARY_WIN16:
|
||||
TRACE( "starting %s as Win16/DOS binary\n", debugstr_w(name) );
|
||||
- retv = create_vdm_process( process_attr, thread_attr, inherit, flags, params, info, unixdir );
|
||||
+ retv = create_vdm_process( token, process_attr, thread_attr, inherit, flags, params, info, unixdir );
|
||||
break;
|
||||
case BINARY_UNIX_LIB:
|
||||
TRACE( "starting %s as %d-bit Winelib app\n",
|
||||
debugstr_w(name), is_64bit_arch(pe_info.cpu) ? 64 : 32 );
|
||||
- retv = create_process( hFile, process_attr, thread_attr,
|
||||
+ retv = create_process( token, hFile, process_attr, thread_attr,
|
||||
inherit, flags, params, info, unixdir, &pe_info );
|
||||
break;
|
||||
case BINARY_UNKNOWN:
|
||||
@@ -2822,14 +2825,14 @@ BOOL WINAPI CreateProcessInternalW( HANDLE token, LPCWSTR app_name, LPWSTR cmd_l
|
||||
if (!strcmpiW( p, comW ) || !strcmpiW( p, pifW ))
|
||||
{
|
||||
TRACE( "starting %s as DOS binary\n", debugstr_w(name) );
|
||||
- retv = create_vdm_process( process_attr, thread_attr,
|
||||
+ retv = create_vdm_process( token, process_attr, thread_attr,
|
||||
inherit, flags, params, info, unixdir );
|
||||
break;
|
||||
}
|
||||
if (!strcmpiW( p, batW ) || !strcmpiW( p, cmdW ) )
|
||||
{
|
||||
TRACE( "starting %s as batch binary\n", debugstr_w(name) );
|
||||
- retv = create_cmd_process( process_attr, thread_attr,
|
||||
+ retv = create_cmd_process( token, process_attr, thread_attr,
|
||||
inherit, flags, startup_info, params, info );
|
||||
break;
|
||||
}
|
||||
wine_server_add_data( req, params->Environment, env_size );
|
||||
diff --git a/server/process.c b/server/process.c
|
||||
index 30832f474da..028ffa1b454 100644
|
||||
index d6f71a774..aa66814d8 100644
|
||||
--- a/server/process.c
|
||||
+++ b/server/process.c
|
||||
@@ -491,7 +491,7 @@ static void start_sigkill_timer( struct process *process )
|
||||
@@ -136,7 +151,7 @@ index 30832f474da..028ffa1b454 100644
|
||||
{
|
||||
struct process *process;
|
||||
|
||||
@@ -567,7 +567,7 @@ struct process *create_process( int fd, struct process *parent, int inherit_all,
|
||||
@@ -568,7 +568,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 */
|
||||
@@ -145,15 +160,15 @@ index 30832f474da..028ffa1b454 100644
|
||||
process->affinity = parent->affinity;
|
||||
}
|
||||
if (!process->handles || !process->token) goto error;
|
||||
@@ -1123,6 +1123,7 @@ DECL_HANDLER(new_process)
|
||||
@@ -1124,6 +1124,7 @@ DECL_HANDLER(new_process)
|
||||
const struct security_descriptor *sd;
|
||||
const struct object_attributes *objattr = get_req_object_attributes( &sd, &name, NULL );
|
||||
struct process *process = NULL;
|
||||
+ struct token *token = NULL;
|
||||
struct process *parent = current->process;
|
||||
struct process *parent;
|
||||
struct thread *parent_thread = current;
|
||||
int socket_fd = thread_get_inflight_fd( current, req->socket_fd );
|
||||
|
||||
@@ -1163,10 +1164,39 @@ DECL_HANDLER(new_process)
|
||||
@@ -1177,10 +1178,39 @@ DECL_HANDLER(new_process)
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -190,10 +205,10 @@ index 30832f474da..028ffa1b454 100644
|
||||
{
|
||||
close( socket_fd );
|
||||
+ if (token) release_object( token );
|
||||
release_object( parent );
|
||||
return;
|
||||
}
|
||||
info->process = NULL;
|
||||
@@ -1213,7 +1243,7 @@ DECL_HANDLER(new_process)
|
||||
@@ -1228,7 +1258,7 @@ DECL_HANDLER(new_process)
|
||||
#undef FIXUP_LEN
|
||||
}
|
||||
|
||||
@@ -202,15 +217,15 @@ index 30832f474da..028ffa1b454 100644
|
||||
|
||||
process->startup_info = (struct startup_info *)grab_object( info );
|
||||
|
||||
@@ -1275,6 +1305,7 @@ DECL_HANDLER(new_process)
|
||||
reply->handle = alloc_handle_no_access_check( parent, process, req->access, objattr->attributes );
|
||||
@@ -1289,6 +1319,7 @@ DECL_HANDLER(new_process)
|
||||
reply->handle = alloc_handle_no_access_check( current->process, process, req->access, objattr->attributes );
|
||||
|
||||
done:
|
||||
+ if (token) release_object( token );
|
||||
if (process) release_object( process );
|
||||
release_object( parent );
|
||||
release_object( info );
|
||||
}
|
||||
@@ -1307,7 +1338,7 @@ DECL_HANDLER(exec_process)
|
||||
@@ -1322,7 +1353,7 @@ DECL_HANDLER(exec_process)
|
||||
close( socket_fd );
|
||||
return;
|
||||
}
|
||||
@@ -220,10 +235,10 @@ index 30832f474da..028ffa1b454 100644
|
||||
release_object( process );
|
||||
}
|
||||
diff --git a/server/process.h b/server/process.h
|
||||
index f21ab7722a9..774c147e783 100644
|
||||
index dfe5c4e52..61b83abf6 100644
|
||||
--- a/server/process.h
|
||||
+++ b/server/process.h
|
||||
@@ -117,7 +117,7 @@ extern unsigned int alloc_ptid( void *ptr );
|
||||
@@ -118,7 +118,7 @@ extern unsigned int alloc_ptid( void *ptr );
|
||||
extern void free_ptid( unsigned int id );
|
||||
extern void *get_ptid_entry( unsigned int id );
|
||||
extern struct process *create_process( int fd, struct process *parent, int inherit_all,
|
||||
@@ -233,10 +248,10 @@ index f21ab7722a9..774c147e783 100644
|
||||
extern struct thread *get_process_first_thread( struct process *process );
|
||||
extern struct process *get_process_from_id( process_id_t id );
|
||||
diff --git a/server/protocol.def b/server/protocol.def
|
||||
index fcca1d255ba..4b01c6d1904 100644
|
||||
index 45ab670ea..c763da4ca 100644
|
||||
--- a/server/protocol.def
|
||||
+++ b/server/protocol.def
|
||||
@@ -790,6 +790,7 @@ struct rawinput_device
|
||||
@@ -791,6 +791,7 @@ struct rawinput_device
|
||||
unsigned int access; /* access rights for process object */
|
||||
client_cpu_t cpu; /* CPU that the new process will use */
|
||||
data_size_t info_size; /* size of startup info */
|
||||
@@ -245,10 +260,10 @@ index fcca1d255ba..4b01c6d1904 100644
|
||||
VARARG(info,startup_info,info_size); /* startup information */
|
||||
VARARG(env,unicode_str); /* environment for new process */
|
||||
diff --git a/server/request.c b/server/request.c
|
||||
index d2adb08a183..139d643e8c8 100644
|
||||
index 200c2697d..f743b720a 100644
|
||||
--- a/server/request.c
|
||||
+++ b/server/request.c
|
||||
@@ -578,7 +578,7 @@ static void master_socket_poll_event( struct fd *fd, int event )
|
||||
@@ -582,7 +582,7 @@ static void master_socket_poll_event( struct fd *fd, int event )
|
||||
int client = accept( get_unix_fd( master_socket->fd ), (struct sockaddr *) &dummy, &len );
|
||||
if (client == -1) return;
|
||||
fcntl( client, F_SETFL, O_NONBLOCK );
|
||||
@@ -258,7 +273,7 @@ index d2adb08a183..139d643e8c8 100644
|
||||
create_thread( -1, process, NULL );
|
||||
release_object( process );
|
||||
diff --git a/server/security.h b/server/security.h
|
||||
index 21e90ccf23f..32dfe5f8db9 100644
|
||||
index 21e90ccf2..32dfe5f8d 100644
|
||||
--- a/server/security.h
|
||||
+++ b/server/security.h
|
||||
@@ -67,6 +67,8 @@ extern const ACL *token_get_default_dacl( struct token *token );
|
||||
@@ -271,7 +286,7 @@ index 21e90ccf23f..32dfe5f8db9 100644
|
||||
static inline const ACE_HEADER *ace_next( const ACE_HEADER *ace )
|
||||
{
|
||||
diff --git a/server/token.c b/server/token.c
|
||||
index 181219d2179..858ec25d792 100644
|
||||
index 181219d21..858ec25d7 100644
|
||||
--- a/server/token.c
|
||||
+++ b/server/token.c
|
||||
@@ -845,6 +845,12 @@ int token_assign_label( struct token *token, PSID label )
|
||||
@@ -300,5 +315,5 @@ index 181219d2179..858ec25d792 100644
|
||||
{
|
||||
GENERIC_MAPPING mapping;
|
||||
--
|
||||
2.20.1
|
||||
2.24.0
|
||||
|
||||
|
@@ -1,4 +1,4 @@
|
||||
From 0616176a3276be4ae49dc86c7d96b11240afca78 Mon Sep 17 00:00:00 2001
|
||||
From 5bf0baa79c46ec44dfd5e1340e96ff9289bc37f8 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: [PATCH] programs/runas: Basic implementation for starting processes
|
||||
@@ -7,9 +7,9 @@ Subject: [PATCH] programs/runas: Basic implementation for starting processes
|
||||
---
|
||||
configure.ac | 1 +
|
||||
programs/runas/Makefile.in | 8 ++
|
||||
programs/runas/runas.c | 214 +++++++++++++++++++++++++++++++++++++++++++++
|
||||
programs/runas/runas.h | 26 ++++++
|
||||
programs/runas/runas.rc | 39 +++++++++
|
||||
programs/runas/runas.c | 214 +++++++++++++++++++++++++++++++++++++
|
||||
programs/runas/runas.h | 26 +++++
|
||||
programs/runas/runas.rc | 39 +++++++
|
||||
5 files changed, 288 insertions(+)
|
||||
create mode 100644 programs/runas/Makefile.in
|
||||
create mode 100644 programs/runas/runas.c
|
||||
@@ -17,10 +17,10 @@ Subject: [PATCH] programs/runas: Basic implementation for starting processes
|
||||
create mode 100644 programs/runas/runas.rc
|
||||
|
||||
diff --git a/configure.ac b/configure.ac
|
||||
index b9ef668..404ab7a 100644
|
||||
index 499c4f37ca..6f12614af1 100644
|
||||
--- a/configure.ac
|
||||
+++ b/configure.ac
|
||||
@@ -3879,6 +3879,7 @@ WINE_CONFIG_MAKEFILE(programs/regedit/tests)
|
||||
@@ -3891,6 +3891,7 @@ WINE_CONFIG_MAKEFILE(programs/regedit/tests)
|
||||
WINE_CONFIG_MAKEFILE(programs/regsvcs)
|
||||
WINE_CONFIG_MAKEFILE(programs/regsvr32)
|
||||
WINE_CONFIG_MAKEFILE(programs/rpcss)
|
||||
@@ -30,12 +30,12 @@ index b9ef668..404ab7a 100644
|
||||
WINE_CONFIG_MAKEFILE(programs/sc)
|
||||
diff --git a/programs/runas/Makefile.in b/programs/runas/Makefile.in
|
||||
new file mode 100644
|
||||
index 0000000..be9434b
|
||||
index 0000000000..33aa00ab03
|
||||
--- /dev/null
|
||||
+++ b/programs/runas/Makefile.in
|
||||
@@ -0,0 +1,8 @@
|
||||
+MODULE = runas.exe
|
||||
+APPMODE = -mconsole -municode
|
||||
+APPMODE = -mconsole -municode -mno-cygwin
|
||||
+IMPORTS = advapi32 user32
|
||||
+
|
||||
+C_SRCS = \
|
||||
@@ -44,7 +44,7 @@ index 0000000..be9434b
|
||||
+RC_SRCS = runas.rc
|
||||
diff --git a/programs/runas/runas.c b/programs/runas/runas.c
|
||||
new file mode 100644
|
||||
index 0000000..8e96aff
|
||||
index 0000000000..412755afa0
|
||||
--- /dev/null
|
||||
+++ b/programs/runas/runas.c
|
||||
@@ -0,0 +1,214 @@
|
||||
@@ -69,7 +69,7 @@ index 0000000..8e96aff
|
||||
+ */
|
||||
+
|
||||
+#include <windows.h>
|
||||
+#include <wine/unicode.h>
|
||||
+#include <wchar.h>
|
||||
+#include <wine/debug.h>
|
||||
+
|
||||
+#include "runas.h"
|
||||
@@ -153,10 +153,10 @@ index 0000000..8e96aff
|
||||
+
|
||||
+static WCHAR *starts_with(WCHAR *str, const WCHAR *start)
|
||||
+{
|
||||
+ DWORD start_len = strlenW(start);
|
||||
+ if (strlenW(str) < start_len)
|
||||
+ DWORD start_len = lstrlenW(start);
|
||||
+ if (lstrlenW(str) < start_len)
|
||||
+ return NULL;
|
||||
+ if (strncmpW(str, start, start_len))
|
||||
+ if (wcsncmp(str, start, start_len))
|
||||
+ return NULL;
|
||||
+ return str + start_len;
|
||||
+}
|
||||
@@ -176,8 +176,8 @@ index 0000000..8e96aff
|
||||
+ WCHAR *arg;
|
||||
+
|
||||
+ if ((arg = starts_with(argv[i], trustlevelW)))
|
||||
+ cmd->trustlevel = strtoulW(arg, NULL, 0);
|
||||
+ else if (!strcmpW(argv[i], showtrustlevelsW))
|
||||
+ cmd->trustlevel = wcstoul(arg, NULL, 0);
|
||||
+ else if (!lstrcmpW(argv[i], showtrustlevelsW))
|
||||
+ show_trustlevels();
|
||||
+ else
|
||||
+ WINE_FIXME("Ignoring parameter %s\n", wine_dbgstr_w(argv[i]));
|
||||
@@ -264,7 +264,7 @@ index 0000000..8e96aff
|
||||
+}
|
||||
diff --git a/programs/runas/runas.h b/programs/runas/runas.h
|
||||
new file mode 100644
|
||||
index 0000000..40599a3
|
||||
index 0000000000..40599a3b33
|
||||
--- /dev/null
|
||||
+++ b/programs/runas/runas.h
|
||||
@@ -0,0 +1,26 @@
|
||||
@@ -296,7 +296,7 @@ index 0000000..40599a3
|
||||
+#define STRING_START_ERROR 104
|
||||
diff --git a/programs/runas/runas.rc b/programs/runas/runas.rc
|
||||
new file mode 100644
|
||||
index 0000000..f9297a4
|
||||
index 0000000000..f9297a4479
|
||||
--- /dev/null
|
||||
+++ b/programs/runas/runas.rc
|
||||
@@ -0,0 +1,39 @@
|
||||
@@ -340,5 +340,5 @@ index 0000000..f9297a4
|
||||
+ %2!u!: %3\n"
|
||||
+}
|
||||
--
|
||||
2.7.4
|
||||
2.23.0.rc1
|
||||
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user