Compare commits

..

115 Commits
v4.6 ... v4.12

Author SHA1 Message Date
Alistair Leslie-Hughes
4babcaf231 Release v4.12 2019-07-06 17:50:06 +10:00
Alistair Leslie-Hughes
eba1e9b28a Rebase against 8c34add3bd747d8ff267974de67880b7eb50bc8d 2019-07-06 15:21:16 +10:00
Alistair Leslie-Hughes
52076762ec Rebase against 201d13a3c31131f204f89d61be37bf75d58dc6dd 2019-07-05 08:25:41 +10:00
Alistair Leslie-Hughes
e1bfd97e2b Reenabled d3dx9_36-DXTn patchset 2019-07-04 10:38:41 +10:00
Alistair Leslie-Hughes
ca8ae3e929 Rebase against 436fb03a87ae6dcbbbe149e401942b7eb8369f51 2019-07-03 09:33:31 +10:00
Alistair Leslie-Hughes
c08046e1cc Rebase against 95be042be3f116db38eb4a255c2667a6b46fcc1e 2019-07-02 08:32:28 +10:00
Alistair Leslie-Hughes
53dad92c83 Added loader-KeyboardLayouts patchset 2019-07-01 10:41:41 +10:00
Alistair Leslie-Hughes
82c59d7eca Added user32-LoadKeyboardLayoutEx patchset 2019-07-01 09:19:46 +10:00
Alistair Leslie-Hughes
507cb29933 Added kernel32-SetProcessDEPPolicy patchset 2019-07-01 08:26:17 +10:00
Alistair Leslie-Hughes
dff74f4169 Added wined3d-unset-flip-gdi patchset 2019-07-01 08:25:21 +10:00
Alistair Leslie-Hughes
292e3c87d9 Added shlwapi-UrlCanonicalize patchset 2019-07-01 08:25:04 +10:00
Alistair Leslie-Hughes
fbb8eac819 Rebase against 90a1e5d943724f8cb5e51fe806cb38ce6c98c4c1 2019-06-28 19:46:18 +10:00
Alistair Leslie-Hughes
41d6d5f39a Updated wined3d-SWVP-shaders patchset 2019-06-28 19:32:50 +10:00
Alistair Leslie-Hughes
ca67426420 Rebase against 6d417f7890ee94dd17acc18eb2ef81f152dd0ed0 2019-06-28 08:38:47 +10:00
Alistair Leslie-Hughes
3ad0475779 Rebase against 6e9746158030c4a8f876bf411e598e2b42ff1032 2019-06-27 09:06:23 +10:00
Alistair Leslie-Hughes
fad0c725ae Rebase against 887a57fadd00b39b266b421fe1a04ab09e0d917d 2019-06-26 12:57:43 +10:00
Alistair Leslie-Hughes
be41345d31 Rebase against d83b71ebfdfe83704c313d7c11e8c87c9a8b0419 2019-06-25 08:22:06 +10:00
Alistair Leslie-Hughes
e6f1cafdd8 Release v4.11 2019-06-22 11:32:30 +10:00
Alistair Leslie-Hughes
79ed5e86aa Rebase against 07afb240a87d097c83ca5263c61145a170894a22 2019-06-22 11:06:58 +10:00
Alistair Leslie-Hughes
3bba693408 Added mshtml-TranslateAccelerator patchset 2019-06-21 11:01:13 +10:00
Alistair Leslie-Hughes
be5814e428 Rebase against cce8074aa9fb2191faba25ce7fd24e2678d3bd17 2019-06-21 09:51:08 +10:00
Alistair Leslie-Hughes
ed630b8146 Updated kernel32-PE_Loader_Fixes patchset
Thanks Paul.
2019-06-20 09:10:31 +10:00
Alistair Leslie-Hughes
11194ea339 Rebase against 48f93bc3290596b8da4455496fa88cd13ea6f3c9 2019-06-20 08:28:26 +10:00
Alistair Leslie-Hughes
694f513d71 Rebase against 1bc9c4fdb2e6c2762105c14cdafb7d4ea3370625 2019-06-19 21:05:55 +10:00
Alistair Leslie-Hughes
b5055c0b1b Rebase against 4aa7fbe0561e6a27f098a05a63c5a7d12397e678 2019-06-18 09:07:13 +10:00
Alistair Leslie-Hughes
e07b0fa042 Disabled setupapi-Display_Device patchset
This patchset need to be revisited since it causing a stack
overflow after the improved EnumDisplayDevicesW patches
were accepted.
2019-06-14 19:22:45 +10:00
Alistair Leslie-Hughes
e7110e5153 Rebase against c13351c05af43aa542938e0c0935b154a8166905 2019-06-14 09:36:53 +10:00
Alistair Leslie-Hughes
e2fa6bd9c0 Rebase against 83ca9a95de80083d906a2aeb5d1e5ca2ed611199 2019-06-12 08:31:14 +10:00
Alistair Leslie-Hughes
ed9681d9df Release v4.10 2019-06-11 09:23:11 +10:00
Alistair Leslie-Hughes
1196bcb86b Updated wined3d-SWVP-shaders patchset 2019-06-11 09:19:17 +10:00
Alistair Leslie-Hughes
9afb244a8e Rebase against 78f74446b9806f63a27c2d643b8e29156b5bdcbe 2019-06-11 09:17:17 +10:00
Alistair Leslie-Hughes
5681cd5466 Added dinput-SetActionMap-genre patchset 2019-06-07 11:33:47 +10:00
Alistair Leslie-Hughes
1d3c799e6f Added ntdll-ext4-case-folder patchset 2019-06-07 10:53:43 +10:00
Alistair Leslie-Hughes
a49aa40ac8 Rebase against 48a74277f5f9e0c87d8c01457236a89d94cb71d3 2019-06-07 08:52:10 +10:00
Alistair Leslie-Hughes
1998c0570d Rebase against 4d5c874f42e27ac992f361c71490985d7553571a 2019-06-06 08:56:13 +10:00
Alistair Leslie-Hughes
245fc7913d Updated wined3d-Dual_Source_Blending patchset
Fixes a regression introduced in 3287f0fc9b
2019-06-05 10:23:45 +10:00
Alistair Leslie-Hughes
a1afc6f151 Rebase against 7d77d330a5b60be918dbf17d9d9ca357d93bff29 2019-06-05 09:35:37 +10:00
Alistair Leslie-Hughes
3287f0fc9b Rebase against c92fddae8661233e7699e1914987f0cc4caa8217 2019-06-04 09:10:22 +10:00
Alistair Leslie-Hughes
671295089e Updated user32-msgbox-Support-WM_COPY-mesg patchset
Thanks Gabriel Ivăncescu
2019-06-01 14:50:56 +10:00
Zebediah Figura
197e08b441 Rebase against 1d9a3f6d12322891a2af4aadd66a92ea66479233. 2019-05-30 22:27:25 -05:00
Alistair Leslie-Hughes
cd1862609a Updated tdll-Junction_Points patchset 2019-05-30 11:43:08 +10:00
Alistair Leslie-Hughes
8725e273cc Rebase against 6d05fae6f7ebab83a2f1c6621d9619bbe91833fd 2019-05-29 09:41:06 +10:00
Alistair Leslie-Hughes
b9204d93c9 Rebase against 3139727a97a91b91e74d57ec97a8c19b0093b68e 2019-05-28 08:31:07 +10:00
Alistair Leslie-Hughes
e1259ef094 Drop ddraw-Fix_Typos patchset
This is never going to accepted upstream and doesn't add
any benifit to staging.
2019-05-27 10:52:34 +10:00
Alistair Leslie-Hughes
bccec28691 Drop wined3d-Restore-DirectX10-Support patchset
The nVidia Legacy driver hasn't been updated in nearly a year
and is unlikely to see another update.

