Rebase against 5cf95396503d49f0249c473c1ed51e51213124c0.

This commit is contained in:
Sebastian Lackner 2015-11-11 18:20:09 +01:00
parent 42b1edd98d
commit 3faa0f1212
20 changed files with 19 additions and 364 deletions

View File

@ -156,7 +156,7 @@ for more details.*
* Fix handling of ANSI NTLM credentials ([Wine Bug #37063](https://bugs.winehq.org/show_bug.cgi?id=37063))
* Fix handling of empty section and key name for profile files. ([Wine Bug #8036](https://bugs.winehq.org/show_bug.cgi?id=8036))
* Fix handling of invert_y in DrawTextExW ([Wine Bug #22109](https://bugs.winehq.org/show_bug.cgi?id=22109))
* Fix handling of opening read-only files for FILE_DELETE_ON_CLOSE ([Wine Bug #38417](https://bugs.winehq.org/show_bug.cgi?id=38417))
* ~~Fix handling of opening read-only files for FILE_DELETE_ON_CLOSE~~ ([Wine Bug #38417](https://bugs.winehq.org/show_bug.cgi?id=38417))
* Fix handling of window attributes for WS_EX_LAYERED | WS_EX_COMPOSITED ([Wine Bug #37876](https://bugs.winehq.org/show_bug.cgi?id=37876))
* Fix implementation of msvcrt.close when stdout == stderr
* Fix issues with dragging layers between images in Adobe Photoshop 7.0 ([Wine Bug #12007](https://bugs.winehq.org/show_bug.cgi?id=12007))

2
debian/changelog vendored
View File

@ -20,6 +20,8 @@ wine-staging (1.7.55) UNRELEASED; urgency=low
message loop (accepted upstream).
* Removed patches to fix multiple issues in widl typelib generator (accepted
upstream).
* Removed patch to fix handling of opening read-only files for
FILE_DELETE_ON_CLOSE (accepted upstream).
-- Sebastian Lackner <sebastian@fds-team.de> Sun, 01 Nov 2015 01:06:20 +0100
wine-staging (1.7.54) unstable; urgency=low

View File

@ -1,73 +0,0 @@
From b3c1ba550d89a4363a9b017757834e37e2d44c4e Mon Sep 17 00:00:00 2001
From: Sebastian Lackner <sebastian@fds-team.de>
Date: Tue, 10 Nov 2015 19:13:37 +0100
Subject: include: Add missing definitions for Nt* functions.
Also fix the ntdll specfile for NtCreateKeyTransacted.
---
dlls/ntdll/ntdll.spec | 4 ++--
include/winternl.h | 5 +++++
2 files changed, 7 insertions(+), 2 deletions(-)
diff --git a/dlls/ntdll/ntdll.spec b/dlls/ntdll/ntdll.spec
index d285561..c3b6bf0 100644
--- a/dlls/ntdll/ntdll.spec
+++ b/dlls/ntdll/ntdll.spec
@@ -130,7 +130,7 @@
@ stdcall NtCreateJobObject(ptr long ptr)
# @ stub NtCreateJobSet
@ stdcall NtCreateKey(ptr long ptr long ptr long long)
-@ stdcall NtCreateKeyTransacted(ptr long ptr long ptr long long long)
+@ stdcall NtCreateKeyTransacted(ptr long ptr long ptr long long ptr)
@ stdcall NtCreateKeyedEvent(ptr long ptr long)
@ stdcall NtCreateMailslotFile(long long long long long long long long)
@ stdcall NtCreateMutant(ptr long ptr long)
@@ -1050,7 +1050,7 @@
@ stdcall ZwCreateJobObject(ptr long ptr) NtCreateJobObject
# @ stub ZwCreateJobSet
@ stdcall ZwCreateKey(ptr long ptr long ptr long long) NtCreateKey
-@ stdcall ZwCreateKeyTransacted(ptr long ptr long ptr long long long) NtCreateKeyTransacted
+@ stdcall ZwCreateKeyTransacted(ptr long ptr long ptr long long ptr) NtCreateKeyTransacted
@ stdcall ZwCreateKeyedEvent(ptr long ptr long) NtCreateKeyedEvent
@ stdcall ZwCreateMailslotFile(long long long long long long long long) NtCreateMailslotFile
@ stdcall ZwCreateMutant(ptr long ptr long) NtCreateMutant
diff --git a/include/winternl.h b/include/winternl.h
index f3de636..9532b1d 100644
--- a/include/winternl.h
+++ b/include/winternl.h
@@ -2108,6 +2108,7 @@ NTSYSAPI NTSTATUS WINAPI NtCreateFile(PHANDLE,ACCESS_MASK,POBJECT_ATTRIBUTES,PI
NTSYSAPI NTSTATUS WINAPI NtCreateIoCompletion(PHANDLE,ACCESS_MASK,POBJECT_ATTRIBUTES,ULONG);
NTSYSAPI NTSTATUS WINAPI NtCreateJobObject(PHANDLE,ACCESS_MASK,const OBJECT_ATTRIBUTES*);
NTSYSAPI NTSTATUS WINAPI NtCreateKey(PHANDLE,ACCESS_MASK,const OBJECT_ATTRIBUTES*,ULONG,const UNICODE_STRING*,ULONG,PULONG);
+NTSYSAPI NTSTATUS WINAPI NtCreateKeyTransacted(PHANDLE,ACCESS_MASK,const OBJECT_ATTRIBUTES *,ULONG,const UNICODE_STRING *,ULONG,HANDLE,ULONG *);
NTSYSAPI NTSTATUS WINAPI NtCreateKeyedEvent(HANDLE*,ACCESS_MASK,const OBJECT_ATTRIBUTES*,ULONG);
NTSYSAPI NTSTATUS WINAPI NtCreateMailslotFile(PHANDLE,ACCESS_MASK,POBJECT_ATTRIBUTES,PIO_STATUS_BLOCK,ULONG,ULONG,ULONG,PLARGE_INTEGER);
NTSYSAPI NTSTATUS WINAPI NtCreateMutant(HANDLE*,ACCESS_MASK,const OBJECT_ATTRIBUTES*,BOOLEAN);
@@ -2162,6 +2163,7 @@ NTSYSAPI NTSTATUS WINAPI NtMakeTemporaryObject(HANDLE);
NTSYSAPI NTSTATUS WINAPI NtMapViewOfSection(HANDLE,HANDLE,PVOID*,ULONG,SIZE_T,const LARGE_INTEGER*,SIZE_T*,SECTION_INHERIT,ULONG,ULONG);
NTSYSAPI NTSTATUS WINAPI NtNotifyChangeDirectoryFile(HANDLE,HANDLE,PIO_APC_ROUTINE,PVOID,PIO_STATUS_BLOCK,PVOID,ULONG,ULONG,BOOLEAN);
NTSYSAPI NTSTATUS WINAPI NtNotifyChangeKey(HANDLE,HANDLE,PIO_APC_ROUTINE,PVOID,PIO_STATUS_BLOCK,ULONG,BOOLEAN,PVOID,ULONG,BOOLEAN);
+NTSYSAPI NTSTATUS WINAPI NtNotifyChangeMultipleKeys(HANDLE,ULONG,OBJECT_ATTRIBUTES *,HANDLE,PIO_APC_ROUTINE,PVOID,PIO_STATUS_BLOCK,ULONG,BOOLEAN,PVOID,ULONG,BOOLEAN);
NTSYSAPI NTSTATUS WINAPI NtOpenDirectoryObject(PHANDLE,ACCESS_MASK,POBJECT_ATTRIBUTES);
NTSYSAPI NTSTATUS WINAPI NtOpenEvent(PHANDLE,ACCESS_MASK,const OBJECT_ATTRIBUTES *);
NTSYSAPI NTSTATUS WINAPI NtOpenEventPair(PHANDLE,ACCESS_MASK,POBJECT_ATTRIBUTES);
@@ -2170,6 +2172,8 @@ NTSYSAPI NTSTATUS WINAPI NtOpenIoCompletion(PHANDLE,ACCESS_MASK,POBJECT_ATTRIBU
NTSYSAPI NTSTATUS WINAPI NtOpenJobObject(PHANDLE,ACCESS_MASK,const OBJECT_ATTRIBUTES*);
NTSYSAPI NTSTATUS WINAPI NtOpenKey(PHANDLE,ACCESS_MASK,const OBJECT_ATTRIBUTES *);
NTSYSAPI NTSTATUS WINAPI NtOpenKeyEx(PHANDLE,ACCESS_MASK,const OBJECT_ATTRIBUTES*,ULONG);
+NTSYSAPI NTSTATUS WINAPI NtOpenKeyTransacted(PHANDLE,ACCESS_MASK,const OBJECT_ATTRIBUTES *,HANDLE);
+NTSYSAPI NTSTATUS WINAPI NtOpenKeyTransactedEx(PHANDLE,ACCESS_MASK,const OBJECT_ATTRIBUTES *,ULONG,HANDLE);
NTSYSAPI NTSTATUS WINAPI NtOpenKeyedEvent(HANDLE*,ACCESS_MASK,const OBJECT_ATTRIBUTES*);
NTSYSAPI NTSTATUS WINAPI NtOpenMutant(PHANDLE,ACCESS_MASK,const OBJECT_ATTRIBUTES*);
NTSYSAPI NTSTATUS WINAPI NtOpenObjectAuditAlarm(PUNICODE_STRING,PHANDLE,PUNICODE_STRING,PUNICODE_STRING,PSECURITY_DESCRIPTOR,HANDLE,ACCESS_MASK,ACCESS_MASK,PPRIVILEGE_SET,BOOLEAN,BOOLEAN,PBOOLEAN);
@@ -2238,6 +2242,7 @@ NTSYSAPI NTSTATUS WINAPI NtReleaseKeyedEvent(HANDLE,const void*,BOOLEAN,const L
NTSYSAPI NTSTATUS WINAPI NtReleaseMutant(HANDLE,PLONG);
NTSYSAPI NTSTATUS WINAPI NtReleaseSemaphore(HANDLE,ULONG,PULONG);
NTSYSAPI NTSTATUS WINAPI NtRemoveIoCompletion(HANDLE,PULONG_PTR,PULONG_PTR,PIO_STATUS_BLOCK,PLARGE_INTEGER);
+NTSYSAPI NTSTATUS WINAPI NtRenameKey(HANDLE,UNICODE_STRING *);
NTSYSAPI NTSTATUS WINAPI NtReplaceKey(POBJECT_ATTRIBUTES,HANDLE,POBJECT_ATTRIBUTES);
NTSYSAPI NTSTATUS WINAPI NtReplyPort(HANDLE,PLPC_MESSAGE);
NTSYSAPI NTSTATUS WINAPI NtReplyWaitReceivePort(HANDLE,PULONG,PLPC_MESSAGE,PLPC_MESSAGE);
--
2.6.2

View File

@ -1,47 +0,0 @@
From 669e7933af6c854b447731c8ff34ec027f42cde4 Mon Sep 17 00:00:00 2001
From: Christian Costa <titan.costa@gmail.com>
Date: Wed, 11 Feb 2015 09:43:20 +0100
Subject: ntoskrnl.exe: Add stub for ExAcquireResourceExclusiveLite.
---
dlls/ntoskrnl.exe/ntoskrnl.c | 10 ++++++++++
dlls/ntoskrnl.exe/ntoskrnl.exe.spec | 2 +-
2 files changed, 11 insertions(+), 1 deletion(-)
diff --git a/dlls/ntoskrnl.exe/ntoskrnl.c b/dlls/ntoskrnl.exe/ntoskrnl.c
index 50e3567..1110559 100644
--- a/dlls/ntoskrnl.exe/ntoskrnl.c
+++ b/dlls/ntoskrnl.exe/ntoskrnl.c
@@ -1242,6 +1242,16 @@ NTSTATUS WINAPI ExInitializeResourceLite(PERESOURCE Resource)
/***********************************************************************
+ * ExAcquireResourceExclusiveLite (NTOSKRNL.EXE.@)
+ */
+BOOLEAN WINAPI ExAcquireResourceExclusiveLite(PERESOURCE resource, BOOLEAN wait)
+{
+ FIXME("(%p, %u): stub\n", resource, wait);
+ return TRUE;
+}
+
+
+/***********************************************************************
* ExInitializeNPagedLookasideList (NTOSKRNL.EXE.@)
*/
void WINAPI ExInitializeNPagedLookasideList(PNPAGED_LOOKASIDE_LIST Lookaside,
diff --git a/dlls/ntoskrnl.exe/ntoskrnl.exe.spec b/dlls/ntoskrnl.exe/ntoskrnl.exe.spec
index 872fbee..91a01fe 100644
--- a/dlls/ntoskrnl.exe/ntoskrnl.exe.spec
+++ b/dlls/ntoskrnl.exe/ntoskrnl.exe.spec
@@ -111,7 +111,7 @@
@ stub DbgPrompt
@ stub DbgQueryDebugFilterState
@ stub DbgSetDebugFilterState
-@ stub ExAcquireResourceExclusiveLite
+@ stdcall ExAcquireResourceExclusiveLite(ptr long)
@ stub ExAcquireResourceSharedLite
@ stub ExAcquireSharedStarveExclusive
@ stub ExAcquireSharedWaitForExclusive
--
2.2.2

View File

@ -1,60 +0,0 @@
From a918a1b97d96ccc4b19fc148141c9fdb4e3713cf Mon Sep 17 00:00:00 2001
From: Christian Costa <titan.costa@gmail.com>
Date: Wed, 11 Feb 2015 23:56:58 +0100
Subject: ntoskrnl.exe: Add stub for ExReleaseResourceForThreadLite.
---
dlls/ntoskrnl.exe/ntoskrnl.c | 10 ++++++++++
dlls/ntoskrnl.exe/ntoskrnl.exe.spec | 2 +-
include/ddk/wdm.h | 1 +
3 files changed, 12 insertions(+), 1 deletion(-)
diff --git a/dlls/ntoskrnl.exe/ntoskrnl.c b/dlls/ntoskrnl.exe/ntoskrnl.c
index 1110559..82d9546 100644
--- a/dlls/ntoskrnl.exe/ntoskrnl.c
+++ b/dlls/ntoskrnl.exe/ntoskrnl.c
@@ -1956,6 +1956,16 @@ VOID WINAPI KeInitializeDpc(PRKDPC Dpc, PKDEFERRED_ROUTINE DeferredRoutine, PVOI
FIXME("stub\n");
}
+
+/***********************************************************************
+ * ExReleaseResourceForThreadLite (NTOSKRNL.EXE.@)
+ */
+VOID WINAPI ExReleaseResourceForThreadLite(PERESOURCE Resource, ERESOURCE_THREAD ResourceThreadId)
+{
+ FIXME("(%p, %08lx): stub\n", Resource, ResourceThreadId);
+}
+
+
/***********************************************************************
* READ_REGISTER_BUFFER_UCHAR (NTOSKRNL.EXE.@)
*/
diff --git a/dlls/ntoskrnl.exe/ntoskrnl.exe.spec b/dlls/ntoskrnl.exe/ntoskrnl.exe.spec
index 91a01fe..b1196cb 100644
--- a/dlls/ntoskrnl.exe/ntoskrnl.exe.spec
+++ b/dlls/ntoskrnl.exe/ntoskrnl.exe.spec
@@ -168,7 +168,7 @@
@ stub ExRaiseStatus
@ stub ExRegisterCallback
@ stub ExReinitializeResourceLite
-@ stub ExReleaseResourceForThreadLite
+@ stdcall ExReleaseResourceForThreadLite(ptr long)
@ stub ExSemaphoreObjectType
@ stub ExSetResourceOwnerPointer
@ stub ExSetTimerResolution
diff --git a/include/ddk/wdm.h b/include/ddk/wdm.h
index 0d13337..6e0eaa0 100644
--- a/include/ddk/wdm.h
+++ b/include/ddk/wdm.h
@@ -31,6 +31,7 @@
typedef LONG KPRIORITY;
typedef ULONG_PTR KSPIN_LOCK, *PKSPIN_LOCK;
+typedef ULONG_PTR ERESOURCE_THREAD, *PERESOURCE_THREAD;
struct _KDPC;
struct _KAPC;
--
2.2.2

View File

@ -1,47 +0,0 @@
From df7c17e8a733a0c665ac09275a4a3e9c5b274e2f Mon Sep 17 00:00:00 2001
From: Christian Costa <titan.costa@gmail.com>
Date: Thu, 12 Feb 2015 07:11:51 +0100
Subject: ntoskrnl.exe: Add stub for ExDeleteResourceLite.
---
dlls/ntoskrnl.exe/ntoskrnl.c | 10 ++++++++++
dlls/ntoskrnl.exe/ntoskrnl.exe.spec | 2 +-
2 files changed, 11 insertions(+), 1 deletion(-)
diff --git a/dlls/ntoskrnl.exe/ntoskrnl.c b/dlls/ntoskrnl.exe/ntoskrnl.c
index 82d9546..715f302 100644
--- a/dlls/ntoskrnl.exe/ntoskrnl.c
+++ b/dlls/ntoskrnl.exe/ntoskrnl.c
@@ -1252,6 +1252,16 @@ BOOLEAN WINAPI ExAcquireResourceExclusiveLite(PERESOURCE resource, BOOLEAN wait)
/***********************************************************************
+ * ExDeleteResourceLite (NTOSKRNL.EXE.@)
+ */
+NTSTATUS WINAPI ExDeleteResourceLite(PERESOURCE resource)
+{
+ FIXME("(%p): stub\n", resource);
+ return STATUS_NOT_IMPLEMENTED;
+}
+
+
+/***********************************************************************
* ExInitializeNPagedLookasideList (NTOSKRNL.EXE.@)
*/
void WINAPI ExInitializeNPagedLookasideList(PNPAGED_LOOKASIDE_LIST Lookaside,
diff --git a/dlls/ntoskrnl.exe/ntoskrnl.exe.spec b/dlls/ntoskrnl.exe/ntoskrnl.exe.spec
index b1196cb..238c953 100644
--- a/dlls/ntoskrnl.exe/ntoskrnl.exe.spec
+++ b/dlls/ntoskrnl.exe/ntoskrnl.exe.spec
@@ -125,7 +125,7 @@
@ stdcall ExCreateCallback(ptr ptr long long)
@ stub ExDeleteNPagedLookasideList
@ stub ExDeletePagedLookasideList
-@ stub ExDeleteResourceLite
+@ stdcall ExDeleteResourceLite(ptr)
@ stub ExDesktopObjectType
@ stub ExDisableResourceBoostLite
@ stub ExEnumHandleTable
--
2.2.2

View File

@ -52,7 +52,7 @@ usage()
# Get the upstream commit sha
upstream_commit()
{
echo "61c49bd78e5c96f14870e5c21a2ff75da7ac17b2"
echo "5cf95396503d49f0249c473c1ed51e51213124c0"
}
# Show version information
@ -231,7 +231,6 @@ patch_enable_all ()
enable_secur32_ANSI_NTLM_Credentials="$1"
enable_server_ClipCursor="$1"
enable_server_CreateProcess_ACLs="$1"
enable_server_Delete_On_Close="$1"
enable_server_FileEndOfFileInformation="$1"
enable_server_File_Permissions="$1"
enable_server_Inherited_ACLs="$1"
@ -792,9 +791,6 @@ patch_enable ()
server-CreateProcess_ACLs)
enable_server_CreateProcess_ACLs="$2"
;;
server-Delete_On_Close)
enable_server_Delete_On_Close="$2"
;;
server-FileEndOfFileInformation)
enable_server_FileEndOfFileInformation="$2"
;;
@ -1580,9 +1576,6 @@ if test "$enable_category_stable" -eq 1; then
if test "$enable_server_CreateProcess_ACLs" -gt 1; then
abort "Patchset server-CreateProcess_ACLs disabled, but category-stable depends on that."
fi
if test "$enable_server_Delete_On_Close" -gt 1; then
abort "Patchset server-Delete_On_Close disabled, but category-stable depends on that."
fi
if test "$enable_setupapi_SetupDiSetDeviceInstallParamsW" -gt 1; then
abort "Patchset setupapi-SetupDiSetDeviceInstallParamsW disabled, but category-stable depends on that."
fi
@ -1700,7 +1693,6 @@ if test "$enable_category_stable" -eq 1; then
enable_opengl32_Revert_Disable_Ext=1
enable_server_ClipCursor=1
enable_server_CreateProcess_ACLs=1
enable_server_Delete_On_Close=1
enable_setupapi_SetupDiSetDeviceInstallParamsW=1
enable_shell32_RunDLL_CallEntry16=1
enable_shell32_SHFileOperation_Win9x=1
@ -3852,22 +3844,19 @@ fi
# |
# | Modified files:
# | * dlls/ntdll/atom.c, dlls/ntdll/directory.c, dlls/ntdll/env.c, dlls/ntdll/error.c, dlls/ntdll/file.c, dlls/ntdll/loader.c,
# | dlls/ntdll/nt.c, dlls/ntdll/ntdll.spec, dlls/ntdll/ntdll_misc.h, dlls/ntdll/om.c, dlls/ntdll/process.c,
# | dlls/ntdll/reg.c, dlls/ntdll/resource.c, dlls/ntdll/sec.c, dlls/ntdll/server.c, dlls/ntdll/signal_arm.c,
# | dlls/ntdll/signal_arm64.c, dlls/ntdll/signal_i386.c, dlls/ntdll/signal_powerpc.c, dlls/ntdll/signal_x86_64.c,
# | dlls/ntdll/sync.c, dlls/ntdll/thread.c, dlls/ntdll/time.c, dlls/ntdll/virtual.c, include/winternl.h,
# | tools/winegcc/winegcc.c
# | dlls/ntdll/nt.c, dlls/ntdll/ntdll_misc.h, dlls/ntdll/om.c, dlls/ntdll/process.c, dlls/ntdll/reg.c,
# | dlls/ntdll/resource.c, dlls/ntdll/sec.c, dlls/ntdll/server.c, dlls/ntdll/signal_arm.c, dlls/ntdll/signal_arm64.c,
# | dlls/ntdll/signal_i386.c, dlls/ntdll/signal_powerpc.c, dlls/ntdll/signal_x86_64.c, dlls/ntdll/sync.c,
# | dlls/ntdll/thread.c, dlls/ntdll/time.c, dlls/ntdll/virtual.c, tools/winegcc/winegcc.c
# |
if test "$enable_ntdll_Syscall_Wrappers" -eq 1; then
patch_apply ntdll-Syscall_Wrappers/0001-include-Add-missing-definitions-for-Nt-functions.patch
patch_apply ntdll-Syscall_Wrappers/0002-winegcc-Pass-read_only_relocs-suppress-to-the-linker.patch
patch_apply ntdll-Syscall_Wrappers/0003-ntdll-Use-wrapper-functions-for-syscalls.patch
patch_apply ntdll-Syscall_Wrappers/0004-ntdll-APCs-should-call-the-implementation-instead-of.patch
patch_apply ntdll-Syscall_Wrappers/0005-ntdll-Syscalls-should-not-call-Nt-Ex-thunk-wrappers.patch
patch_apply ntdll-Syscall_Wrappers/0006-ntdll-Run-directory-initialization-function-early-du.patch
patch_apply ntdll-Syscall_Wrappers/0007-ntdll-Use-close_handle-instead-of-NtClose-for-intern.patch
patch_apply ntdll-Syscall_Wrappers/0001-winegcc-Pass-read_only_relocs-suppress-to-the-linker.patch
patch_apply ntdll-Syscall_Wrappers/0002-ntdll-Use-wrapper-functions-for-syscalls.patch
patch_apply ntdll-Syscall_Wrappers/0003-ntdll-APCs-should-call-the-implementation-instead-of.patch
patch_apply ntdll-Syscall_Wrappers/0004-ntdll-Syscalls-should-not-call-Nt-Ex-thunk-wrappers.patch
patch_apply ntdll-Syscall_Wrappers/0005-ntdll-Run-directory-initialization-function-early-du.patch
patch_apply ntdll-Syscall_Wrappers/0006-ntdll-Use-close_handle-instead-of-NtClose-for-intern.patch
(
echo '+ { "Sebastian Lackner", "include: Add missing definitions for Nt* functions.", 1 },';
echo '+ { "Sebastian Lackner", "winegcc: Pass '\''-read_only_relocs suppress'\'' to the linker on OSX.", 1 },';
echo '+ { "Sebastian Lackner", "ntdll: Use wrapper functions for syscalls.", 1 },';
echo '+ { "Sebastian Lackner", "ntdll: APCs should call the implementation instead of the syscall thunk.", 1 },';
@ -4438,14 +4427,11 @@ if test "$enable_ntoskrnl_Stubs" -eq 1; then
patch_apply ntoskrnl-Stubs/0007-ntoskrnl.exe-Improve-KeInitializeSemaphore-stub.patch
patch_apply ntoskrnl-Stubs/0008-ntoskrnl.exe-Improve-KeInitializeTimerEx-stub.patch
patch_apply ntoskrnl-Stubs/0009-ntoskrnl.exe-Fix-IoReleaseCancelSpinLock-argument.patch
patch_apply ntoskrnl-Stubs/0010-ntoskrnl.exe-Add-stub-for-ExAcquireResourceExclusive.patch
patch_apply ntoskrnl-Stubs/0011-ntoskrnl.exe-Add-stub-for-ExReleaseResourceForThread.patch
patch_apply ntoskrnl-Stubs/0012-ntoskrnl.exe-Add-stub-for-ExDeleteResourceLite.patch
patch_apply ntoskrnl-Stubs/0013-ntoskrnl.exe-Implement-MmMapLockedPages-and-MmUnmapL.patch
patch_apply ntoskrnl-Stubs/0014-ntoskrnl.exe-Implement-KeInitializeMutex.patch
patch_apply ntoskrnl-Stubs/0015-ntoskrnl.exe-Add-stub-for-ProbeForRead.patch
patch_apply ntoskrnl-Stubs/0016-ntoskrnl.exe-Add-stub-for-ProbeForWrite.patch
patch_apply ntoskrnl-Stubs/0017-ntoskrnl.exe-Add-stub-for-PsRemoveLoadImageNotifyRou.patch
patch_apply ntoskrnl-Stubs/0010-ntoskrnl.exe-Implement-MmMapLockedPages-and-MmUnmapL.patch
patch_apply ntoskrnl-Stubs/0011-ntoskrnl.exe-Implement-KeInitializeMutex.patch
patch_apply ntoskrnl-Stubs/0012-ntoskrnl.exe-Add-stub-for-ProbeForRead.patch
patch_apply ntoskrnl-Stubs/0013-ntoskrnl.exe-Add-stub-for-ProbeForWrite.patch
patch_apply ntoskrnl-Stubs/0014-ntoskrnl.exe-Add-stub-for-PsRemoveLoadImageNotifyRou.patch
(
echo '+ { "Austin English", "ntoskrnl.exe: add KeWaitForMultipleObjects stub.", 1 },';
echo '+ { "Alexander Morozov", "ntoskrnl.exe: Add stub for IoGetAttachedDeviceReference.", 1 },';
@ -4456,9 +4442,6 @@ if test "$enable_ntoskrnl_Stubs" -eq 1; then
echo '+ { "Alexander Morozov", "ntoskrnl.exe: Improve KeInitializeSemaphore stub.", 1 },';
echo '+ { "Alexander Morozov", "ntoskrnl.exe: Improve KeInitializeTimerEx stub.", 1 },';
echo '+ { "Christian Costa", "ntoskrnl.exe: Fix IoReleaseCancelSpinLock argument.", 1 },';
echo '+ { "Christian Costa", "ntoskrnl.exe: Add stub for ExAcquireResourceExclusiveLite.", 1 },';
echo '+ { "Christian Costa", "ntoskrnl.exe: Add stub for ExReleaseResourceForThreadLite.", 1 },';
echo '+ { "Christian Costa", "ntoskrnl.exe: Add stub for ExDeleteResourceLite.", 1 },';
echo '+ { "Christian Costa", "ntoskrnl.exe: Implement MmMapLockedPages and MmUnmapLockedPages.", 1 },';
echo '+ { "Alexander Morozov", "ntoskrnl.exe: Implement KeInitializeMutex.", 1 },';
echo '+ { "Austin English", "ntoskrnl.exe: Add stub for ProbeForRead.", 1 },';
@ -4723,21 +4706,6 @@ if test "$enable_server_ClipCursor" -eq 1; then
) >> "$patchlist"
fi
# Patchset server-Delete_On_Close
# |
# | This patchset fixes the following Wine bugs:
# | * [#38417] Fix handling of opening read-only files for FILE_DELETE_ON_CLOSE
# |
# | Modified files:
# | * dlls/kernel32/file.c, dlls/kernel32/tests/file.c, server/fd.c
# |
if test "$enable_server_Delete_On_Close" -eq 1; then
patch_apply server-Delete_On_Close/0001-server-Fix-handling-of-opening-read-only-files-with-.patch
(
echo '+ { "Sebastian Lackner", "server: Fix handling of opening read-only files with FILE_DELETE_ON_CLOSE.", 1 },';
) >> "$patchlist"
fi
# Patchset server-FileEndOfFileInformation
# |
# | Modified files:

View File

@ -1,86 +0,0 @@
From 4d0561f1b3bbf5d72e49ddeb14f7ed25eb9c2d01 Mon Sep 17 00:00:00 2001
From: Sebastian Lackner <sebastian@fds-team.de>
Date: Fri, 17 Apr 2015 12:40:38 +0200
Subject: server: Fix handling of opening read-only files with
FILE_DELETE_ON_CLOSE.
---
dlls/kernel32/file.c | 3 +--
dlls/kernel32/tests/file.c | 6 ------
server/fd.c | 9 +++++++++
3 files changed, 10 insertions(+), 8 deletions(-)
diff --git a/dlls/kernel32/file.c b/dlls/kernel32/file.c
index 5ea024f..f6ee97e 100644
--- a/dlls/kernel32/file.c
+++ b/dlls/kernel32/file.c
@@ -1683,8 +1683,7 @@ BOOL WINAPI DeleteFileW( LPCWSTR path )
attr.SecurityDescriptor = NULL;
attr.SecurityQualityOfService = NULL;
- status = NtCreateFile(&hFile, GENERIC_READ | GENERIC_WRITE | SYNCHRONIZE | DELETE,
- &attr, &io, NULL, 0,
+ status = NtCreateFile(&hFile, SYNCHRONIZE | DELETE, &attr, &io, NULL, 0,
FILE_SHARE_READ | FILE_SHARE_WRITE | FILE_SHARE_DELETE,
FILE_OPEN, FILE_DELETE_ON_CLOSE | FILE_NON_DIRECTORY_FILE, NULL, 0);
if (status == STATUS_SUCCESS) status = NtClose(hFile);
diff --git a/dlls/kernel32/tests/file.c b/dlls/kernel32/tests/file.c
index ca49863..134f877 100644
--- a/dlls/kernel32/tests/file.c
+++ b/dlls/kernel32/tests/file.c
@@ -361,17 +361,13 @@ static void test__lcreat( void )
status = NtCreateFile( &file, DELETE, &attr, &io, NULL, 0,
FILE_SHARE_READ | FILE_SHARE_WRITE | FILE_SHARE_DELETE,
FILE_OPEN, FILE_DELETE_ON_CLOSE | FILE_NON_DIRECTORY_FILE, NULL, 0 );
- todo_wine
ok( status == STATUS_CANNOT_DELETE, "expected STATUS_CANNOT_DELETE, got %08x\n", status );
if (!status) CloseHandle( file );
RtlFreeUnicodeString( &filenameW );
- todo_wine
ok( GetFileAttributesA( filename ) != INVALID_FILE_ATTRIBUTES, "file was deleted\n" );
- todo_wine
ok( SetFileAttributesA(filename, FILE_ATTRIBUTE_NORMAL ) != 0, "couldn't change attributes on file\n" );
- todo_wine
ok( DeleteFileA( filename ) != 0, "now it should be possible to delete the file\n" );
filehandle = _lcreat( filename, 2 );
@@ -1784,14 +1780,12 @@ static void test_DeleteFileA( void )
SetLastError(0xdeadbeef);
ret = DeleteFileA(temp_file);
-todo_wine
ok(ret, "DeleteFile error %d\n", GetLastError());
SetLastError(0xdeadbeef);
ret = CloseHandle(hfile);
ok(ret, "CloseHandle error %d\n", GetLastError());
ret = DeleteFileA(temp_file);
-todo_wine
ok(!ret, "DeleteFile should fail\n");
SetLastError(0xdeadbeef);
diff --git a/server/fd.c b/server/fd.c
index fe778f1..500d273 100644
--- a/server/fd.c
+++ b/server/fd.c
@@ -1834,6 +1834,15 @@ struct fd *open_fd( struct fd *root, const char *name, int flags, mode_t *mode,
list_add_head( &inode->open, &fd->inode_entry );
closed_fd = NULL;
+ /* can't unlink files we don't have permission to access */
+ if ((options & FILE_DELETE_ON_CLOSE) && S_ISREG(st.st_mode) &&
+ !(flags & O_CREAT) && !(st.st_mode & (S_IWUSR | S_IWGRP | S_IWOTH)))
+ {
+ /* FIXME: instead of checking for O_CREAT it should check if the file was created */
+ set_error( STATUS_CANNOT_DELETE );
+ goto error;
+ }
+
/* check directory options */
if ((options & FILE_DIRECTORY_FILE) && !S_ISDIR(st.st_mode))
{
--
2.6.1

View File

@ -1,2 +0,0 @@
Fixes: [38417] Fix handling of opening read-only files for FILE_DELETE_ON_CLOSE
Category: stable