Use the nouveau driver.
2019-05-27 10:42:34 +10:00
Alistair Leslie-Hughes
f25c0ce411 Updated libs-Debug_Channel patchset
Thanks Derek Lesho.
2019-05-27 09:32:00 +10:00
Alistair Leslie-Hughes
7fd92efae8 Release v4.9 2019-05-26 10:26:29 +10:00
Zebediah Figura
968a9068f4 winebuild-Fake_Dlls: Also change fake DLL syscall thunks.
Thanks to Andrew Wesie.
2019-05-25 15:17:50 -05:00
Zebediah Figura
5e5b163eba winebuild-Fake_Dlls: another fixup
user_shared_data_init() copies the internal data to the external data, but at the same time kernel32 makes calls down to ntdll before this happens, so we need both of these.
2019-05-25 11:44:35 -05:00
Zebediah Figura
5bc08f5e70 winebuild-Fake_Dlls: fixup 2019-05-25 00:04:40 -05:00
Zebediah Figura
eb91fab43e ntdll-Junction_Points: Fix for bug 47169.
From Erich E. Hoover.
2019-05-24 19:29:03 -05:00
Zebediah Figura
5b59788752 winebuild-Fake_Dlls: Change layout of system call thunks.
Based on patches by Fabian Maurer.
2019-05-24 19:20:28 -05:00
Alistair Leslie-Hughes
5634d119e0 Rebase against 27bf52d12c0eb13ec797a5d81177954faac00fa4 2019-05-24 08:57:32 +10:00
Alistair Leslie-Hughes
52f92a42de Rebase against 9cfe6094773929d9dd61db51da094324337ecab0 2019-05-23 09:01:49 +10:00
Alistair Leslie-Hughes
6f185a694c Rebase against 6a610a325809d47f48bc72f3a757e1a62b193ea8 2019-05-22 08:24:22 +10:00
Alistair Leslie-Hughes
0bb3121273 Updated bcrypt-BCryptSecretAgreement patchset 2019-05-21 08:47:26 +10:00
Alistair Leslie-Hughes
77619384a4 Rebase against 21ae9ba1ba8ddba3ba49e916ef2b7fbd5ae9713d 2019-05-21 08:40:13 +10:00
Zebediah Figura
77ef8ff7ef Rebase against 61aea5a9879f41224022d4775cce28d28618ea89. 2019-05-17 16:51:57 -05:00
Alistair Leslie-Hughes
831b1f895e Updated include-macos-compile patchset 2019-05-17 10:45:44 +10:00
Alistair Leslie-Hughes
071fe01910 Rebase against 07e249e431c5009fa6ab8d274b4a8fe62a286358 2019-05-17 09:18:43 +10:00
Alistair Leslie-Hughes
1b7ebd3bb8 Rebase against 042e0625695a82aa71ddf825c693680d5d8aa0dd 2019-05-16 09:08:56 +10:00
Alistair Leslie-Hughes
6ce73c283d Rebase against 99114803b80f6e687f1d4ed11e0808b821cdbf22 2019-05-15 09:26:21 +10:00
Alistair Leslie-Hughes
f3e2363b52 Rebase against 40fef0fb71b079c1bf9667d80384cc43ec7f11fd 2019-05-14 08:20:42 +10:00
Alistair Leslie-Hughes
6e49a945cf Added comctl32-alpha-bitmaps patchset 2019-05-13 08:24:17 +10:00
Alistair Leslie-Hughes
92cc7818b2 Updated ntdll-Junction_Points patchset 2019-05-13 08:21:41 +10:00
Alistair Leslie-Hughes
3134cc0b2d Release v4.8 2019-05-11 11:27:45 +10:00
Alistair Leslie-Hughes
1308207a63 Rebase against aaf9c833ee1b9dca8cffcb2a60c96093fdd36405 2019-05-11 11:12:22 +10:00
Alistair Leslie-Hughes
082a898ad4 Updated ntdll-Junction_Points patchset 2019-05-10 09:55:20 +10:00
Alistair Leslie-Hughes
992845eae7 Rebase against 9bcaf9769c5ae834f0f6e8fe2b28a85b286833b0 2019-05-10 08:53:33 +10:00
Alistair Leslie-Hughes
247e77f2e8 Rebase against 08a899d433e5b638b5cc18d5c81330dea38d7c04 2019-05-09 10:22:04 +10:00
Alistair Leslie-Hughes
76004cd4c4 Updated winex11.drv-mouse-coorrds patchset 2019-05-09 08:49:02 +10:00
Zebediah Figura
770269393f Rebase against 622422e67bfd9da487102aee4ca42681a24a8e65. 2019-05-07 19:52:35 -05:00
Alistair Leslie-Hughes
29db3393bc Updated dinput-joy-directX3 patchset 2019-05-07 09:50:41 +10:00
Alistair Leslie-Hughes
b105021410 Rebase against 10dcee21c4b28b7f1cedc9ade01c09616521b628 2019-05-07 09:41:02 +10:00
Alistair Leslie-Hughes
5f18c8565c Remove winepulse-PulseAudio_Support_old patchset 2019-05-06 20:41:25 +10:00
Alistair Leslie-Hughes
f0f856a7ea Removed wined3d-Improved-RCP_Support patchset
This caused a major regression.
2019-05-06 16:26:21 +10:00
Alistair Leslie-Hughes
7332164d55 Remove wined3d-Interpolation_Modifiers patchset
This is fixed upstream for some time.
2019-05-06 16:23:48 +10:00
Alistair Leslie-Hughes
0a153ac1a0 Remove d3d11-dynamic-cpu-access patchset
This caused major regression and is unlikely to be updated to
work correctly.  Using the nouveau driver it a better solution then
trying to stay with the Legacy nVidia binary driver.
2019-05-06 15:08:08 +10:00
Zebediah Figura
90ef849e7b ntdll-RtlCreateUserThread: Add dependency on winebuild-Fake_Dlls.
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=47124
2019-05-05 00:30:54 -05:00
Zebediah Figura
9bfe1fe1f2 server-Desktop_Refcount: Swap dependency with ws2_32-WSACleanup.
To avoid a circular dependency.
2019-05-05 00:24:28 -05:00
Zebediah Figura
b1997e35c9 ws2_32-WSACleanup: Restore dependency on server-Desktop_Refcount.
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=47124
2019-05-04 23:52:03 -05:00
Zebediah Figura
8cbbf850d1 Rebase against b479382737f9ee110bc61b1dd765c5b81d56c900. 2019-05-03 23:09:43 -05:00
Alistair Leslie-Hughes
dc2e2153f3 Added dinput-joy-directX3 patchset 2019-05-03 11:57:31 +10:00
Alistair Leslie-Hughes
d6ab62c2be Added dinput-joy-mappings patchset 2019-05-03 10:37:32 +10:00
Alistair Leslie-Hughes
a3faa8ac8a Updated ddraw-Rendering_Targets patchset 2019-05-03 09:56:59 +10:00
Alistair Leslie-Hughes
c9f414b9e7 Rebase against 0ece679210897774b3b43e483658fe6511a84676 2019-05-03 09:40:08 +10:00
Alistair Leslie-Hughes
57370fd9ae Rebase against d48ffbdc014954907d3280a3b53eb9b478b10195 2019-05-02 08:42:59 +10:00
Alistair Leslie-Hughes
7d9b7bbdf5 Updated ntdll-Junction_Points patchset 2019-05-01 08:50:08 +10:00
Alistair Leslie-Hughes
05f918ddb4 Rebase against 8039941c52758113955d376bd7b6b6e1e5b5f76c 2019-05-01 08:14:20 +10:00
Alistair Leslie-Hughes
133bed10d3 Rebase against 5bd1b2652c844a2522131bd26feb95231f718986 2019-04-30 08:23:23 +10:00
Alistair Leslie-Hughes
00b434ec7f Added ntdll-aarch64-TEB patchset 2019-04-29 11:06:42 +10:00
Alistair Leslie-Hughes
8f33477760 Updated server-Desktop_Refcount patchset
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=47091
2019-04-29 05:44:15 +10:00
Zebediah Figura
c48811407e eventfd_synchronization: Fix support for directory change notification objects.
I had misread the code at first and was under the impression these were also
pseudo-fds, but they are not, they are true fds and asyncs just manually
tinker with their signaled status.
2019-04-27 10:22:09 -05:00
Alistair Leslie-Hughes
547e7c81fb Release v4.7 2019-04-27 12:56:43 +10:00
Zebediah Figura
99d6f16c4e ntdll-SystemExtendedProcessInformation: Restore mistakenly deleted patchset. 2019-04-26 20:35:04 -05:00
Zebediah Figura
2e99ff1d6e Rebase against 6e3f39a4c59fd529c7b532dcde1bb8c37c467b35. 2019-04-26 16:21:57 -05:00
Alistair Leslie-Hughes
a9282e6425 Added gdi32-D3DKMTQueryStatistics patchset 2019-04-26 13:36:39 +10:00
Alistair Leslie-Hughes
63eedc8289 Updated ntdll-Junction_Points patchset 2019-04-26 10:01:46 +10:00
Alistair Leslie-Hughes
fea87f9a23 Rebase against 85826158947637f790b68742a5448c483f47234f 2019-04-26 09:42:11 +10:00
Alistair Leslie-Hughes
f883c66e40 Updated server-Desktop_Refcount patchset 2019-04-25 18:07:55 +10:00
Zebediah Figura
d8568c947a eventfd_synchronization: Handle directory change notification objects. 2019-04-24 23:57:07 -05:00
Zebediah Figura
f61fe9f16b Rebase against 9b6d198a3c7c8a02aa69c0d3d11829712e9778a6. 2019-04-24 23:57:07 -05:00
Alistair Leslie-Hughes
4969e2759b Updated ntdll-Junction_Points patchset 2019-04-24 11:20:07 +10:00
Alistair Leslie-Hughes
4423ea716e Removed kernel32-CreateSymbolicLink patchset.
The updated ntdll-Junction_Points has replace this patchset.

Thanks for testing Gijs Vermeulen.
2019-04-24 10:24:20 +10:00
Alistair Leslie-Hughes
38c1f5e4d5 Rebase against 75aa4ab16b03a11464ab0d3e4c4cfbff0180c269 2019-04-24 10:09:47 +10:00
Alistair Leslie-Hughes
4e7071e4f1 Updated server-Desktop_Refcount patchset 2019-04-23 16:02:50 +10:00
Alistair Leslie-Hughes
a0708adf42 Updated ntdll-Junction_Points patchset
Changed dependencies to allow ntdll-Junction_Points to be applied
on top of wine.
2019-04-23 11:08:07 +10:00
Alistair Leslie-Hughes
9e53a45319 Added winex11.drv-Query_server_position patchset 2019-04-23 10:40:25 +10:00
Alistair Leslie-Hughes
7cc69d7707 Added winex11.drv-mouse-coorrds patchset 2019-04-23 10:09:57 +10:00
Alistair Leslie-Hughes
39738f05d6 Added windowscodecs-png-network patchset 2019-04-23 10:03:55 +10:00
Alistair Leslie-Hughes
477e9faba2 Rebase against 9d75caf4e1deea0ec8d5ad3f829e7218bc1e3c16 2019-04-23 09:44:01 +10:00
Alistair Leslie-Hughes
6f1e25e1c0 Rebase against 9d7d68747b06a03893df99c4beea36b762508603 2019-04-20 18:45:05 +10:00
Alistair Leslie-Hughes
36e84f2951 Updated ntdll-Junction_Points patchset 2019-04-16 11:14:52 +10:00
Alistair Leslie-Hughes
bfd8af12aa Rebase against f9301c2b66450a1cdd986e9052fcaa76535ba8b7 2019-04-16 09:30:17 +10:00
Alistair Leslie-Hughes
cbb09031a6 Added combase-GetRestrictedErrorInfo patchset 2019-04-15 09:24:55 +10:00
308 changed files with 9702 additions and 11905 deletions

View File

@@ -1,25 +0,0 @@
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.
---
dlls/amstream/mediastreamfilter.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/dlls/amstream/mediastreamfilter.c b/dlls/amstream/mediastreamfilter.c
index 5abcb2f..a7ff6e8 100644
--- a/dlls/amstream/mediastreamfilter.c
+++ b/dlls/amstream/mediastreamfilter.c
@@ -42,7 +42,7 @@ typedef struct {
static inline IMediaStreamFilterImpl *impl_from_IMediaStreamFilter(IMediaStreamFilter *iface)
{
- return CONTAINING_RECORD(iface, IMediaStreamFilterImpl, filter);
+ return CONTAINING_RECORD((IBaseFilter *)iface, IMediaStreamFilterImpl, filter.IBaseFilter_iface);
}
/*** IUnknown methods ***/
--
2.7.4

View File

@@ -1,4 +1,4 @@
From 2aeb3a9e57142c3f4ff86cb81b206bdbc146552d Mon Sep 17 00:00:00 2001
From c8f9b712a946fac79af1290d14c1d31d0a8f0c10 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,17 +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/device.c | 2 +-
dlls/d2d1/geometry.c | 6 +++---
dlls/d2d1/hwnd_render_target.c | 2 +-
dlls/d2d1/state_block.c | 2 +-
7 files changed, 12 insertions(+), 12 deletions(-)
6 files changed, 11 insertions(+), 11 deletions(-)
diff --git a/dlls/d2d1/bitmap.c b/dlls/d2d1/bitmap.c
index c0aef3c..8a4b517 100644
index 39e81192f77..52810211701 100644
--- a/dlls/d2d1/bitmap.c
+++ b/dlls/d2d1/bitmap.c
@@ -626,5 +626,5 @@ struct d2d_bitmap *unsafe_impl_from_ID2D1Bitmap(ID2D1Bitmap *iface)
@@ -623,5 +623,5 @@ struct d2d_bitmap *unsafe_impl_from_ID2D1Bitmap(ID2D1Bitmap *iface)
if (!iface)
return NULL;
assert(iface->lpVtbl == (ID2D1BitmapVtbl *)&d2d_bitmap_vtbl);
@@ -25,10 +24,10 @@ index c0aef3c..8a4b517 100644
+ return CONTAINING_RECORD((ID2D1Bitmap1*)iface, struct d2d_bitmap, ID2D1Bitmap1_iface);
}
diff --git a/dlls/d2d1/brush.c b/dlls/d2d1/brush.c
index 9c73ae1..a748669 100644
index 21abf1456ab..1030884c2b7 100644
--- a/dlls/d2d1/brush.c
+++ b/dlls/d2d1/brush.c
@@ -256,7 +256,7 @@ static void d2d_brush_init(struct d2d_brush *brush, ID2D1Factory *factory,
@@ -253,7 +253,7 @@ static void d2d_brush_init(struct d2d_brush *brush, ID2D1Factory *factory,
static inline struct d2d_brush *impl_from_ID2D1SolidColorBrush(ID2D1SolidColorBrush *iface)
{
@@ -37,7 +36,7 @@ index 9c73ae1..a748669 100644
}
static HRESULT STDMETHODCALLTYPE d2d_solid_color_brush_QueryInterface(ID2D1SolidColorBrush *iface,
@@ -399,7 +399,7 @@ HRESULT d2d_solid_color_brush_create(ID2D1Factory *factory, const D2D1_COLOR_F *
@@ -396,7 +396,7 @@ HRESULT d2d_solid_color_brush_create(ID2D1Factory *factory, const D2D1_COLOR_F *
static inline struct d2d_brush *impl_from_ID2D1LinearGradientBrush(ID2D1LinearGradientBrush *iface)
{
@@ -46,7 +45,7 @@ index 9c73ae1..a748669 100644
}
static HRESULT STDMETHODCALLTYPE d2d_linear_gradient_brush_QueryInterface(ID2D1LinearGradientBrush *iface,
@@ -586,7 +586,7 @@ HRESULT d2d_linear_gradient_brush_create(ID2D1Factory *factory,
@@ -583,7 +583,7 @@ HRESULT d2d_linear_gradient_brush_create(ID2D1Factory *factory,
static inline struct d2d_brush *impl_from_ID2D1RadialGradientBrush(ID2D1RadialGradientBrush *iface)
{
@@ -55,7 +54,7 @@ index 9c73ae1..a748669 100644
}
static HRESULT STDMETHODCALLTYPE d2d_radial_gradient_brush_QueryInterface(ID2D1RadialGradientBrush *iface,
@@ -818,7 +818,7 @@ HRESULT d2d_radial_gradient_brush_create(ID2D1Factory *factory,
@@ -815,7 +815,7 @@ HRESULT d2d_radial_gradient_brush_create(ID2D1Factory *factory,
static inline struct d2d_brush *impl_from_ID2D1BitmapBrush1(ID2D1BitmapBrush1 *iface)
{
@@ -65,10 +64,10 @@ index 9c73ae1..a748669 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 b095008..6030826 100644
index 310c5412967..9d9168dc8ee 100644
--- a/dlls/d2d1/dc_render_target.c
+++ b/dlls/d2d1/dc_render_target.c
@@ -26,7 +26,7 @@ WINE_DEFAULT_DEBUG_CHANNEL(d2d);
@@ -23,7 +23,7 @@ WINE_DEFAULT_DEBUG_CHANNEL(d2d);
static inline struct d2d_dc_render_target *impl_from_IUnknown(IUnknown *iface)
{
@@ -77,24 +76,11 @@ index b095008..6030826 100644
}
static HRESULT d2d_dc_render_target_present(IUnknown *outer_unknown)
diff --git a/dlls/d2d1/device.c b/dlls/d2d1/device.c
index 45b2258..bf32c23 100644
--- a/dlls/d2d1/device.c
+++ b/dlls/d2d1/device.c
@@ -207,7 +207,7 @@ static inline struct d2d_device_context *impl_from_ID2D1DeviceContext(ID2D1Devic
static inline struct d2d_device_context *impl_from_ID2D1RenderTarget(ID2D1RenderTarget *iface)
{
- return CONTAINING_RECORD(iface, struct d2d_device_context, ID2D1DeviceContext_iface);
+ return CONTAINING_RECORD((ID2D1DeviceContext*)iface, struct d2d_device_context, ID2D1DeviceContext_iface);
}
static HRESULT STDMETHODCALLTYPE d2d_device_context_inner_QueryInterface(IUnknown *iface, REFIID iid, void **out)
diff --git a/dlls/d2d1/geometry.c b/dlls/d2d1/geometry.c
index 421ba2b..f8db51c 100644
index 91ce32c28e7..da4a1f2d3ee 100644
--- a/dlls/d2d1/geometry.c
+++ b/dlls/d2d1/geometry.c
@@ -2987,7 +2987,7 @@ static const struct ID2D1GeometrySinkVtbl d2d_geometry_sink_vtbl =
@@ -2982,7 +2982,7 @@ static const struct ID2D1GeometrySinkVtbl d2d_geometry_sink_vtbl =
static inline struct d2d_geometry *impl_from_ID2D1PathGeometry(ID2D1PathGeometry *iface)
{
@@ -103,7 +89,7 @@ index 421ba2b..f8db51c 100644
}
static HRESULT STDMETHODCALLTYPE d2d_path_geometry_QueryInterface(ID2D1PathGeometry *iface, REFIID iid, void **out)
@@ -3503,7 +3503,7 @@ void d2d_path_geometry_init(struct d2d_geometry *geometry, ID2D1Factory *factory
@@ -3498,7 +3498,7 @@ void d2d_path_geometry_init(struct d2d_geometry *geometry, ID2D1Factory *factory
static inline struct d2d_geometry *impl_from_ID2D1RectangleGeometry(ID2D1RectangleGeometry *iface)
{
@@ -112,7 +98,7 @@ index 421ba2b..f8db51c 100644
}
static HRESULT STDMETHODCALLTYPE d2d_rectangle_geometry_QueryInterface(ID2D1RectangleGeometry *iface,
@@ -3838,7 +3838,7 @@ fail:
@@ -3833,7 +3833,7 @@ fail:
static inline struct d2d_geometry *impl_from_ID2D1TransformedGeometry(ID2D1TransformedGeometry *iface)
{
@@ -122,10 +108,10 @@ index 421ba2b..f8db51c 100644
static HRESULT STDMETHODCALLTYPE d2d_transformed_geometry_QueryInterface(ID2D1TransformedGeometry *iface,
diff --git a/dlls/d2d1/hwnd_render_target.c b/dlls/d2d1/hwnd_render_target.c
index d0b9695..429561e 100644
index 625f101eaa7..f3626c42cee 100644
--- a/dlls/d2d1/hwnd_render_target.c
+++ b/dlls/d2d1/hwnd_render_target.c
@@ -26,7 +26,7 @@ WINE_DEFAULT_DEBUG_CHANNEL(d2d);
@@ -23,7 +23,7 @@ WINE_DEFAULT_DEBUG_CHANNEL(d2d);
static inline struct d2d_hwnd_render_target *impl_from_IUnknown(IUnknown *iface)
{
@@ -135,10 +121,10 @@ index d0b9695..429561e 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 b15384e..4e7e34b 100644
index e3175146a64..b66752983e6 100644
--- a/dlls/d2d1/state_block.c
+++ b/dlls/d2d1/state_block.c
@@ -190,5 +190,5 @@ struct d2d_state_block *unsafe_impl_from_ID2D1DrawingStateBlock(ID2D1DrawingStat
@@ -187,5 +187,5 @@ struct d2d_state_block *unsafe_impl_from_ID2D1DrawingStateBlock(ID2D1DrawingStat
if (!iface)
return NULL;
assert(iface->lpVtbl == (ID2D1DrawingStateBlockVtbl *)&d2d_state_block_vtbl);
@@ -146,5 +132,5 @@ index b15384e..4e7e34b 100644
+ return CONTAINING_RECORD((ID2D1DrawingStateBlock1*)iface, struct d2d_state_block, ID2D1DrawingStateBlock1_iface);
}
--
1.9.1
2.20.1

View File

@@ -1,25 +0,0 @@
From b4586e37df817f205c8bebe319b4765dea5c62d5 Mon Sep 17 00:00:00 2001
From: Sebastian Lackner <sebastian@fds-team.de>
Date: Sun, 24 Sep 2017 19:21:06 +0200
Subject: evr: Avoid implicit cast of interface pointer.
---
dlls/evr/evr.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/dlls/evr/evr.c b/dlls/evr/evr.c
index c2d2933211e..5533f38a649 100644
--- a/dlls/evr/evr.c
+++ b/dlls/evr/evr.c
@@ -136,7 +136,7 @@ static const IUnknownVtbl evr_inner_vtbl =
static inline evr_filter *impl_from_IBaseFilter(IBaseFilter *iface)
{
- return CONTAINING_RECORD(iface, evr_filter, filter);
+ return CONTAINING_RECORD(iface, evr_filter, filter.IBaseFilter_iface);
}
static HRESULT WINAPI filter_QueryInterface(IBaseFilter *iface, REFIID riid, void **ppv)
--
2.14.1

View File

@@ -1,19 +1,18 @@
From 2a1064c5f90beac2bd709ab5d1c454c90a16189b Mon Sep 17 00:00:00 2001
From 3c1f5962482e7acf531f57f49d923d9c4e5278b1 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Michael=20M=C3=BCller?= <michael@fds-team.de>
Date: Fri, 4 Aug 2017 02:51:57 +0200
Subject: advapi32: Implement CreateRestrictedToken.
Subject: [PATCH] advapi32: Implement CreateRestrictedToken.
---
dlls/advapi32/security.c | 88 +++++++++++++++++++++++++++++++++++-------
dlls/advapi32/tests/security.c | 88 +++++++++++++++++++++++++++++++++++++++---
2 files changed, 157 insertions(+), 19 deletions(-)
dlls/kernelbase/security.c | 103 ++++++++++++++++++++++++++++++-------
1 file changed, 84 insertions(+), 19 deletions(-)
diff --git a/dlls/advapi32/security.c b/dlls/advapi32/security.c
index 82bb6689d43..c531e45c9a0 100644
--- a/dlls/advapi32/security.c
+++ b/dlls/advapi32/security.c
@@ -840,6 +840,60 @@ BOOL WINAPI SetThreadToken(PHANDLE thread, HANDLE token)
ThreadImpersonationToken, &token, sizeof token ));
diff --git a/dlls/kernelbase/security.c b/dlls/kernelbase/security.c
index 2e75e81ed77..97f6ee6a2fd 100644
--- a/dlls/kernelbase/security.c
+++ b/dlls/kernelbase/security.c
@@ -592,31 +592,96 @@ exit:
return ret;
}
+static BOOL allocate_groups(TOKEN_GROUPS **groups_ret, SID_AND_ATTRIBUTES *sids, DWORD count)
@@ -71,11 +70,16 @@ index 82bb6689d43..c531e45c9a0 100644
+}
+
/*************************************************************************
* CreateRestrictedToken [ADVAPI32.@]
*
@@ -871,25 +925,33 @@ BOOL WINAPI CreateRestrictedToken(
PSID_AND_ATTRIBUTES restrictSids,
PHANDLE newToken)
* CreateRestrictedToken (kernelbase.@)
*/
-BOOL WINAPI CreateRestrictedToken( HANDLE token, DWORD flags,
- DWORD disable_count, PSID_AND_ATTRIBUTES disable_sids,
- DWORD delete_count, PLUID_AND_ATTRIBUTES delete_privs,
- DWORD restrict_count, PSID_AND_ATTRIBUTES restrict_sids, PHANDLE ret )
+BOOL WINAPI CreateRestrictedToken( HANDLE baseToken, DWORD flags,
+ DWORD nDisableSids, PSID_AND_ATTRIBUTES disableSids,
+ DWORD nDeletePrivs, PLUID_AND_ATTRIBUTES deletePrivs,
+ DWORD nRestrictSids, PSID_AND_ATTRIBUTES restrictSids, PHANDLE newToken )
{
- TOKEN_TYPE type;
- SECURITY_IMPERSONATION_LEVEL level = SecurityAnonymous;
@@ -86,21 +90,14 @@ index 82bb6689d43..c531e45c9a0 100644
+ BOOL ret = FALSE;
- FIXME("(%p, 0x%x, %u, %p, %u, %p, %u, %p, %p): stub\n",
- token, flags, disable_count, disable_sids, delete_count, delete_privs,
- restrict_count, restrict_sids, ret );
+ TRACE("(%p, 0x%x, %u, %p, %u, %p, %u, %p, %p)\n",
baseToken, flags, nDisableSids, disableSids,
nDeletePrivs, deletePrivs,
nRestrictSids, restrictSids,
newToken);
- size = sizeof(type);
- if (!GetTokenInformation( baseToken, TokenType, &type, size, &size )) return FALSE;
- if (type == TokenImpersonation)
- {
- size = sizeof(level);
- if (!GetTokenInformation( baseToken, TokenImpersonationLevel, &level, size, &size ))
- return FALSE;
- }
- return DuplicateTokenEx( baseToken, MAXIMUM_ALLOWED, NULL, level, type, newToken );
+ baseToken, flags, nDisableSids, disableSids,
+ nDeletePrivs, deletePrivs,
+ nRestrictSids, restrictSids,
+ newToken);
+
+ if (!allocate_groups(&disable_groups, disableSids, nDisableSids))
+ goto done;
+
@@ -117,155 +114,19 @@ index 82bb6689d43..c531e45c9a0 100644
+ heap_free(delete_privs);
+ heap_free(restrict_sids);
+ return ret;
- size = sizeof(type);
- if (!GetTokenInformation( token, TokenType, &type, size, &size )) return FALSE;
- if (type == TokenImpersonation)
- {
- size = sizeof(level);
- if (!GetTokenInformation( token, TokenImpersonationLevel, &level, size, &size ))
- return FALSE;
- }
- return DuplicateTokenEx( token, MAXIMUM_ALLOWED, NULL, level, type, ret );
}
/* ##############################
diff --git a/dlls/advapi32/tests/security.c b/dlls/advapi32/tests/security.c
index a1ecc409b73..0fd41fe82fa 100644
--- a/dlls/advapi32/tests/security.c
+++ b/dlls/advapi32/tests/security.c
@@ -5292,10 +5292,13 @@ static void test_GetUserNameW(void)
static void test_CreateRestrictedToken(void)
{
+ TOKEN_PRIMARY_GROUP *primary_group, *primary_group2;
HANDLE process_token, token, r_token;
PTOKEN_GROUPS token_groups, groups2;
SID_AND_ATTRIBUTES sattr;
SECURITY_IMPERSONATION_LEVEL level;
+ TOKEN_PRIVILEGES *privs;
+ PRIVILEGE_SET privset;
TOKEN_TYPE type;
BOOL is_member;
DWORD size;
@@ -5311,7 +5314,7 @@ static void test_CreateRestrictedToken(void)
ret = OpenProcessToken(GetCurrentProcess(), TOKEN_DUPLICATE|TOKEN_QUERY, &process_token);
ok(ret, "got error %d\n", GetLastError());
- ret = DuplicateTokenEx(process_token, TOKEN_DUPLICATE|TOKEN_ADJUST_GROUPS|TOKEN_QUERY,
+ ret = DuplicateTokenEx(process_token, TOKEN_DUPLICATE|TOKEN_ADJUST_GROUPS|TOKEN_ADJUST_PRIVILEGES|TOKEN_QUERY,
NULL, SecurityImpersonation, TokenImpersonation, &token);
ok(ret, "got error %d\n", GetLastError());
@@ -5342,11 +5345,21 @@ static void test_CreateRestrictedToken(void)
ok(ret, "got error %d\n", GetLastError());
ok(is_member, "not a member\n");
- /* disable a SID in new token */
+ privset.PrivilegeCount = 1;
+ privset.Control = PRIVILEGE_SET_ALL_NECESSARY;
+ ret = LookupPrivilegeValueA(NULL, "SeChangeNotifyPrivilege", &privset.Privilege[0].Luid);
+ ok(ret, "got error %d\n", GetLastError());
+
+ is_member = FALSE;
+ ret = PrivilegeCheck(token, &privset, &is_member);
+ ok(ret, "got error %d\n", GetLastError());
+ ok(is_member, "Expected SeChangeNotifyPrivilege to be enabled\n");
+
+ /* disable a SID and a privilege in new token */
sattr.Sid = token_groups->Groups[i].Sid;
sattr.Attributes = 0;
r_token = NULL;
- ret = pCreateRestrictedToken(token, 0, 1, &sattr, 0, NULL, 0, NULL, &r_token);
+ ret = pCreateRestrictedToken(token, 0, 1, &sattr, 1, &privset.Privilege[0], 0, NULL, &r_token);
ok(ret, "got error %d\n", GetLastError());
if (ret)
@@ -5355,7 +5368,7 @@ static void test_CreateRestrictedToken(void)
is_member = TRUE;
ret = pCheckTokenMembership(r_token, token_groups->Groups[i].Sid, &is_member);
ok(ret, "got error %d\n", GetLastError());
- todo_wine ok(!is_member, "not a member\n");
+ ok(!is_member, "not a member\n");
ret = GetTokenInformation(r_token, TokenGroups, NULL, 0, &size);
ok(!ret && GetLastError() == ERROR_INSUFFICIENT_BUFFER, "got %d with error %d\n",
@@ -5370,9 +5383,9 @@ static void test_CreateRestrictedToken(void)
break;
}
- todo_wine ok(groups2->Groups[j].Attributes & SE_GROUP_USE_FOR_DENY_ONLY,
+ ok(groups2->Groups[j].Attributes & SE_GROUP_USE_FOR_DENY_ONLY,
"got wrong attributes\n");
- todo_wine ok((groups2->Groups[j].Attributes & SE_GROUP_ENABLED) == 0,
+ ok((groups2->Groups[j].Attributes & SE_GROUP_ENABLED) == 0,
"got wrong attributes\n");
HeapFree(GetProcessHeap(), 0, groups2);
@@ -5386,10 +5399,73 @@ static void test_CreateRestrictedToken(void)
ret = GetTokenInformation(r_token, TokenImpersonationLevel, &level, size, &size);
ok(ret, "got error %d\n", GetLastError());
ok(level == SecurityImpersonation, "got level %u\n", type);
+
+ is_member = TRUE;
+ ret = PrivilegeCheck(r_token, &privset, &is_member);
+ ok(ret, "got error %d\n", GetLastError());
+ ok(!is_member, "Expected SeChangeNotifyPrivilege not to be enabled\n");
+
+ ret = GetTokenInformation(r_token, TokenPrivileges, NULL, 0, &size);
+ ok(!ret && GetLastError() == ERROR_INSUFFICIENT_BUFFER, "got %d with error %d\n",
+ ret, GetLastError());
+ privs = HeapAlloc(GetProcessHeap(), 0, size);
+ ret = GetTokenInformation(r_token, TokenPrivileges, privs, size, &size);
+ ok(ret, "got error %d\n", GetLastError());
+
+ is_member = FALSE;
+ for (j = 0; j < privs->PrivilegeCount; j++)
+ {
+ if (RtlEqualLuid(&privs->Privileges[j].Luid, &privset.Privilege[0].Luid))
+ {
+ is_member = TRUE;
+ break;
+ }
+ }
+
+ ok(!is_member, "Expected not to find privilege\n");
+ HeapFree(GetProcessHeap(), 0, privs);
}
HeapFree(GetProcessHeap(), 0, token_groups);
CloseHandle(r_token);
+
+ ret = GetTokenInformation(token, TokenPrimaryGroup, NULL, 0, &size);
+ ok(!ret && GetLastError() == ERROR_INSUFFICIENT_BUFFER, "got %d with error %d\n",
+ ret, GetLastError());
+ primary_group = HeapAlloc(GetProcessHeap(), 0, size);
+ ret = GetTokenInformation(token, TokenPrimaryGroup, primary_group, size, &size);
+ ok(ret, "got error %d\n", GetLastError());
+
+ /* disable primary group */
+ sattr.Sid = primary_group->PrimaryGroup;
+ sattr.Attributes = 0;
+ r_token = NULL;
+ ret = pCreateRestrictedToken(token, 0, 1, &sattr, 0, NULL, 0, NULL, &r_token);
+ ok(ret, "got error %d\n", GetLastError());
+
+ if (ret)
+ {
+ is_member = TRUE;
+ ret = pCheckTokenMembership(r_token, primary_group->PrimaryGroup, &is_member);
+ ok(ret, "got error %d\n", GetLastError());
+ ok(!is_member, "not a member\n");
+
+ ret = GetTokenInformation(r_token, TokenPrimaryGroup, NULL, 0, &size);
+ ok(!ret && GetLastError() == ERROR_INSUFFICIENT_BUFFER, "got %d with error %d\n",
+ ret, GetLastError());
+ primary_group2 = HeapAlloc(GetProcessHeap(), 0, size);
+ ret = GetTokenInformation(r_token, TokenPrimaryGroup, primary_group2, size, &size);
+ ok(ret, "got error %d\n", GetLastError());
+
+ ok(EqualSid(primary_group2->PrimaryGroup, primary_group->PrimaryGroup),
+ "Expected same primary group\n");
+
+ HeapFree(GetProcessHeap(), 0, primary_group2);
+ }
+
+ HeapFree(GetProcessHeap(), 0, primary_group);
+ CloseHandle(r_token);
+
CloseHandle(token);
CloseHandle(process_token);
}
/******************************************************************************
--
2.13.1
2.20.1

View File

@@ -1,95 +0,0 @@
From f0290aad953e988b1a15e214ecfc57f21dc136af Mon Sep 17 00:00:00 2001
From: Qian Hong <qhong@codeweavers.com>
Date: Tue, 28 Apr 2015 23:28:50 +0800
Subject: advapi32/tests: Test prefix and use of TokenPrimaryGroup Sid.
---
dlls/advapi32/tests/security.c | 35 ++++++++++++++++++++++++++++++-----
1 file changed, 30 insertions(+), 5 deletions(-)
diff --git a/dlls/advapi32/tests/security.c b/dlls/advapi32/tests/security.c
index f3fc682..6a716d6 100644
--- a/dlls/advapi32/tests/security.c
+++ b/dlls/advapi32/tests/security.c
@@ -2514,19 +2514,21 @@ static void test_granted_access(HANDLE handle, ACCESS_MASK access,
static void test_process_security(void)
{
BOOL res;
+ PTOKEN_USER user;
PTOKEN_OWNER owner;
PTOKEN_PRIMARY_GROUP group;
- PSID AdminSid = NULL, UsersSid = NULL;
+ PSID AdminSid = NULL, UsersSid = NULL, UserSid = NULL;
PACL Acl = NULL, ThreadAcl = NULL;
SECURITY_DESCRIPTOR *SecurityDescriptor = NULL, *ThreadSecurityDescriptor = NULL;
- char buffer[MAX_PATH];
+ char buffer[MAX_PATH], account[MAX_PATH], domain[MAX_PATH];
PROCESS_INFORMATION info;
STARTUPINFOA startup;
SECURITY_ATTRIBUTES psa, tsa;
HANDLE token, event;
- DWORD size;
+ DWORD size, acc_size, dom_size, ret;
SID_IDENTIFIER_AUTHORITY SIDAuthWorld = { SECURITY_WORLD_SID_AUTHORITY };
PSID EveryoneSid = NULL;
+ SID_NAME_USE use;
Acl = HeapAlloc(GetProcessHeap(), 0, 256);
res = InitializeAcl(Acl, 256, ACL_REVISION);
@@ -2558,7 +2560,8 @@ static void test_process_security(void)
owner = HeapAlloc(GetProcessHeap(), 0, size);
res = GetTokenInformation( token, TokenOwner, owner, size, &size );
ok(res, "GetTokenInformation failed with error %d\n", GetLastError());
- AdminSid = ((TOKEN_OWNER*)owner)->Owner;
+ AdminSid = owner->Owner;
+ test_sid_str(AdminSid);
res = GetTokenInformation( token, TokenPrimaryGroup, NULL, 0, &size );
ok(!res, "Expected failure, got %d\n", res);
@@ -2568,13 +2571,34 @@ static void test_process_security(void)
group = HeapAlloc(GetProcessHeap(), 0, size);
res = GetTokenInformation( token, TokenPrimaryGroup, group, size, &size );
ok(res, "GetTokenInformation failed with error %d\n", GetLastError());
- UsersSid = ((TOKEN_PRIMARY_GROUP*)group)->PrimaryGroup;
+ UsersSid = group->PrimaryGroup;
+ test_sid_str(UsersSid);
+
+ acc_size = sizeof(account);
+ 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);
+
+ res = GetTokenInformation( token, TokenUser, NULL, 0, &size );
+ ok(!res, "Expected failure, got %d\n", res);
+ ok(GetLastError() == ERROR_INSUFFICIENT_BUFFER,
+ "Expected ERROR_INSUFFICIENT_BUFFER, got %d\n", GetLastError());
+
+ user = HeapAlloc(GetProcessHeap(), 0, size);
+ res = GetTokenInformation( token, TokenUser, user, size, &size );
+ ok(res, "GetTokenInformation failed with error %d\n", GetLastError());
+ UserSid = user->User.Sid;
+ test_sid_str(UserSid);
+ todo_wine ok(EqualPrefixSid(UsersSid, UserSid), "TokenPrimaryGroup Sid and TokenUser Sid don't match.\n");
CloseHandle( token );
if (!res)
{
HeapFree(GetProcessHeap(), 0, group);
HeapFree(GetProcessHeap(), 0, owner);
+ HeapFree(GetProcessHeap(), 0, user);
HeapFree(GetProcessHeap(), 0, Acl);
return;
}
@@ -2681,6 +2705,7 @@ static void test_process_security(void)
CloseHandle( event );
HeapFree(GetProcessHeap(), 0, group);
HeapFree(GetProcessHeap(), 0, owner);
+ HeapFree(GetProcessHeap(), 0, user);
HeapFree(GetProcessHeap(), 0, Acl);
HeapFree(GetProcessHeap(), 0, SecurityDescriptor);
HeapFree(GetProcessHeap(), 0, ThreadAcl);
--
2.3.5

View File

@@ -1,38 +0,0 @@
From 5487b4720e24aaa7a10719fc36bc23c851a48a9b Mon Sep 17 00:00:00 2001
From: Qian Hong <qhong@codeweavers.com>
Date: Tue, 28 Apr 2015 22:35:26 +0800
Subject: server: Create primary group using DOMAIN_GROUP_RID_USERS.
---
dlls/advapi32/tests/security.c | 2 +-
server/token.c | 1 +
2 files changed, 2 insertions(+), 1 deletion(-)
diff --git a/dlls/advapi32/tests/security.c b/dlls/advapi32/tests/security.c
index 25b34ba4..573119f 100644
--- a/dlls/advapi32/tests/security.c
+++ b/dlls/advapi32/tests/security.c
@@ -2591,7 +2591,7 @@ static void test_process_security(void)
ok(res, "GetTokenInformation failed with error %d\n", GetLastError());
UserSid = user->User.Sid;
test_sid_str(UserSid);
- todo_wine ok(EqualPrefixSid(UsersSid, UserSid), "TokenPrimaryGroup Sid and TokenUser Sid don't match.\n");
+ ok(EqualPrefixSid(UsersSid, UserSid), "TokenPrimaryGroup Sid and TokenUser Sid don't match.\n");
CloseHandle( token );
if (!res)
diff --git a/server/token.c b/server/token.c
index e57cbc6..be8c53b 100644
--- a/server/token.c
+++ b/server/token.c
@@ -695,6 +695,7 @@ struct token *token_create_admin( void )
{ security_local_sid, SE_GROUP_ENABLED|SE_GROUP_ENABLED_BY_DEFAULT|SE_GROUP_MANDATORY },
{ security_interactive_sid, SE_GROUP_ENABLED|SE_GROUP_ENABLED_BY_DEFAULT|SE_GROUP_MANDATORY },
{ security_authenticated_user_sid, SE_GROUP_ENABLED|SE_GROUP_ENABLED_BY_DEFAULT|SE_GROUP_MANDATORY },
+ { security_domain_users_sid, SE_GROUP_ENABLED|SE_GROUP_ENABLED_BY_DEFAULT|SE_GROUP_MANDATORY|SE_GROUP_OWNER },
{ alias_admins_sid, SE_GROUP_ENABLED|SE_GROUP_ENABLED_BY_DEFAULT|SE_GROUP_MANDATORY|SE_GROUP_OWNER },
{ alias_users_sid, SE_GROUP_ENABLED|SE_GROUP_ENABLED_BY_DEFAULT|SE_GROUP_MANDATORY },
{ logon_sid, SE_GROUP_ENABLED|SE_GROUP_ENABLED_BY_DEFAULT|SE_GROUP_MANDATORY|SE_GROUP_LOGON_ID },
--
2.3.5

View File

@@ -1 +0,0 @@
Depends: server-Misc_ACL

View File

@@ -1,110 +0,0 @@
From 646388b696afda85dccc76678af6a8955bf0b627 Mon Sep 17 00:00:00 2001
From: "Erich E. Hoover" <erich.e.hoover@wine-staging.com>
Date: Fri, 16 Oct 2015 16:03:00 -0600
Subject: advapi32: Move the DACL combining code into a separate routine.
---
dlls/advapi32/security.c | 79 +++++++++++++++++++++++++++---------------------
1 file changed, 45 insertions(+), 34 deletions(-)
diff --git a/dlls/advapi32/security.c b/dlls/advapi32/security.c
index 00dafe8..dad8b22 100644
--- a/dlls/advapi32/security.c
+++ b/dlls/advapi32/security.c
@@ -5805,6 +5805,48 @@ BOOL WINAPI FileEncryptionStatusA(LPCSTR lpFileName, LPDWORD lpStatus)
return TRUE;
}
+static NTSTATUS combine_dacls(ACL *parent, ACL *child, ACL **result)
+{
+ ACL *combined;
+ int i;
+
+ /* initialize a combined DACL containing both inherited and new ACEs */
+ combined = heap_alloc_zero(child->AclSize+parent->AclSize);
+ if (!combined)
+ return STATUS_NO_MEMORY;
+
+ memcpy(combined, child, child->AclSize);
+ combined->AclSize = child->AclSize+parent->AclSize;
+
+ /* copy the inherited ACEs */
+ for (i=0; i<parent->AceCount; i++)
+ {
+ ACE_HEADER *ace;
+
+ if (!GetAce(parent, i, (void*)&ace))
+ continue;
+ if (!(ace->AceFlags & (OBJECT_INHERIT_ACE|CONTAINER_INHERIT_ACE)))
+ continue;
+ if ((ace->AceFlags & (OBJECT_INHERIT_ACE|CONTAINER_INHERIT_ACE)) !=
+ (OBJECT_INHERIT_ACE|CONTAINER_INHERIT_ACE))
+ {
+ FIXME("unsupported flags: %x\n", ace->AceFlags);
+ continue;
+ }
+
+ if (ace->AceFlags & NO_PROPAGATE_INHERIT_ACE)
+ ace->AceFlags &= ~(OBJECT_INHERIT_ACE|CONTAINER_INHERIT_ACE|NO_PROPAGATE_INHERIT_ACE);
+ ace->AceFlags &= ~INHERIT_ONLY_ACE;
+ ace->AceFlags |= INHERITED_ACE;
+
+ if (!AddAce(combined, ACL_REVISION, MAXDWORD, ace, ace->AceSize))
+ WARN("error adding inherited ACE\n");
+ }
+
+ *result = combined;
+ return STATUS_SUCCESS;
+}
+
/******************************************************************************
* SetSecurityInfo [ADVAPI32.@]
*/
@@ -5904,41 +5946,10 @@ DWORD WINAPI SetSecurityInfo(HANDLE handle, SE_OBJECT_TYPE ObjectType,
if (!err)
{
- int i;
-
- dacl = heap_alloc_zero(pDacl->AclSize+parent_dacl->AclSize);
- if (!dacl)
- {
- LocalFree(parent_sd);
- return ERROR_NOT_ENOUGH_MEMORY;
- }
- memcpy(dacl, pDacl, pDacl->AclSize);
- dacl->AclSize = pDacl->AclSize+parent_dacl->AclSize;
-
- for (i=0; i<parent_dacl->AceCount; i++)
- {
- ACE_HEADER *ace;
-
- if (!GetAce(parent_dacl, i, (void*)&ace))
- continue;
- if (!(ace->AceFlags & (OBJECT_INHERIT_ACE|CONTAINER_INHERIT_ACE)))
- continue;
- if ((ace->AceFlags & (OBJECT_INHERIT_ACE|CONTAINER_INHERIT_ACE)) !=
- (OBJECT_INHERIT_ACE|CONTAINER_INHERIT_ACE))
- {
- FIXME("unsupported flags: %x\n", ace->AceFlags);
- continue;
- }
-
- if (ace->AceFlags & NO_PROPAGATE_INHERIT_ACE)
- ace->AceFlags &= ~(OBJECT_INHERIT_ACE|CONTAINER_INHERIT_ACE|NO_PROPAGATE_INHERIT_ACE);
- ace->AceFlags &= ~INHERIT_ONLY_ACE;
- ace->AceFlags |= INHERITED_ACE;
-
- if(!AddAce(dacl, ACL_REVISION, MAXDWORD, ace, ace->AceSize))
- WARN("error adding inherited ACE\n");
- }
+ status = combine_dacls(parent_dacl, pDacl, &dacl);
LocalFree(parent_sd);
+ if (status != STATUS_SUCCESS)
+ return RtlNtStatusToDosError(status);
}
}
else
--
2.6.1

View File

@@ -1,54 +0,0 @@
From d1accafbe8e52b6b2c84e9fe5d08303fc05858af Mon Sep 17 00:00:00 2001
From: "Erich E. Hoover" <erich.e.hoover@wine-staging.com>
Date: Fri, 16 Oct 2015 13:58:38 -0600
Subject: advapi32: Fix the initialization of combined DACLs when the new DACL
is empty.
---
dlls/advapi32/security.c | 23 +++++++++++++++++++++--
1 file changed, 21 insertions(+), 2 deletions(-)
diff --git a/dlls/advapi32/security.c b/dlls/advapi32/security.c
index dad8b22..11ae487 100644
--- a/dlls/advapi32/security.c
+++ b/dlls/advapi32/security.c
@@ -5807,6 +5807,7 @@ BOOL WINAPI FileEncryptionStatusA(LPCSTR lpFileName, LPDWORD lpStatus)
static NTSTATUS combine_dacls(ACL *parent, ACL *child, ACL **result)
{
+ NTSTATUS status;
ACL *combined;
int i;
@@ -5815,8 +5816,26 @@ static NTSTATUS combine_dacls(ACL *parent, ACL *child, ACL **result)
if (!combined)
return STATUS_NO_MEMORY;
- memcpy(combined, child, child->AclSize);
- combined->AclSize = child->AclSize+parent->AclSize;
+ status = RtlCreateAcl(combined, parent->AclSize+child->AclSize, ACL_REVISION);
+ if (status != STATUS_SUCCESS)
+ {
+ heap_free(combined);
+ return status;
+ }
+
+ /* copy the new ACEs */
+ for (i=0; i<child->AceCount; i++)
+ {
+ ACE_HEADER *ace;
+
+ if (!GetAce(child, i, (void*)&ace))
+ {
+ WARN("error obtaining new ACE\n");
+ continue;
+ }
+ if (!AddAce(combined, ACL_REVISION, MAXDWORD, ace, ace->AceSize))
+ WARN("error adding new ACE\n");
+ }
/* copy the inherited ACEs */
for (i=0; i<parent->AceCount; i++)
--
2.6.1

View File

@@ -1 +0,0 @@
Fixes: [38423] Fix the initialization of combined DACLs when the new DACL is empty

View File

@@ -1,4 +1,4 @@
From dd6544561d6432555f14a9004e107e6b87564949 Mon Sep 17 00:00:00 2001
From 19cfff2a16953b65f9767fee571a4ce5d51b0536 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Michael=20M=C3=BCller?= <michael@fds-team.de>
Date: Sat, 5 Aug 2017 03:39:55 +0200
Subject: [PATCH] ntdll: Implement process token elevation through manifests.
@@ -12,10 +12,10 @@ Subject: [PATCH] ntdll: Implement process token elevation through manifests.
5 files changed, 68 insertions(+), 2 deletions(-)
diff --git a/dlls/ntdll/loader.c b/dlls/ntdll/loader.c
index d7dbe57..7588d5a 100644
index c0708c6..479608f 100644
--- a/dlls/ntdll/loader.c
+++ b/dlls/ntdll/loader.c
@@ -3321,6 +3321,32 @@ void WINAPI LdrInitializeThunk( CONTEXT *context, void **entry, ULONG_PTR unknow
@@ -3505,6 +3505,32 @@ void WINAPI LdrInitializeThunk( CONTEXT *context, void **entry, ULONG_PTR unknow
/***********************************************************************
@@ -48,7 +48,7 @@ index d7dbe57..7588d5a 100644
* load_global_options
*/
static void load_global_options(void)
@@ -3373,6 +3399,7 @@ static void load_global_options(void)
@@ -3557,6 +3583,7 @@ static void load_global_options(void)
}
@@ -56,7 +56,7 @@ index d7dbe57..7588d5a 100644
/***********************************************************************
* RtlImageDirectoryEntryToData (NTDLL.@)
*/
@@ -3408,7 +3435,6 @@ PVOID WINAPI RtlImageDirectoryEntryToData( HMODULE module, BOOL image, WORD dir,
@@ -3592,7 +3619,6 @@ PVOID WINAPI RtlImageDirectoryEntryToData( HMODULE module, BOOL image, WORD dir,
return RtlImageRvaToVa( nt, module, addr, NULL );
}
@@ -64,16 +64,16 @@ index d7dbe57..7588d5a 100644
/***********************************************************************
* RtlImageRvaToSection (NTDLL.@)
*/
@@ -3505,7 +3531,7 @@ void __wine_process_init(void)
{
static const WCHAR kernel32W[] = {'k','e','r','n','e','l','3','2','.','d','l','l',0};
@@ -3691,7 +3717,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};
-
+ ACTIVATION_CONTEXT_RUN_LEVEL_INFORMATION runlevel;
WINE_MODREF *wm;
NTSTATUS status;
ANSI_STRING func_name;
@@ -3556,6 +3582,16 @@ void __wine_process_init(void)
@@ -3742,6 +3768,16 @@ void __wine_process_init(void)
&NtCurrentTeb()->Peb->NtGlobalFlag, sizeof(DWORD), NULL );
heap_set_debug_flags( GetProcessHeap() );
@@ -91,10 +91,10 @@ index d7dbe57..7588d5a 100644
RemoveEntryList( &wm->ldr.InLoadOrderModuleList );
InsertHeadList( &NtCurrentTeb()->Peb->LdrData->InLoadOrderModuleList, &wm->ldr.InLoadOrderModuleList );
diff --git a/server/process.c b/server/process.c
index 0a25f44..3988b52 100644
index d8fdfcc..2c9365a 100644
--- a/server/process.c
+++ b/server/process.c
@@ -1109,6 +1109,14 @@ struct process_snapshot *process_snap( int *count )
@@ -1129,6 +1129,14 @@ struct process_snapshot *process_snap( int *count )
return snapshot;
}
@@ -110,10 +110,10 @@ index 0a25f44..3988b52 100644
DECL_HANDLER(new_process)
{
diff --git a/server/process.h b/server/process.h
index 4566a04..029b328 100644
index d9d29f0..a494eab 100644
--- a/server/process.h
+++ b/server/process.h
@@ -138,6 +138,7 @@ extern void break_process( struct process *process );
@@ -139,6 +139,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);
@@ -122,10 +122,10 @@ index 4566a04..029b328 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 071f740..cc44503 100644
index 2b8d51a..650c279 100644
--- a/server/protocol.def
+++ b/server/protocol.def
@@ -3674,6 +3674,13 @@ struct handle_info
@@ -3721,6 +3721,13 @@ struct handle_info
@END
@@ -140,10 +140,10 @@ index 071f740..cc44503 100644
@REQ(create_completion)
unsigned int access; /* desired access to a port */
diff --git a/server/token.c b/server/token.c
index e449e61..961fbe7 100644
index fcab799..181219d 100644
--- a/server/token.c
+++ b/server/token.c
@@ -1797,3 +1797,17 @@ DECL_HANDLER(create_token)
@@ -1806,3 +1806,17 @@ DECL_HANDLER(create_token)
release_object( token );
}
}

View File

@@ -1,4 +1,4 @@
From e571cdf9236e083f196c09d0fc96ed7c98fae440 Mon Sep 17 00:00:00 2001
From 9f35230848f29e79b65c8e340221d7eb81382a43 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
@@ -15,10 +15,10 @@ Subject: [PATCH] server: Implement support for creating processes using a
7 files changed, 66 insertions(+), 18 deletions(-)
diff --git a/dlls/kernel32/process.c b/dlls/kernel32/process.c
index bb6cc3e..7b202db 100644
index 802d99f2a12..03c0588d59a 100644
--- a/dlls/kernel32/process.c
+++ b/dlls/kernel32/process.c
@@ -2289,7 +2289,7 @@ static BOOL replace_process( HANDLE handle, const RTL_USER_PROCESS_PARAMETERS *p
@@ -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.
*/
@@ -27,7 +27,7 @@ index bb6cc3e..7b202db 100644
BOOL inherit, DWORD flags, const RTL_USER_PROCESS_PARAMETERS *params,
LPPROCESS_INFORMATION info, LPCSTR unixdir, const pe_image_info_t *pe_info )
{
@@ -2356,6 +2356,7 @@ static BOOL create_process( HANDLE hFile, LPSECURITY_ATTRIBUTES psa, LPSECURITY_
@@ -2408,6 +2408,7 @@ static BOOL create_process( HANDLE hFile, LPSECURITY_ATTRIBUTES psa, LPSECURITY_
req->access = PROCESS_ALL_ACCESS;
req->cpu = pe_info->cpu;
req->info_size = startup_info_size;
@@ -35,7 +35,7 @@ index bb6cc3e..7b202db 100644
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) );
@@ -2526,7 +2527,7 @@ static RTL_USER_PROCESS_PARAMETERS *get_vdm_params( const RTL_USER_PROCESS_PARAM
@@ -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.
*/
@@ -44,7 +44,7 @@ index bb6cc3e..7b202db 100644
BOOL inherit, DWORD flags, const RTL_USER_PROCESS_PARAMETERS *params,
LPPROCESS_INFORMATION info, LPCSTR unixdir )
{
@@ -2536,7 +2537,7 @@ static BOOL create_vdm_process( LPSECURITY_ATTRIBUTES psa, LPSECURITY_ATTRIBUTES
@@ -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;
@@ -53,7 +53,7 @@ index bb6cc3e..7b202db 100644
RtlDestroyProcessParameters( new_params );
return ret;
}
@@ -2547,7 +2548,7 @@ static BOOL create_vdm_process( LPSECURITY_ATTRIBUTES psa, LPSECURITY_ATTRIBUTES
@@ -2588,7 +2589,7 @@ static BOOL create_vdm_process( LPSECURITY_ATTRIBUTES psa, LPSECURITY_ATTRIBUTES
*
* Create a new cmd shell process for a .BAT file.
*/
@@ -62,7 +62,7 @@ index bb6cc3e..7b202db 100644
BOOL inherit, DWORD flags, LPSTARTUPINFOW startup,
const RTL_USER_PROCESS_PARAMETERS *params,
LPPROCESS_INFORMATION info )
@@ -2577,9 +2578,9 @@ static BOOL create_cmd_process( LPSECURITY_ATTRIBUTES psa, LPSECURITY_ATTRIBUTES
@@ -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;
@@ -74,7 +74,7 @@ index bb6cc3e..7b202db 100644
HeapFree( GetProcessHeap(), 0, newcmdline );
return ret;
}
@@ -2692,7 +2693,9 @@ BOOL WINAPI CreateProcessInternalW( HANDLE token, LPCWSTR app_name, LPWSTR cmd_l
@@ -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) );
@@ -85,7 +85,7 @@ index bb6cc3e..7b202db 100644
if (new_token) FIXME("No support for returning created process token\n");
if (!(tidy_cmdline = get_file_name( app_name, cmd_line, name, ARRAY_SIZE( name ), &hFile, &is_64bit )))
@@ -2760,17 +2763,17 @@ BOOL WINAPI CreateProcessInternalW( HANDLE token, LPCWSTR app_name, LPWSTR cmd_l
@@ -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] );
@@ -106,7 +106,7 @@ index bb6cc3e..7b202db 100644
inherit, flags, params, info, unixdir, &pe_info );
break;
case BINARY_UNKNOWN:
@@ -2780,14 +2783,14 @@ BOOL WINAPI CreateProcessInternalW( HANDLE token, LPCWSTR app_name, LPWSTR cmd_l
@@ -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) );
@@ -124,10 +124,10 @@ index bb6cc3e..7b202db 100644
break;
}
diff --git a/server/process.c b/server/process.c
index af2ba3d..57bf0ec 100644
index 30832f474da..028ffa1b454 100644
--- a/server/process.c
+++ b/server/process.c
@@ -486,7 +486,7 @@ static void start_sigkill_timer( struct process *process )
@@ -491,7 +491,7 @@ static void start_sigkill_timer( struct process *process )
/* create a new process */
/* if the function fails the fd is closed */
struct process *create_process( int fd, struct process *parent, int inherit_all,
@@ -136,7 +136,7 @@ index af2ba3d..57bf0ec 100644
{
struct process *process;
@@ -561,7 +561,7 @@ struct process *create_process( int fd, struct process *parent, int inherit_all,
@@ -567,7 +567,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,7 +145,7 @@ index af2ba3d..57bf0ec 100644
process->affinity = parent->affinity;
}
if (!process->handles || !process->token) goto error;
@@ -1127,6 +1127,7 @@ DECL_HANDLER(new_process)
@@ -1123,6 +1123,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;
@@ -153,7 +153,7 @@ index af2ba3d..57bf0ec 100644
struct process *parent = current->process;
int socket_fd = thread_get_inflight_fd( current, req->socket_fd );
@@ -1167,10 +1168,39 @@ DECL_HANDLER(new_process)
@@ -1163,10 +1164,39 @@ DECL_HANDLER(new_process)
return;
}
@@ -193,7 +193,7 @@ index af2ba3d..57bf0ec 100644
return;
}
info->process = NULL;
@@ -1217,7 +1247,7 @@ DECL_HANDLER(new_process)
@@ -1213,7 +1243,7 @@ DECL_HANDLER(new_process)
#undef FIXUP_LEN
}
@@ -202,7 +202,7 @@ index af2ba3d..57bf0ec 100644
process->startup_info = (struct startup_info *)grab_object( info );
@@ -1279,6 +1309,7 @@ DECL_HANDLER(new_process)
@@ -1275,6 +1305,7 @@ DECL_HANDLER(new_process)
reply->handle = alloc_handle_no_access_check( parent, process, req->access, objattr->attributes );
done:
@@ -210,7 +210,7 @@ index af2ba3d..57bf0ec 100644
if (process) release_object( process );
release_object( info );
}
@@ -1311,7 +1342,7 @@ DECL_HANDLER(exec_process)
@@ -1307,7 +1338,7 @@ DECL_HANDLER(exec_process)
close( socket_fd );
return;
}
@@ -220,10 +220,10 @@ index af2ba3d..57bf0ec 100644
release_object( process );
}
diff --git a/server/process.h b/server/process.h
index 029b328..ea28091 100644
index f21ab7722a9..774c147e783 100644
--- a/server/process.h
+++ b/server/process.h
@@ -116,7 +116,7 @@ extern unsigned int alloc_ptid( void *ptr );
@@ -117,7 +117,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,22 +233,22 @@ index 029b328..ea28091 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 607644e..1b5e6de 100644
index fcca1d255ba..4b01c6d1904 100644
--- a/server/protocol.def
+++ b/server/protocol.def
@@ -744,6 +744,7 @@ struct rawinput_device
@@ -790,6 +790,7 @@ struct rawinput_device
unsigned int access; /* access rights for process object */
cpu_type_t cpu; /* CPU that the new process will use */
client_cpu_t cpu; /* CPU that the new process will use */
data_size_t info_size; /* size of startup info */
+ obj_handle_t token; /* token for the new process */
VARARG(objattr,object_attributes); /* object attributes */
VARARG(info,startup_info,info_size); /* startup information */
VARARG(env,unicode_str); /* environment for new process */
diff --git a/server/request.c b/server/request.c
index c10c4e6..86f293f 100644
index d2adb08a183..139d643e8c8 100644
--- a/server/request.c
+++ b/server/request.c
@@ -577,7 +577,7 @@ static void master_socket_poll_event( struct fd *fd, int event )
@@ -578,7 +578,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 +258,7 @@ index c10c4e6..86f293f 100644
create_thread( -1, process, NULL );
release_object( process );
diff --git a/server/security.h b/server/security.h
index 21e90cc..32dfe5f 100644
index 21e90ccf23f..32dfe5f8db9 100644
--- a/server/security.h
+++ b/server/security.h
@@ -67,6 +67,8 @@ extern const ACL *token_get_default_dacl( struct token *token );
@@ -271,10 +271,10 @@ index 21e90cc..32dfe5f 100644
static inline const ACE_HEADER *ace_next( const ACE_HEADER *ace )
{
diff --git a/server/token.c b/server/token.c
index 1184241..5db97b4 100644
index 181219d2179..858ec25d792 100644
--- a/server/token.c
+++ b/server/token.c
@@ -836,6 +836,12 @@ int token_assign_label( struct token *token, PSID label )
@@ -845,6 +845,12 @@ int token_assign_label( struct token *token, PSID label )
return ret;
}
@@ -287,7 +287,7 @@ index 1184241..5db97b4 100644
struct token *token_create_admin( void )
{
struct token *token = NULL;
@@ -1262,6 +1268,11 @@ const SID *token_get_primary_group( struct token *token )
@@ -1271,6 +1277,11 @@ const SID *token_get_primary_group( struct token *token )
return token->primary_group;
}
@@ -300,5 +300,5 @@ index 1184241..5db97b4 100644
{
GENERIC_MAPPING mapping;
--
1.9.1
2.20.1

View File

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

View File

@@ -1,26 +1,26 @@
From 7f05362e86a285551a5694e98fa9abecb99018a0 Mon Sep 17 00:00:00 2001
From 19efcf925a49a5d7e0b82eb6e4797b0ac725f2dc 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:07:35 +0100
Subject: [PATCH] ext-ms-win-xaml-pal-l1-1-0: Add dll and add stub for
XamlBehaviorEnabled.
---
configure.ac | 1 +
dlls/ext-ms-win-xaml-pal-l1-1-0/Makefile.in | 4 +++
.../ext-ms-win-xaml-pal-l1-1-0.spec | 6 ++++
dlls/ext-ms-win-xaml-pal-l1-1-0/main.c | 35 +++++++++++++++++++
configure.ac | 1 +
dlls/ext-ms-win-xaml-pal-l1-1-0/Makefile.in | 4 +++
.../ext-ms-win-xaml-pal-l1-1-0.spec | 6 ++++
dlls/ext-ms-win-xaml-pal-l1-1-0/main.c | 35 ++++++++++++++++++++++
4 files changed, 46 insertions(+)
create mode 100644 dlls/ext-ms-win-xaml-pal-l1-1-0/Makefile.in
create mode 100644 dlls/ext-ms-win-xaml-pal-l1-1-0/ext-ms-win-xaml-pal-l1-1-0.spec
create mode 100644 dlls/ext-ms-win-xaml-pal-l1-1-0/main.c
diff --git a/configure.ac b/configure.ac
index 420f6311db3..30718491bb8 100644
index 8484c83..a9b51d2 100644
--- a/configure.ac
+++ b/configure.ac
@@ -3289,6 +3289,7 @@ WINE_CONFIG_MAKEFILE(dlls/ext-ms-win-rtcore-ntuser-sysparams-l1-1-0)
WINE_CONFIG_MAKEFILE(dlls/ext-ms-win-security-credui-l1-1-0)
WINE_CONFIG_MAKEFILE(dlls/ext-ms-win-security-cryptui-l1-1-0)
@@ -3255,6 +3255,7 @@ WINE_CONFIG_MAKEFILE(dlls/ext-ms-win-shell-comctl32-init-l1-1-0)
WINE_CONFIG_MAKEFILE(dlls/ext-ms-win-shell-comdlg32-l1-1-0)
WINE_CONFIG_MAKEFILE(dlls/ext-ms-win-shell-shell32-l1-2-0)
WINE_CONFIG_MAKEFILE(dlls/ext-ms-win-uxtheme-themes-l1-1-0)
+WINE_CONFIG_MAKEFILE(dlls/ext-ms-win-xaml-pal-l1-1-0)
WINE_CONFIG_MAKEFILE(dlls/faultrep)
@@ -28,7 +28,7 @@ index 420f6311db3..30718491bb8 100644
WINE_CONFIG_MAKEFILE(dlls/feclient)
diff --git a/dlls/ext-ms-win-xaml-pal-l1-1-0/Makefile.in b/dlls/ext-ms-win-xaml-pal-l1-1-0/Makefile.in
new file mode 100644
index 00000000000..6382d85272b
index 0000000..6382d85
--- /dev/null
+++ b/dlls/ext-ms-win-xaml-pal-l1-1-0/Makefile.in
@@ -0,0 +1,4 @@
@@ -38,7 +38,7 @@ index 00000000000..6382d85272b
+ main.c
diff --git a/dlls/ext-ms-win-xaml-pal-l1-1-0/ext-ms-win-xaml-pal-l1-1-0.spec b/dlls/ext-ms-win-xaml-pal-l1-1-0/ext-ms-win-xaml-pal-l1-1-0.spec
new file mode 100644
index 00000000000..c167f5e753e
index 0000000..c167f5e
--- /dev/null
+++ b/dlls/ext-ms-win-xaml-pal-l1-1-0/ext-ms-win-xaml-pal-l1-1-0.spec
@@ -0,0 +1,6 @@
@@ -50,7 +50,7 @@ index 00000000000..c167f5e753e
+@ stub XamlPalUninitialize
diff --git a/dlls/ext-ms-win-xaml-pal-l1-1-0/main.c b/dlls/ext-ms-win-xaml-pal-l1-1-0/main.c
new file mode 100644
index 00000000000..3e282758f41
index 0000000..3e28275
--- /dev/null
+++ b/dlls/ext-ms-win-xaml-pal-l1-1-0/main.c
@@ -0,0 +1,35 @@
@@ -90,5 +90,5 @@ index 00000000000..3e282758f41
+ return TRUE;
+}
--
2.17.0
1.9.1

View File

@@ -1,15 +1,15 @@
From 9a67b4c62e5a575a38081114d4434f274355020e Mon Sep 17 00:00:00 2001
From 21b4b65eadc9e39008ccadc48307fcfea05a24fb Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Michael=20M=C3=BCller?= <michael@fds-team.de>
Date: Tue, 12 Apr 2016 01:02:34 +0200
Subject: [PATCH] uiautomationcore: Add dll and stub some functions.
---
dlls/uiautomationcore/Makefile.in | 1 +
dlls/uiautomationcore/uia_main.c | 53 ++++++++++++++++++++++++++++++++++-----
dlls/uiautomationcore/uia_main.c | 53 +++++++++++++++++++++++++++----
2 files changed, 48 insertions(+), 6 deletions(-)
diff --git a/dlls/uiautomationcore/Makefile.in b/dlls/uiautomationcore/Makefile.in
index 5221450..5173f23 100644
index b6edec5f6a9..bf2204d5ab4 100644
--- a/dlls/uiautomationcore/Makefile.in
+++ b/dlls/uiautomationcore/Makefile.in
@@ -1,5 +1,6 @@
@@ -17,10 +17,10 @@ index 5221450..5173f23 100644
IMPORTLIB = uiautomationcore
+IMPORTS = uuid
C_SRCS = \
uia_main.c
EXTRADLLFLAGS = -mno-cygwin
diff --git a/dlls/uiautomationcore/uia_main.c b/dlls/uiautomationcore/uia_main.c
index f0d8247..b9c24b4 100644
index f0d8247724d..b9c24b4b963 100644
--- a/dlls/uiautomationcore/uia_main.c
+++ b/dlls/uiautomationcore/uia_main.c
@@ -1,4 +1,5 @@
@@ -122,5 +122,5 @@ index f0d8247..b9c24b4 100644
}
--
1.9.1
2.17.1

View File

@@ -1,141 +0,0 @@
From 23ce6bcd9ebd67d6b5ed991bad555ecbc014a08d Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Michael=20M=C3=BCller?= <michael@fds-team.de>
Date: Mon, 8 Feb 2016 04:55:07 +0100
Subject: avifil32: Correctly handle compressed frames when desired format is
specified.
---
dlls/avifil32/getframe.c | 102 +++++++++++++++++++++++------------------------
1 file changed, 50 insertions(+), 52 deletions(-)
diff --git a/dlls/avifil32/getframe.c b/dlls/avifil32/getframe.c
index 46b1683..7d98d2e 100644
--- a/dlls/avifil32/getframe.c
+++ b/dlls/avifil32/getframe.c
@@ -406,8 +406,6 @@ static HRESULT WINAPI IGetFrame_fnSetFormat(IGetFrame *iface,
lpbi->biSize + lpbi->biClrUsed * sizeof(RGBQUAD));
if (lpbi->biBitCount <= 8)
ICDecompressGetPalette(This->hic, This->lpInFormat, This->lpOutFormat);
-
- return AVIERR_OK;
} else {
if (bBestDisplay) {
ICGetDisplayFormat(This->hic, This->lpInFormat,
@@ -417,64 +415,64 @@ static HRESULT WINAPI IGetFrame_fnSetFormat(IGetFrame *iface,
AVIFILE_CloseCompressor(This);
return AVIERR_NOCOMPRESSOR;
}
+ }
- /* check output format */
- if (This->lpOutFormat->biClrUsed == 0 &&
- This->lpOutFormat->biBitCount <= 8)
- This->lpOutFormat->biClrUsed = 1u << This->lpOutFormat->biBitCount;
- if (This->lpOutFormat->biSizeImage == 0 &&
- This->lpOutFormat->biCompression == BI_RGB) {
- This->lpOutFormat->biSizeImage =
- DIBWIDTHBYTES(*This->lpOutFormat) * This->lpOutFormat->biHeight;
- }
+ /* check output format */
+ if (This->lpOutFormat->biClrUsed == 0 &&
+ This->lpOutFormat->biBitCount <= 8)
+ This->lpOutFormat->biClrUsed = 1u << This->lpOutFormat->biBitCount;
+ if (This->lpOutFormat->biSizeImage == 0 &&
+ This->lpOutFormat->biCompression == BI_RGB) {
+ This->lpOutFormat->biSizeImage =
+ DIBWIDTHBYTES(*This->lpOutFormat) * This->lpOutFormat->biHeight;
+ }
- if (lpBits == NULL) {
- DWORD size = This->lpOutFormat->biClrUsed * sizeof(RGBQUAD);
+ if (lpBits == NULL) {
+ DWORD size = This->lpOutFormat->biClrUsed * sizeof(RGBQUAD);
- size += This->lpOutFormat->biSize + This->lpOutFormat->biSizeImage;
- This->lpOutFormat = HeapReAlloc(GetProcessHeap(), 0, This->lpOutFormat, size);
- if (This->lpOutFormat == NULL) {
- AVIFILE_CloseCompressor(This);
- return AVIERR_MEMORY;
- }
- This->lpOutBuffer = DIBPTR(This->lpOutFormat);
- } else
- This->lpOutBuffer = lpBits;
-
- /* for user size was irrelevant */
- if (dx == -1)
- dx = This->lpOutFormat->biWidth;
- if (dy == -1)
- dy = This->lpOutFormat->biHeight;
-
- /* need to resize? */
- if (x != 0 || y != 0) {
- if (dy == This->lpOutFormat->biHeight &&
- dx == This->lpOutFormat->biWidth)
- This->bResize = FALSE;
- else
- This->bResize = TRUE;
+ size += This->lpOutFormat->biSize + This->lpOutFormat->biSizeImage;
+ This->lpOutFormat = HeapReAlloc(GetProcessHeap(), 0, This->lpOutFormat, size);
+ if (This->lpOutFormat == NULL) {
+ AVIFILE_CloseCompressor(This);
+ return AVIERR_MEMORY;
}
+ This->lpOutBuffer = DIBPTR(This->lpOutFormat);
+ } else
+ This->lpOutBuffer = lpBits;
+
+ /* for user size was irrelevant */
+ if (dx == -1)
+ dx = This->lpOutFormat->biWidth;
+ if (dy == -1)
+ dy = This->lpOutFormat->biHeight;
+
+ /* need to resize? */
+ if (x != 0 || y != 0) {
+ if (dy == This->lpOutFormat->biHeight &&
+ dx == This->lpOutFormat->biWidth)
+ This->bResize = FALSE;
+ else
+ This->bResize = TRUE;
+ }
- if (This->bResize) {
- This->x = x;
- This->y = y;
- This->dx = dx;
- This->dy = dy;
-
- if (ICDecompressExBegin(This->hic,0,This->lpInFormat,This->lpInBuffer,0,
- 0,This->lpInFormat->biWidth,
- This->lpInFormat->biHeight,This->lpOutFormat,
- This->lpOutBuffer, x, y, dx, dy) == ICERR_OK)
- return AVIERR_OK;
- } else if (ICDecompressBegin(This->hic, This->lpInFormat,
- This->lpOutFormat) == ICERR_OK)
+ if (This->bResize) {
+ This->x = x;
+ This->y = y;
+ This->dx = dx;
+ This->dy = dy;
+
+ if (ICDecompressExBegin(This->hic,0,This->lpInFormat,This->lpInBuffer,0,
+ 0,This->lpInFormat->biWidth,
+ This->lpInFormat->biHeight,This->lpOutFormat,
+ This->lpOutBuffer, x, y, dx, dy) == ICERR_OK)
return AVIERR_OK;
+ } else if (ICDecompressBegin(This->hic, This->lpInFormat,
+ This->lpOutFormat) == ICERR_OK)
+ return AVIERR_OK;
- AVIFILE_CloseCompressor(This);
+ AVIFILE_CloseCompressor(This);
- return AVIERR_COMPRESSOR;
- }
+ return AVIERR_COMPRESSOR;
}
static const struct IGetFrameVtbl igetframeVtbl = {
--
2.7.0

View File

@@ -1 +0,0 @@
Fixes: Correctly handle compressed frames when desired format is specified

View File

@@ -1,183 +0,0 @@
From ef9a368177cf6f1a1ca7f99fd3ae0b8b6918160a Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Michael=20M=C3=BCller?= <michael@fds-team.de>
Date: Mon, 8 Feb 2016 04:44:24 +0100
Subject: avifile.dll16: Correctly convert result of AVIStreamGetFrame to a
segptr.
---
dlls/avifile.dll16/Makefile.in | 3 +
dlls/avifile.dll16/avifile.dll16.spec | 6 +-
dlls/avifile.dll16/main.c | 133 ++++++++++++++++++++++++++++++++++
3 files changed, 139 insertions(+), 3 deletions(-)
create mode 100644 dlls/avifile.dll16/main.c
diff --git a/dlls/avifile.dll16/Makefile.in b/dlls/avifile.dll16/Makefile.in
index 6050c6c..4152c2f 100644
--- a/dlls/avifile.dll16/Makefile.in
+++ b/dlls/avifile.dll16/Makefile.in
@@ -1,3 +1,6 @@
MODULE = avifile.dll16
IMPORTS = avifil32
EXTRADLLFLAGS = -m16 -Wb,--main-module,avifil32.dll
+
+C_SRCS = \
+ main.c
diff --git a/dlls/avifile.dll16/avifile.dll16.spec b/dlls/avifile.dll16/avifile.dll16.spec
index 71a6c74..0e19413 100644
--- a/dlls/avifile.dll16/avifile.dll16.spec
+++ b/dlls/avifile.dll16/avifile.dll16.spec
@@ -20,9 +20,9 @@
105 stub AVIMAKECOMPRESSEDSTREAM
106 stub AVIMAKEFILEFROMSTREAMS
107 stub AVIMAKESTREAMFROMCLIPBOARD
-110 pascal AVIStreamGetFrame(long long) AVIStreamGetFrame
-111 pascal AVIStreamGetFrameClose(long) AVIStreamGetFrameClose
-112 pascal AVIStreamGetFrameOpen(long ptr) AVIStreamGetFrameOpen
+110 pascal AVIStreamGetFrame(long long) AVIStreamGetFrame16
+111 pascal AVIStreamGetFrameClose(long) AVIStreamGetFrameClose16
+112 pascal AVIStreamGetFrameOpen(long ptr) AVIStreamGetFrameOpen16
120 stub _AVISAVE
121 stub AVISAVEV
122 stub AVISAVEOPTIONS
diff --git a/dlls/avifile.dll16/main.c b/dlls/avifile.dll16/main.c
new file mode 100644
index 0000000..9e1faac
--- /dev/null
+++ b/dlls/avifile.dll16/main.c
@@ -0,0 +1,133 @@
+/*
+ * Wrapper for 16 bit avifile functions
+ *
+ * Copyright 2016 Michael Müller
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#include "wine/winbase16.h"
+#include "winternl.h"
+#include "wingdi.h"
+#include "vfw.h"
+
+struct frame_wrapper16
+{
+ PGETFRAME pg;
+ PVOID ptr;
+ DWORD size;
+ WORD sel;
+ WORD count;
+};
+
+static void free_segptr_frame(struct frame_wrapper16 *wrapper)
+{
+ int i;
+
+ if (!wrapper->sel)
+ return;
+
+ for (i = 0; i < wrapper->count; i++)
+ FreeSelector16(wrapper->sel + (i << __AHSHIFT));
+
+ wrapper->sel = 0;
+}
+
+static SEGPTR alloc_segptr_frame(struct frame_wrapper16 *wrapper, void *ptr, DWORD size)
+{
+ int i;
+
+ if (wrapper->sel)
+ {
+ if (wrapper->ptr == ptr && wrapper->size == size)
+ return MAKESEGPTR(wrapper->sel, 0);
+ free_segptr_frame(wrapper);
+ }
+
+ wrapper->ptr = ptr;
+ wrapper->size = size;
+ wrapper->count = (size + 0xffff) / 0x10000;
+ wrapper->sel = AllocSelectorArray16(wrapper->count);
+ if (!wrapper->sel)
+ return 0;
+
+ for (i = 0; i < wrapper->count; i++)
+ {
+ SetSelectorBase(wrapper->sel + (i << __AHSHIFT), (DWORD)ptr + i * 0x10000);
+ SetSelectorLimit16(wrapper->sel + (i << __AHSHIFT), size - 1);
+ size -= 0x10000;
+ }
+
+ return MAKESEGPTR(wrapper->sel, 0);
+}
+
+/***********************************************************************
+ * AVIStreamGetFrameOpen (AVIFILE.112)
+ */
+PGETFRAME WINAPI AVIStreamGetFrameOpen16(PAVISTREAM pstream, LPBITMAPINFOHEADER lpbiWanted)
+{
+ struct frame_wrapper16 *wrapper;
+ PGETFRAME pg;
+
+ pg = AVIStreamGetFrameOpen(pstream, lpbiWanted);
+ if (!pg) return NULL;
+
+ wrapper = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(*wrapper));
+ if (!wrapper)
+ {
+ AVIStreamGetFrameClose(pg);
+ return NULL;
+ }
+
+ wrapper->pg = pg;
+ return (PGETFRAME)wrapper;
+}
+
+/***********************************************************************
+ * AVIStreamGetFrame (AVIFILE.110)
+ */
+SEGPTR WINAPI AVIStreamGetFrame16(PGETFRAME pg, LONG pos)
+{
+ struct frame_wrapper16 *wrapper = (void *)pg;
+ BITMAPINFOHEADER *bih;
+
+ if (!pg) return 0;
+
+ bih = AVIStreamGetFrame(wrapper->pg, pos);
+ if (bih)
+ {
+ DWORD size = bih->biSize + bih->biSizeImage;
+ return alloc_segptr_frame(wrapper, bih, size);
+ }
+
+ return 0;
+}
+
+
+/***********************************************************************
+ * AVIStreamGetFrameClose (AVIFILE.111)
+ */
+HRESULT WINAPI AVIStreamGetFrameClose16(PGETFRAME pg)
+{
+ struct frame_wrapper16 *wrapper = (void *)pg;
+ HRESULT hr;
+
+ if (!pg) return S_OK;
+
+ hr = AVIStreamGetFrameClose(wrapper->pg);
+ free_segptr_frame(wrapper);
+ HeapFree(GetProcessHeap(), 0, wrapper);
+ return hr;
+}
--
2.9.0

View File

@@ -1,149 +0,0 @@
From b64fdb26c0d998e97f8d4d5193108d92bd0ee0dc Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Michael=20M=C3=BCller?= <michael@fds-team.de>
Date: Mon, 8 Feb 2016 14:02:09 +0100
Subject: avifile.dll16: Convert between AVISTREAMINFO (16 bit) and
AVISTREAMINFOA.
---
dlls/avifile.dll16/avifile.dll16.spec | 4 +-
dlls/avifile.dll16/main.c | 100 ++++++++++++++++++++++++++++++++++
2 files changed, 102 insertions(+), 2 deletions(-)
diff --git a/dlls/avifile.dll16/avifile.dll16.spec b/dlls/avifile.dll16/avifile.dll16.spec
index 0e19413..7a1aaea 100644
--- a/dlls/avifile.dll16/avifile.dll16.spec
+++ b/dlls/avifile.dll16/avifile.dll16.spec
@@ -36,13 +36,13 @@
141 pascal AVIFileRelease(long) AVIFileRelease
142 pascal AVIFileInfo(long ptr long) AVIFileInfoA
143 pascal AVIFileGetStream(long ptr long long) AVIFileGetStream
-144 pascal AVIFileCreateStream(long ptr ptr) AVIFileCreateStreamA
+144 pascal AVIFileCreateStream(long ptr ptr) AVIFileCreateStream16
146 pascal AVIFileWriteData(long long ptr long) AVIFileWriteData
147 pascal AVIFileReadData(long long ptr ptr) AVIFileReadData
148 pascal AVIFileEndRecord(long) AVIFileEndRecord
160 pascal AVIStreamAddRef(long) AVIStreamAddRef
161 pascal AVIStreamRelease(long) AVIStreamRelease
-162 pascal AVIStreamInfo(long ptr long) AVIStreamInfoA
+162 pascal AVIStreamInfo(long ptr long) AVIStreamInfo16
163 pascal AVIStreamFindSample(long long long) AVIStreamFindSample
164 pascal AVIStreamReadFormat(long long ptr ptr) AVIStreamReadFormat
165 pascal AVIStreamReadData(long long ptr ptr) AVIStreamReadData
diff --git a/dlls/avifile.dll16/main.c b/dlls/avifile.dll16/main.c
index 9e1faac..8bb1769 100644
--- a/dlls/avifile.dll16/main.c
+++ b/dlls/avifile.dll16/main.c
@@ -23,6 +23,27 @@
#include "wingdi.h"
#include "vfw.h"
+typedef struct _AVISTREAMINFO16 {
+ DWORD fccType;
+ DWORD fccHandler;
+ DWORD dwFlags;
+ DWORD dwCaps;
+ WORD wPriority;
+ WORD wLanguage;
+ DWORD dwScale;
+ DWORD dwRate;
+ DWORD dwStart;
+ DWORD dwLength;
+ DWORD dwInitialFrames;
+ DWORD dwSuggestedBufferSize;
+ DWORD dwQuality;
+ DWORD dwSampleSize;
+ RECT16 rcFrame;
+ DWORD dwEditCount;
+ DWORD dwFormatChangeCount;
+ CHAR szName[64];
+} AVISTREAMINFO16, *LPAVISTREAMINFO16, *PAVISTREAMINFO16;
+
struct frame_wrapper16
{
PGETFRAME pg;
@@ -131,3 +152,82 @@ HRESULT WINAPI AVIStreamGetFrameClose16(PGETFRAME pg)
HeapFree(GetProcessHeap(), 0, wrapper);
return hr;
}
+
+/***********************************************************************
+ * AVIFileCreateStream (AVIFILE.144)
+ */
+HRESULT WINAPI AVIFileCreateStream16(PAVIFILE pfile, PAVISTREAM *ppavi, LPAVISTREAMINFO16 asi16)
+{
+ AVISTREAMINFOA asi;
+
+ if (!asi16)
+ return AVIFileCreateStreamA(pfile, ppavi, NULL);
+
+ asi.fccType = asi16->fccType;
+ asi.fccHandler = asi16->fccHandler;
+ asi.dwFlags = asi16->dwFlags;
+ asi.dwCaps = asi16->dwCaps;
+ asi.wPriority = asi16->wPriority;
+ asi.wLanguage = asi16->wLanguage;
+ asi.dwScale = asi16->dwScale;
+ asi.dwRate = asi16->dwRate;
+ asi.dwStart = asi16->dwStart;
+ asi.dwLength = asi16->dwLength;
+ asi.dwInitialFrames = asi16->dwInitialFrames;
+ asi.dwSuggestedBufferSize = asi16->dwSuggestedBufferSize;
+ asi.dwQuality = asi16->dwQuality;
+ asi.dwSampleSize = asi16->dwSampleSize;
+ asi.rcFrame.left = asi16->rcFrame.left;
+ asi.rcFrame.top = asi16->rcFrame.top;
+ asi.rcFrame.right = asi16->rcFrame.right;
+ asi.rcFrame.bottom = asi16->rcFrame.bottom;
+ asi.dwEditCount = asi16->dwEditCount;
+ asi.dwFormatChangeCount = asi16->dwFormatChangeCount;
+ memcpy(&asi.szName, &asi16->szName, sizeof(asi.szName));
+
+ return AVIFileCreateStreamA(pfile, ppavi, &asi);
+}
+
+
+/***********************************************************************
+ * AVIStreamInfo (AVIFILE.162)
+ */
+HRESULT WINAPI AVIStreamInfo16(PAVISTREAM pstream, LPAVISTREAMINFO16 asi16, LONG size)
+{
+ AVISTREAMINFOA asi;
+ HRESULT hr;
+
+ if (!asi16)
+ return AVIStreamInfoA(pstream, NULL, size);
+
+ if (size < sizeof(AVISTREAMINFO16))
+ return AVIERR_BADSIZE;
+
+ hr = AVIStreamInfoA(pstream, &asi, sizeof(asi));
+ if (SUCCEEDED(hr))
+ {
+ asi16->fccType = asi.fccType;
+ asi16->fccHandler = asi.fccHandler;
+ asi16->dwFlags = asi.dwFlags;
+ asi16->dwCaps = asi.dwCaps;
+ asi16->wPriority = asi.wPriority;
+ asi16->wLanguage = asi.wLanguage;
+ asi16->dwScale = asi.dwScale;
+ asi16->dwRate = asi.dwRate;
+ asi16->dwStart = asi.dwStart;
+ asi16->dwLength = asi.dwLength;
+ asi16->dwInitialFrames = asi.dwInitialFrames;
+ asi16->dwSuggestedBufferSize = asi.dwSuggestedBufferSize;
+ asi16->dwQuality = asi.dwQuality;
+ asi16->dwSampleSize = asi.dwSampleSize;
+ asi16->rcFrame.left = asi.rcFrame.left;
+ asi16->rcFrame.top = asi.rcFrame.top;
+ asi16->rcFrame.right = asi.rcFrame.right;
+ asi16->rcFrame.bottom = asi.rcFrame.bottom;
+ asi16->dwEditCount = asi.dwEditCount;
+ asi16->dwFormatChangeCount = asi.dwFormatChangeCount;
+ memcpy(&asi16->szName, &asi.szName, sizeof(asi.szName));
+ }
+
+ return hr;
+}
--
2.9.0

View File

@@ -1,2 +0,0 @@
Fixes: Correctly convert result of AVIStreamGetFrame to a segptr in avifile.dll16
Fixes: Convert between AVISTREAMINFO (16 bit) and AVISTREAMINFOA in avifile.dll16

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