Rebase against 9eaa37249948c4d77df37cf3649ad1db59412fcb.

[amstream-GetMultiMediaStream]
Removed patch to implement AMStream GetMultiMediaStream functions (accepted
upstream).

[mscoree-Buffer_Overflow]
Removed patch to avoid buffer overflow in mono print handler for large strings
(accepted upstream).

[ntdll-Fix_Free]
Removed patch to fix a handle leak in RemoveDirectoryW (accepted upstream).

[ntdll-FreeBSD_Directory]
Removed patch to use POSIX implementation to enumerate directory content on
FreeBSD (fixed upstream).
This commit is contained in:
Sebastian Lackner 2016-05-04 05:12:29 +02:00
parent 8e5acbdae3
commit 96068c4fe2
16 changed files with 102 additions and 427 deletions

View File

@ -1,88 +0,0 @@
From 4d0e6bbc00bd49b8dcfce494bd7380c49f58f92b Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Michael=20M=C3=BCller?= <michael@fds-team.de>
Date: Tue, 28 Jul 2015 18:21:20 +0200
Subject: amstream: Implement IAMMediaStream::GetMultiMediaStream.
---
dlls/amstream/mediastream.c | 40 ++++++++++++++++++++++++++++++++--------
1 file changed, 32 insertions(+), 8 deletions(-)
diff --git a/dlls/amstream/mediastream.c b/dlls/amstream/mediastream.c
index 947be1e..e4e15d7 100644
--- a/dlls/amstream/mediastream.c
+++ b/dlls/amstream/mediastream.c
@@ -110,9 +110,15 @@ static HRESULT WINAPI DirectDrawMediaStreamImpl_IAMMediaStream_GetMultiMediaStre
{
DirectDrawMediaStreamImpl *This = impl_from_DirectDrawMediaStream_IAMMediaStream(iface);
- FIXME("(%p/%p)->(%p) stub!\n", This, iface, multi_media_stream);
+ TRACE("(%p/%p)->(%p) stub!\n", This, iface, multi_media_stream);
- return S_FALSE;
+ if (!multi_media_stream)
+ return E_POINTER;
+
+ IMultiMediaStream_AddRef(This->parent);
+ *multi_media_stream = This->parent;
+
+ return S_OK;
}
static HRESULT WINAPI DirectDrawMediaStreamImpl_IAMMediaStream_GetInformation(IAMMediaStream *iface,
@@ -271,9 +277,15 @@ static HRESULT WINAPI DirectDrawMediaStreamImpl_IDirectDrawMediaStream_GetMultiM
{
DirectDrawMediaStreamImpl *This = impl_from_IDirectDrawMediaStream(iface);
- FIXME("(%p/%p)->(%p) stub!\n", This, iface, ppMultiMediaStream);
+ TRACE("(%p/%p)->(%p) stub!\n", This, iface, ppMultiMediaStream);
- return S_FALSE;
+ if (!ppMultiMediaStream)
+ return E_POINTER;
+
+ IMultiMediaStream_AddRef(This->parent);
+ *ppMultiMediaStream = This->parent;
+
+ return S_OK;
}
static HRESULT WINAPI DirectDrawMediaStreamImpl_IDirectDrawMediaStream_GetInformation(IDirectDrawMediaStream *iface,
@@ -511,9 +523,15 @@ static HRESULT WINAPI AudioMediaStreamImpl_IAMMediaStream_GetMultiMediaStream(IA
{
AudioMediaStreamImpl *This = impl_from_AudioMediaStream_IAMMediaStream(iface);
- FIXME("(%p/%p)->(%p) stub!\n", This, iface, multi_media_stream);
+ TRACE("(%p/%p)->(%p)\n", This, iface, multi_media_stream);
- return S_FALSE;
+ if (!multi_media_stream)
+ return E_POINTER;
+
+ IMultiMediaStream_AddRef(This->parent);
+ *multi_media_stream = This->parent;
+
+ return S_OK;
}
static HRESULT WINAPI AudioMediaStreamImpl_IAMMediaStream_GetInformation(IAMMediaStream *iface,
@@ -672,9 +690,15 @@ static HRESULT WINAPI AudioMediaStreamImpl_IAudioMediaStream_GetMultiMediaStream
{
AudioMediaStreamImpl *This = impl_from_IAudioMediaStream(iface);
- FIXME("(%p/%p)->(%p) stub!\n", iface, This, multimedia_stream);
+ TRACE("(%p/%p)->(%p)\n", iface, This, multimedia_stream);
- return S_FALSE;
+ if (!multimedia_stream)
+ return E_POINTER;
+
+ IMultiMediaStream_AddRef(This->parent);
+ *multimedia_stream = This->parent;
+
+ return S_OK;
}
static HRESULT WINAPI AudioMediaStreamImpl_IAudioMediaStream_GetInformation(IAudioMediaStream *iface,
--
2.4.5

View File

@ -1 +0,0 @@
Fixes: [37090] Implement AMStream GetMultiMediaStream functions

View File

@ -1,4 +1,4 @@
From 66ea1296b0b3493271a7611bfa56b0d74b34b16c Mon Sep 17 00:00:00 2001
From 4283d60c4b362e518c7028484b44d9df2ecd27cc Mon Sep 17 00:00:00 2001
From: Christian Costa <titan.costa@gmail.com>
Date: Fri, 19 Dec 2014 22:31:46 +0100
Subject: d3dx9_36: Implement ID3DXEffect_FindNextValidTechnique + add tests.
@ -9,10 +9,10 @@ Subject: d3dx9_36: Implement ID3DXEffect_FindNextValidTechnique + add tests.
2 files changed, 91 insertions(+), 3 deletions(-)
diff --git a/dlls/d3dx9_36/effect.c b/dlls/d3dx9_36/effect.c
index a210bb3..2fbc1cb 100644
index da7de54..809f11e 100644
--- a/dlls/d3dx9_36/effect.c
+++ b/dlls/d3dx9_36/effect.c
@@ -3483,13 +3483,41 @@ static HRESULT WINAPI ID3DXEffectImpl_ValidateTechnique(ID3DXEffect* iface, D3DX
@@ -3542,13 +3542,41 @@ static HRESULT WINAPI ID3DXEffectImpl_ValidateTechnique(ID3DXEffect* iface, D3DX
return D3D_OK;
}
@ -58,11 +58,11 @@ index a210bb3..2fbc1cb 100644
static BOOL WINAPI ID3DXEffectImpl_IsParameterUsed(ID3DXEffect* iface, D3DXHANDLE parameter, D3DXHANDLE technique)
diff --git a/dlls/d3dx9_36/tests/effect.c b/dlls/d3dx9_36/tests/effect.c
index c388e7d..8653e0e 100644
index 4ef4d4c..59cd6cc 100644
--- a/dlls/d3dx9_36/tests/effect.c
+++ b/dlls/d3dx9_36/tests/effect.c
@@ -3886,6 +3886,65 @@ static void test_effect_preshader(IDirect3DDevice9 *device)
effect->lpVtbl->Release(effect);
@@ -3983,6 +3983,65 @@ static void test_effect_preshader_ops(IDirect3DDevice9 *device)
&op_tests[i]);
}
+/*
@ -127,14 +127,14 @@ index c388e7d..8653e0e 100644
START_TEST(effect)
{
HWND wnd;
@@ -3927,6 +3986,7 @@ START_TEST(effect)
test_effect_compilation_errors(device);
@@ -4025,6 +4084,7 @@ START_TEST(effect)
test_effect_states(device);
test_effect_preshader(device);
test_effect_preshader_ops(device);
+ test_effect_technique_validation(device);
count = IDirect3DDevice9_Release(device);
ok(count == 0, "The device was not properly freed: refcount %u\n", count);
--
2.7.1
2.8.0

View File

@ -1,33 +0,0 @@
From 11da1a0af07594aebccad786e536a05a74888d04 Mon Sep 17 00:00:00 2001
From: Sebastian Lackner <sebastian@fds-team.de>
Date: Fri, 29 Apr 2016 17:55:43 +0200
Subject: mscoree: Avoid buffer overflow when mono print handler returns huge
string at once.
Signed-off-by: Sebastian Lackner <sebastian@fds-team.de>
---
dlls/mscoree/metahost.c | 8 +++++++-
1 file changed, 7 insertions(+), 1 deletion(-)
diff --git a/dlls/mscoree/metahost.c b/dlls/mscoree/metahost.c
index 252740d..30b9739 100644
--- a/dlls/mscoree/metahost.c
+++ b/dlls/mscoree/metahost.c
@@ -272,7 +272,13 @@ static void CDECL mono_shutdown_callback_fn(MonoProfiler *prof)
static void CDECL mono_print_handler_fn(const char *string, INT is_stdout)
{
- wine_dbg_printf("%s", string);
+ const char *p;
+ for (; *string; string = p)
+ {
+ if ((p = strstr(string, "\n"))) p++;
+ else p = string + strlen(string);
+ wine_dbg_printf("%.*s", (int)(p - string), string);
+ }
}
static HRESULT CLRRuntimeInfo_GetRuntimeHost(CLRRuntimeInfo *This, RuntimeHost **result)
--
2.8.0

View File

@ -1 +0,0 @@
Fixes: Avoid buffer overflow in mono print handler for large strings

View File

@ -1,20 +1,20 @@
From 119ed83d6517c6a92ff8d30f671ab4c02ebb700c Mon Sep 17 00:00:00 2001
From 547a16f5cfaae95ca1bc3e18833132ae89b8e88e Mon Sep 17 00:00:00 2001
From: "Erich E. Hoover" <erich.e.hoover@gmail.com>
Date: Wed, 20 Aug 2014 15:28:00 -0600
Subject: ntdll: Implement storing DOS attributes in NtCreateFile.
---
dlls/ntdll/file.c | 76 ++++++++++++++++++++++++++++----------------
dlls/ntdll/tests/directory.c | 20 ++++++------
dlls/ntdll/tests/directory.c | 24 +++++++-------
include/wine/port.h | 2 ++
libs/port/xattr.c | 20 ++++++++++++
4 files changed, 80 insertions(+), 38 deletions(-)
4 files changed, 82 insertions(+), 40 deletions(-)
diff --git a/dlls/ntdll/file.c b/dlls/ntdll/file.c
index bcedc42..9b54854 100644
index 37446a9..0b33acd 100644
--- a/dlls/ntdll/file.c
+++ b/dlls/ntdll/file.c
@@ -219,6 +219,21 @@ int get_file_info( const char *path, struct stat *st, ULONG *attr )
@@ -224,6 +224,21 @@ int get_file_info( const char *path, struct stat *st, ULONG *attr )
return ret;
}
@ -36,7 +36,7 @@ index bcedc42..9b54854 100644
/**************************************************************************
* FILE_CreateFile (internal)
* Open a file.
@@ -230,6 +245,10 @@ static NTSTATUS FILE_CreateFile( PHANDLE handle, ACCESS_MASK access, POBJECT_ATT
@@ -235,6 +250,10 @@ static NTSTATUS FILE_CreateFile( PHANDLE handle, ACCESS_MASK access, POBJECT_ATT
ULONG attributes, ULONG sharing, ULONG disposition,
ULONG options, PVOID ea_buffer, ULONG ea_length )
{
@ -47,7 +47,7 @@ index bcedc42..9b54854 100644
ANSI_STRING unix_name;
BOOL created = FALSE;
@@ -273,37 +292,34 @@ static NTSTATUS FILE_CreateFile( PHANDLE handle, ACCESS_MASK access, POBJECT_ATT
@@ -278,37 +297,34 @@ static NTSTATUS FILE_CreateFile( PHANDLE handle, ACCESS_MASK access, POBJECT_ATT
io->u.Status = STATUS_SUCCESS;
}
@ -109,7 +109,7 @@ index bcedc42..9b54854 100644
if (io->u.Status == STATUS_SUCCESS)
{
@@ -325,6 +341,11 @@ static NTSTATUS FILE_CreateFile( PHANDLE handle, ACCESS_MASK access, POBJECT_ATT
@@ -330,6 +346,11 @@ static NTSTATUS FILE_CreateFile( PHANDLE handle, ACCESS_MASK access, POBJECT_ATT
io->Information = FILE_OVERWRITTEN;
break;
}
@ -121,7 +121,7 @@ index bcedc42..9b54854 100644
}
else if (io->u.Status == STATUS_TOO_MANY_OPENED_FILES)
{
@@ -332,6 +353,7 @@ static NTSTATUS FILE_CreateFile( PHANDLE handle, ACCESS_MASK access, POBJECT_ATT
@@ -337,6 +358,7 @@ static NTSTATUS FILE_CreateFile( PHANDLE handle, ACCESS_MASK access, POBJECT_ATT
if (!once++) ERR_(winediag)( "Too many open files, ulimit -n probably needs to be increased\n" );
}
@ -130,47 +130,51 @@ index bcedc42..9b54854 100644
}
diff --git a/dlls/ntdll/tests/directory.c b/dlls/ntdll/tests/directory.c
index f93c623..aa8e97f 100644
index 431471a..e579573 100644
--- a/dlls/ntdll/tests/directory.c
+++ b/dlls/ntdll/tests/directory.c
@@ -51,7 +51,6 @@ static NTSTATUS (WINAPI *pRtlWow64EnableFsRedirectionEx)( ULONG disable, ULONG *
@@ -55,7 +55,6 @@ static NTSTATUS (WINAPI *pRtlWow64EnableFsRedirectionEx)( ULONG disable, ULONG *
/* The attribute sets to test */
static struct testfile_s {
- BOOL todo; /* set if it doesn't work on wine yet */
BOOL attr_done; /* set if attributes were tested for this file already */
const DWORD attr; /* desired attribute */
const char *name; /* filename to use */
@@ -60,14 +59,14 @@ static struct testfile_s {
WCHAR name[20]; /* filename to use */
@@ -63,16 +62,16 @@ static struct testfile_s {
const char *description; /* for error messages */
int nfound; /* How many were found (expect 1) */
WCHAR nameW[20]; /* unicode version of name (filled in later) */
} testfiles[] = {
- { 0, 0, FILE_ATTRIBUTE_NORMAL, "longfilename.tmp", NULL, "normal" },
- { 0, 0, FILE_ATTRIBUTE_NORMAL, "n.tmp", NULL, "normal" },
- { 1, 0, FILE_ATTRIBUTE_HIDDEN, "h.tmp", NULL, "hidden" },
- { 1, 0, FILE_ATTRIBUTE_SYSTEM, "s.tmp", NULL, "system" },
- { 0, 0, FILE_ATTRIBUTE_DIRECTORY, "d.tmp", NULL, "directory" },
- { 0, 0, FILE_ATTRIBUTE_DIRECTORY, ".", NULL, ". directory" },
- { 0, 0, FILE_ATTRIBUTE_DIRECTORY, "..", NULL, ".. directory" },
- { 0, 0, 0, NULL }
+ { 0, FILE_ATTRIBUTE_NORMAL, "longfilename.tmp", NULL, "normal" },
+ { 0, FILE_ATTRIBUTE_NORMAL, "n.tmp", NULL, "normal" },
+ { 0, FILE_ATTRIBUTE_HIDDEN, "h.tmp", NULL, "hidden" },
+ { 0, FILE_ATTRIBUTE_SYSTEM, "s.tmp", NULL, "system" },
+ { 0, FILE_ATTRIBUTE_DIRECTORY, "d.tmp", NULL, "directory" },
+ { 0, FILE_ATTRIBUTE_DIRECTORY, ".", NULL, ". directory" },
+ { 0, FILE_ATTRIBUTE_DIRECTORY, "..", NULL, ".. directory" },
+ { 0, 0, NULL }
- { 0, 0, FILE_ATTRIBUTE_NORMAL, {'l','o','n','g','f','i','l','e','n','a','m','e','.','t','m','p'}, "normal" },
- { 0, 0, FILE_ATTRIBUTE_NORMAL, {'n','.','t','m','p',}, "normal" },
- { 1, 0, FILE_ATTRIBUTE_HIDDEN, {'h','.','t','m','p',}, "hidden" },
- { 1, 0, FILE_ATTRIBUTE_SYSTEM, {'s','.','t','m','p',}, "system" },
- { 0, 0, FILE_ATTRIBUTE_DIRECTORY, {'d','.','t','m','p',}, "directory" },
- { 0, 0, FILE_ATTRIBUTE_NORMAL, {0xe9,'a','.','t','m','p'}, "normal" },
- { 0, 0, FILE_ATTRIBUTE_NORMAL, {0xc9,'b','.','t','m','p'}, "normal" },
- { 0, 0, FILE_ATTRIBUTE_NORMAL, {'e','a','.','t','m','p'}, "normal" },
- { 0, 0, FILE_ATTRIBUTE_DIRECTORY, {'.'}, ". directory" },
- { 0, 0, FILE_ATTRIBUTE_DIRECTORY, {'.','.'}, ".. directory" }
+ { 0, FILE_ATTRIBUTE_NORMAL, {'l','o','n','g','f','i','l','e','n','a','m','e','.','t','m','p'}, "normal" },
+ { 0, FILE_ATTRIBUTE_NORMAL, {'n','.','t','m','p',}, "normal" },
+ { 0, FILE_ATTRIBUTE_HIDDEN, {'h','.','t','m','p',}, "hidden" },
+ { 0, FILE_ATTRIBUTE_SYSTEM, {'s','.','t','m','p',}, "system" },
+ { 0, FILE_ATTRIBUTE_DIRECTORY, {'d','.','t','m','p',}, "directory" },
+ { 0, FILE_ATTRIBUTE_NORMAL, {0xe9,'a','.','t','m','p'}, "normal" },
+ { 0, FILE_ATTRIBUTE_NORMAL, {0xc9,'b','.','t','m','p'}, "normal" },
+ { 0, FILE_ATTRIBUTE_NORMAL, {'e','a','.','t','m','p'}, "normal" },
+ { 0, FILE_ATTRIBUTE_DIRECTORY, {'.'}, ". directory" },
+ { 0, FILE_ATTRIBUTE_DIRECTORY, {'.','.'}, ".. directory" }
};
static const int max_test_dir_size = 20; /* size of above plus some for .. etc */
@@ -148,8 +147,7 @@ static void tally_test_file(FILE_BOTH_DIRECTORY_INFORMATION *dir_info)
if (namelen != len || memcmp(nameW, testfiles[i].nameW, len*sizeof(WCHAR)))
static const int test_dir_count = sizeof(testfiles) / sizeof(testfiles[0]);
static const int max_test_dir_size = sizeof(testfiles) / sizeof(testfiles[0]) + 5; /* size of above plus some for .. etc */
@@ -162,8 +161,7 @@ static void tally_test_file(FILE_BOTH_DIRECTORY_INFORMATION *dir_info)
if (namelen != len || memcmp(nameW, testfiles[i].name, len*sizeof(WCHAR)))
continue;
if (!testfiles[i].attr_done) {
- todo_wine_if (testfiles[i].todo)
- ok (attrib == (testfiles[i].attr & attribmask), "file %s: expected %s (%x), got %x (is your linux new enough?)\n", testfiles[i].name, testfiles[i].description, testfiles[i].attr, attrib);
+ ok (attrib == (testfiles[i].attr & attribmask), "file %s: expected %s (%x), got %x (is your linux new enough?)\n", testfiles[i].name, testfiles[i].description, testfiles[i].attr, attrib);
- ok (attrib == (testfiles[i].attr & attribmask), "file %s: expected %s (%x), got %x (is your linux new enough?)\n", wine_dbgstr_w(testfiles[i].name), testfiles[i].description, testfiles[i].attr, attrib);
+ ok (attrib == (testfiles[i].attr & attribmask), "file %s: expected %s (%x), got %x (is your linux new enough?)\n", wine_dbgstr_w(testfiles[i].name), testfiles[i].description, testfiles[i].attr, attrib);
testfiles[i].attr_done = TRUE;
}
testfiles[i].nfound++;
@ -216,5 +220,5 @@ index 6918c99..683e7a6 100644
+#endif
+}
--
2.7.1
2.8.0

View File

@ -1,4 +1,4 @@
From 866f4f12b34e5dfdf24da8074c5d9d4aa7a7f77a Mon Sep 17 00:00:00 2001
From 80ea1e2a8dacb2ca57549236efb236669cc9153f Mon Sep 17 00:00:00 2001
From: "Erich E. Hoover" <erich.e.hoover@gmail.com>
Date: Wed, 20 Aug 2014 11:26:48 -0600
Subject: ntdll: Perform the Unix-style hidden file check within the unified
@ -11,10 +11,10 @@ Subject: ntdll: Perform the Unix-style hidden file check within the unified
3 files changed, 10 insertions(+), 15 deletions(-)
diff --git a/dlls/ntdll/directory.c b/dlls/ntdll/directory.c
index 41e7115..3975612 100644
index 223b842..8b13cdc 100644
--- a/dlls/ntdll/directory.c
+++ b/dlls/ntdll/directory.c
@@ -1209,17 +1209,17 @@ static DWORD WINAPI init_options( RTL_RUN_ONCE *once, void *param, void **contex
@@ -1306,17 +1306,17 @@ static DWORD WINAPI init_options( RTL_RUN_ONCE *once, void *param, void **contex
*
* Check if the specified file should be hidden based on its name and the show dot files option.
*/
@ -37,16 +37,16 @@ index 41e7115..3975612 100644
if (p == end || *p != '.') return FALSE;
/* make sure it isn't '.' or '..' */
if (p + 1 == end) return FALSE;
@@ -1434,9 +1434,6 @@ static union file_directory_info *append_entry( void *info_ptr, IO_STATUS_BLOCK
TRACE( "ignoring file %s\n", long_name );
return NULL;
@@ -1548,9 +1548,6 @@ static NTSTATUS get_dir_data_entry( struct dir_data *dir_data, void *info_ptr, I
TRACE( "ignoring file %s\n", names->unix_name );
return STATUS_SUCCESS;
}
- if (!show_dot_files && long_name[0] == '.' && long_name[1] && (long_name[1] != '.' || long_name[2]))
- if (!show_dot_files && names->long_name[0] == '.' && names->long_name[1] &&
- (names->long_name[1] != '.' || names->long_name[2]))
- attributes |= FILE_ATTRIBUTE_HIDDEN;
-
total_len = dir_info_size( class, long_len );
if (io->Information + total_len > max_length)
{
if (st.st_dev != dir_data->id.dev) st.st_ino = 0; /* ignore inode if on a different device */
diff --git a/dlls/ntdll/file.c b/dlls/ntdll/file.c
index 0b33acd..24c66bc 100644
--- a/dlls/ntdll/file.c

View File

@ -1,51 +1,50 @@
From 27f64eefe26b79cf7f0a0c6bc640509f759aad91 Mon Sep 17 00:00:00 2001
From 1332e777815c624db046e5e9ece93a789ff72870 Mon Sep 17 00:00:00 2001
From: Qian Hong <qhong@codeweavers.com>
Date: Thu, 22 Oct 2015 15:54:30 +0800
Subject: ntdll: Implement FileNamesInformation class support.
---
dlls/ntdll/directory.c | 9 +++++++++
1 file changed, 9 insertions(+)
dlls/ntdll/directory.c | 8 ++++++++
1 file changed, 8 insertions(+)
diff --git a/dlls/ntdll/directory.c b/dlls/ntdll/directory.c
index f7fa951..30e7d1d 100644
index 223b842..2b54e14 100644
--- a/dlls/ntdll/directory.c
+++ b/dlls/ntdll/directory.c
@@ -178,6 +178,7 @@ union file_directory_info
@@ -159,6 +159,7 @@ union file_directory_info
FILE_FULL_DIRECTORY_INFORMATION full;
FILE_ID_BOTH_DIRECTORY_INFORMATION id_both;
FILE_ID_FULL_DIRECTORY_INFORMATION id_full;
+ FILE_NAMES_INFORMATION names;
};
struct dir_data
@@ -271,6 +272,8 @@ static inline unsigned int dir_info_size( FILE_INFORMATION_CLASS class, unsigned
return (FIELD_OFFSET( FILE_ID_BOTH_DIRECTORY_INFORMATION, FileName[len] ) + 7) & ~7;
struct dir_data_buffer
@@ -277,6 +278,8 @@ static inline unsigned int dir_info_size( FILE_INFORMATION_CLASS class, unsigned
return offsetof( FILE_ID_BOTH_DIRECTORY_INFORMATION, FileName[len] );
case FileIdFullDirectoryInformation:
return (FIELD_OFFSET( FILE_ID_FULL_DIRECTORY_INFORMATION, FileName[len] ) + 7) & ~7;
return offsetof( FILE_ID_FULL_DIRECTORY_INFORMATION, FileName[len] );
+ case FileNamesInformation:
+ return (FIELD_OFFSET( FILE_NAMES_INFORMATION, FileName[len] ) + 7) & ~7;
+ return offsetof( FILE_NAMES_INFORMATION, FileName[len] );
default:
assert(0);
return 0;
@@ -1506,6 +1509,11 @@ static union file_directory_info *append_entry( struct dir_data *dir_data, void
filename = info->id_both.FileName;
@@ -1600,6 +1603,10 @@ static NTSTATUS get_dir_data_entry( struct dir_data *dir_data, void *info_ptr, I
info->id_both.FileNameLength = name_len;
break;
+ case FileNamesInformation:
+ info->names.FileNameLength = long_len * sizeof(WCHAR);
+ filename = info->names.FileName;
+ info->names.FileNameLength = name_len;
+ break;
+
default:
assert(0);
return NULL;
@@ -2356,6 +2364,7 @@ NTSTATUS WINAPI NtQueryDirectoryFile( HANDLE handle, HANDLE event,
return 0;
@@ -1990,6 +1997,7 @@ NTSTATUS WINAPI NtQueryDirectoryFile( HANDLE handle, HANDLE event,
case FileFullDirectoryInformation:
case FileIdBothDirectoryInformation:
case FileIdFullDirectoryInformation:
+ case FileNamesInformation:
if (length < dir_info_size( info_class, 1 )) return STATUS_INFO_LENGTH_MISMATCH;
if (length < dir_info_align( dir_info_size( info_class, 1 ))) return STATUS_INFO_LENGTH_MISMATCH;
if (!buffer) return STATUS_ACCESS_VIOLATION;
break;
--

View File

@ -1,46 +0,0 @@
From fbb6ccb252d14593cefa5e47a5a6566406f79c40 Mon Sep 17 00:00:00 2001
From: Sebastian Lackner <sebastian@fds-team.de>
Date: Thu, 28 Aug 2014 05:36:01 +0200
Subject: kernel32: Fix leaking directory handle in RemoveDirectoryW. (try 2)
---
dlls/kernel32/path.c | 17 +++++++++++------
1 file changed, 11 insertions(+), 6 deletions(-)
diff --git a/dlls/kernel32/path.c b/dlls/kernel32/path.c
index 09fb04b..7e20dc3 100644
--- a/dlls/kernel32/path.c
+++ b/dlls/kernel32/path.c
@@ -1612,18 +1612,23 @@ BOOL WINAPI RemoveDirectoryW( LPCWSTR path )
status = NtOpenFile( &handle, DELETE | SYNCHRONIZE, &attr, &io,
FILE_SHARE_READ | FILE_SHARE_WRITE | FILE_SHARE_DELETE,
FILE_DIRECTORY_FILE | FILE_SYNCHRONOUS_IO_NONALERT );
- if (status == STATUS_SUCCESS)
- status = wine_nt_to_unix_file_name( &nt_name, &unix_name, FILE_OPEN, FALSE );
- RtlFreeUnicodeString( &nt_name );
-
if (status != STATUS_SUCCESS)
{
SetLastError( RtlNtStatusToDosError(status) );
+ RtlFreeUnicodeString( &nt_name );
return FALSE;
}
- if (!(ret = (rmdir( unix_name.Buffer ) != -1))) FILE_SetDosError();
- RtlFreeAnsiString( &unix_name );
+ status = wine_nt_to_unix_file_name( &nt_name, &unix_name, FILE_OPEN, FALSE );
+ RtlFreeUnicodeString( &nt_name );
+
+ if (status != STATUS_SUCCESS)
+ SetLastError( RtlNtStatusToDosError(status) );
+ else if (!(ret = (rmdir( unix_name.Buffer ) != -1)))
+ FILE_SetDosError();
+
+ if (status == STATUS_SUCCESS)
+ RtlFreeAnsiString( &unix_name );
NtClose( handle );
return ret;
}
--
1.7.9.5

View File

@ -1 +0,0 @@
Fixes: Fix unintentional leaks with ntdll internals

View File

@ -1,29 +0,0 @@
From 095360e2e7faec0135c0f7256c683cd28691f05a Mon Sep 17 00:00:00 2001
From: Sebastian Lackner <sebastian@fds-team.de>
Date: Sun, 10 May 2015 02:23:46 +0200
Subject: ntdll: Use POSIX implementation to enumerate directory content.
---
dlls/ntdll/directory.c | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/dlls/ntdll/directory.c b/dlls/ntdll/directory.c
index cbfc022..82244d5 100644
--- a/dlls/ntdll/directory.c
+++ b/dlls/ntdll/directory.c
@@ -23,6 +23,12 @@
#include "config.h"
#include "wine/port.h"
+/* The FreeBSD implementation to enumerate directory content is completely
+ * broken, which causes test failures in kernel32/file and ntdll/directory
+ * tests, and also causes bug 35397. Fallback to the POSIX implementation
+ * until this issue is fixed. */
+#undef HAVE_GETDIRENTRIES
+
#include <assert.h>
#include <sys/types.h>
#ifdef HAVE_DIRENT_H
--
2.4.0

View File

@ -1,2 +0,0 @@
Fixes: [35397] Use POSIX implementation to enumerate directory content on FreeBSD
Category: stable

View File

@ -1,16 +1,16 @@
From 63ede7d3be89603d63c228072c6c3fe7a50ea3e8 Mon Sep 17 00:00:00 2001
From b4d6d566795a8fd35176414297a58dc6596900eb Mon Sep 17 00:00:00 2001
From: "Erich E. Hoover" <erich.e.hoover@gmail.com>
Date: Thu, 16 Jan 2014 21:02:11 -0700
Subject: kernel32,ntdll: Add support for deleting junction points with
RemoveDirectory.
---
dlls/kernel32/path.c | 21 ++++++++++++++-------
dlls/kernel32/path.c | 13 +++++++++++--
dlls/ntdll/tests/file.c | 34 +++++++++++++++++++++++++++++++++-
2 files changed, 47 insertions(+), 8 deletions(-)
2 files changed, 44 insertions(+), 3 deletions(-)
diff --git a/dlls/kernel32/path.c b/dlls/kernel32/path.c
index 5847a84..58a4c38 100644
index 620401d..11711b3 100644
--- a/dlls/kernel32/path.c
+++ b/dlls/kernel32/path.c
@@ -1630,6 +1630,7 @@ BOOL WINAPI CreateDirectoryExW( LPCWSTR template, LPCWSTR path, LPSECURITY_ATTRI
@ -21,35 +21,32 @@ index 5847a84..58a4c38 100644
OBJECT_ATTRIBUTES attr;
UNICODE_STRING nt_name;
ANSI_STRING unix_name;
@@ -1663,15 +1664,21 @@ BOOL WINAPI RemoveDirectoryW( LPCWSTR path )
@@ -1663,15 +1664,23 @@ BOOL WINAPI RemoveDirectoryW( LPCWSTR path )
}
status = wine_nt_to_unix_file_name( &nt_name, &unix_name, FILE_OPEN, FALSE );
- RtlFreeUnicodeString( &nt_name );
-
- if (status != STATUS_SUCCESS)
- SetLastError( RtlNtStatusToDosError(status) );
- else if (!(ret = (rmdir( unix_name.Buffer ) != -1)))
- FILE_SetDosError();
-
if (status == STATUS_SUCCESS)
+ {
+ status = NtQueryAttributesFile( &attr, &info );
+ if (status == STATUS_SUCCESS && (info.FileAttributes & FILE_ATTRIBUTE_REPARSE_POINT) &&
+ (info.FileAttributes & FILE_ATTRIBUTE_DIRECTORY))
+ ret = (unlink( unix_name.Buffer ) != -1);
+ else
+ ret = (rmdir( unix_name.Buffer ) != -1);
+ if (!ret) FILE_SetDosError();
RtlFreeAnsiString( &unix_name );
+ }
if (status != STATUS_SUCCESS)
{
SetLastError( RtlNtStatusToDosError(status) );
+ RtlFreeUnicodeString( &nt_name );
NtClose( handle );
return FALSE;
}
- if (!(ret = (rmdir( unix_name.Buffer ) != -1))) FILE_SetDosError();
+ status = NtQueryAttributesFile( &attr, &info );
+ if (status == STATUS_SUCCESS && (info.FileAttributes & FILE_ATTRIBUTE_REPARSE_POINT) &&
+ (info.FileAttributes & FILE_ATTRIBUTE_DIRECTORY))
+ ret = (unlink( unix_name.Buffer ) != -1);
+ else
+ SetLastError( RtlNtStatusToDosError(status) );
+ RtlFreeUnicodeString( &nt_name );
+ ret = (rmdir( unix_name.Buffer ) != -1);
+ if (!ret) FILE_SetDosError();
+
+ RtlFreeUnicodeString( &nt_name );
RtlFreeAnsiString( &unix_name );
NtClose( handle );
return ret;
}
diff --git a/dlls/ntdll/tests/file.c b/dlls/ntdll/tests/file.c
index 174d48a..f7b7d48 100644
--- a/dlls/ntdll/tests/file.c
@ -103,5 +100,5 @@ index 174d48a..f7b7d48 100644
/* Cleanup */
pRtlFreeUnicodeString( &nameW );
--
2.7.1
2.8.0

View File

@ -1,3 +1,2 @@
Fixes: [12401] Support for Junction Points
Depends: ntdll-Fix_Free
Depends: ntdll-NtQueryEaFile

View File

@ -51,7 +51,7 @@ usage()
# Get the upstream commit sha
upstream_commit()
{
echo "bd2999db92e63f3aa8b48945503c616c28726842"
echo "9eaa37249948c4d77df37cf3649ad1db59412fcb"
}
# Show version information
@ -87,7 +87,6 @@ patch_enable_all ()
enable_Staging="$1"
enable_advapi32_LsaLookupSids="$1"
enable_advapi32_SetSecurityInfo="$1"
enable_amstream_GetMultiMediaStream="$1"
enable_api_ms_win_Stub_DLLs="$1"
enable_avifil32_AVIFile_Proxies="$1"
enable_avifil32_IGetFrame_fnSetFormat="$1"
@ -186,7 +185,6 @@ patch_enable_all ()
enable_mmsystem_dll16_MIDIHDR_Refcount="$1"
enable_mountmgr_DosDevices="$1"
enable_mpr_WNetGetUniversalNameW="$1"
enable_mscoree_Buffer_Overflow="$1"
enable_mscoree_CorValidateImage="$1"
enable_mshtml_HTMLLocation_put_hash="$1"
enable_msidb_Implementation="$1"
@ -210,8 +208,6 @@ patch_enable_all ()
enable_ntdll_FileFsVolumeInformation="$1"
enable_ntdll_FileNamesInformation="$1"
enable_ntdll_Fix_Alignment="$1"
enable_ntdll_Fix_Free="$1"
enable_ntdll_FreeBSD_Directory="$1"
enable_ntdll_Heap_FreeLists="$1"
enable_ntdll_Hide_Wine_Exports="$1"
enable_ntdll_Junction_Points="$1"
@ -262,7 +258,6 @@ patch_enable_all ()
enable_openal32_EFX_Extension="$1"
enable_opengl32_Revert_Disable_Ext="$1"
enable_opengl32_glDebugMessageCallback="$1"
enable_quartz_AsyncReader="$1"
enable_quartz_MediaSeeking_Positions="$1"
enable_quartz_Silence_FIXMEs="$1"
enable_rasapi32_RasEnumDevicesA="$1"
@ -426,9 +421,6 @@ patch_enable ()
advapi32-SetSecurityInfo)
enable_advapi32_SetSecurityInfo="$2"
;;
amstream-GetMultiMediaStream)
enable_amstream_GetMultiMediaStream="$2"
;;
api-ms-win-Stub_DLLs)
enable_api_ms_win_Stub_DLLs="$2"
;;
@ -726,9 +718,6 @@ patch_enable ()
mpr-WNetGetUniversalNameW)
enable_mpr_WNetGetUniversalNameW="$2"
;;
mscoree-Buffer_Overflow)
enable_mscoree_Buffer_Overflow="$2"
;;
mscoree-CorValidateImage)
enable_mscoree_CorValidateImage="$2"
;;
@ -798,12 +787,6 @@ patch_enable ()
ntdll-Fix_Alignment)
enable_ntdll_Fix_Alignment="$2"
;;
ntdll-Fix_Free)
enable_ntdll_Fix_Free="$2"
;;
ntdll-FreeBSD_Directory)
enable_ntdll_FreeBSD_Directory="$2"
;;
ntdll-Heap_FreeLists)
enable_ntdll_Heap_FreeLists="$2"
;;
@ -954,9 +937,6 @@ patch_enable ()
opengl32-glDebugMessageCallback)
enable_opengl32_glDebugMessageCallback="$2"
;;
quartz-AsyncReader)
enable_quartz_AsyncReader="$2"
;;
quartz-MediaSeeking_Positions)
enable_quartz_MediaSeeking_Positions="$2"
;;
@ -1799,9 +1779,6 @@ if test "$enable_category_stable" -eq 1; then
if test "$enable_ntdll_Fix_Alignment" -gt 1; then
abort "Patchset ntdll-Fix_Alignment disabled, but category-stable depends on that."
fi
if test "$enable_ntdll_FreeBSD_Directory" -gt 1; then
abort "Patchset ntdll-FreeBSD_Directory disabled, but category-stable depends on that."
fi
if test "$enable_ntdll_Heap_FreeLists" -gt 1; then
abort "Patchset ntdll-Heap_FreeLists disabled, but category-stable depends on that."
fi
@ -1912,7 +1889,6 @@ if test "$enable_category_stable" -eq 1; then
enable_ntdll_DllRedirects=1
enable_ntdll_FileFsFullSizeInformation=1
enable_ntdll_Fix_Alignment=1
enable_ntdll_FreeBSD_Directory=1
enable_ntdll_Heap_FreeLists=1
enable_ntdll_Pipe_SpecialCharacters=1
enable_ntdll_RtlIpStringToAddress_Tests=1
@ -2140,13 +2116,9 @@ if test "$enable_ntdll_Purist_Mode" -eq 1; then
fi
if test "$enable_ntdll_Junction_Points" -eq 1; then
if test "$enable_ntdll_Fix_Free" -gt 1; then
abort "Patchset ntdll-Fix_Free disabled, but ntdll-Junction_Points depends on that."
fi
if test "$enable_ntdll_NtQueryEaFile" -gt 1; then
abort "Patchset ntdll-NtQueryEaFile disabled, but ntdll-Junction_Points depends on that."
fi
enable_ntdll_Fix_Free=1
enable_ntdll_NtQueryEaFile=1
fi
@ -2474,21 +2446,6 @@ if test "$enable_advapi32_SetSecurityInfo" -eq 1; then
) >> "$patchlist"
fi
# Patchset amstream-GetMultiMediaStream
# |
# | This patchset fixes the following Wine bugs:
# | * [#37090] Implement AMStream GetMultiMediaStream functions
# |
# | Modified files:
# | * dlls/amstream/mediastream.c
# |
if test "$enable_amstream_GetMultiMediaStream" -eq 1; then
patch_apply amstream-GetMultiMediaStream/0001-amstream-Implement-IAMMediaStream-GetMultiMediaStrea.patch
(
echo '+ { "Michael Müller", "amstream: Implement IAMMediaStream::GetMultiMediaStream.", 1 },';
) >> "$patchlist"
fi
# Patchset combase-RoApi
# |
# | Modified files:
@ -4335,18 +4292,6 @@ if test "$enable_mpr_WNetGetUniversalNameW" -eq 1; then
) >> "$patchlist"
fi
# Patchset mscoree-Buffer_Overflow
# |
# | Modified files:
# | * dlls/mscoree/metahost.c
# |
if test "$enable_mscoree_Buffer_Overflow" -eq 1; then
patch_apply mscoree-Buffer_Overflow/0001-mscoree-Avoid-buffer-overflow-when-mono-print-handle.patch
(
echo '+ { "Sebastian Lackner", "mscoree: Avoid buffer overflow when mono print handler returns huge string at once.", 1 },';
) >> "$patchlist"
fi
# Patchset mscoree-CorValidateImage
# |
# | This patchset fixes the following Wine bugs:
@ -4732,33 +4677,6 @@ if test "$enable_ntdll_Fix_Alignment" -eq 1; then
) >> "$patchlist"
fi
# Patchset ntdll-Fix_Free
# |
# | Modified files:
# | * dlls/kernel32/path.c
# |
if test "$enable_ntdll_Fix_Free" -eq 1; then
patch_apply ntdll-Fix_Free/0001-kernel32-Fix-leaking-directory-handle-in-RemoveDirec.patch
(
echo '+ { "Sebastian Lackner", "kernel32: Fix leaking directory handle in RemoveDirectoryW.", 2 },';
) >> "$patchlist"
fi
# Patchset ntdll-FreeBSD_Directory
# |
# | This patchset fixes the following Wine bugs:
# | * [#35397] Use POSIX implementation to enumerate directory content on FreeBSD
# |
# | Modified files:
# | * dlls/ntdll/directory.c
# |
if test "$enable_ntdll_FreeBSD_Directory" -eq 1; then
patch_apply ntdll-FreeBSD_Directory/0001-ntdll-Use-POSIX-implementation-to-enumerate-director.patch
(
echo '+ { "Sebastian Lackner", "ntdll: Use POSIX implementation to enumerate directory content.", 1 },';
) >> "$patchlist"
fi
# Patchset ntdll-Heap_FreeLists
# |
# | Modified files:
@ -4801,7 +4719,7 @@ fi
# Patchset ntdll-Junction_Points
# |
# | This patchset has the following (direct or indirect) dependencies:
# | * ntdll-Fix_Free, ntdll-NtQueryEaFile
# | * ntdll-NtQueryEaFile
# |
# | This patchset fixes the following Wine bugs:
# | * [#12401] Support for Junction Points
@ -5628,18 +5546,6 @@ if test "$enable_opengl32_glDebugMessageCallback" -eq 1; then
) >> "$patchlist"
fi
# Patchset quartz-AsyncReader
# |
# | Modified files:
# | * dlls/quartz/filesource.c
# |
if test "$enable_quartz_AsyncReader" -eq 1; then
patch_apply quartz-AsyncReader/0001-quartz-AsyncReader-should-return-NULL-as-media-subty.patch
(
echo '+ { "Michael Müller", "quartz: AsyncReader should return NULL as media subtype for unknown formats instead of failing.", 1 },';
) >> "$patchlist"
fi
# Patchset quartz-MediaSeeking_Positions
# |
# | Modified files:

View File

@ -1,29 +0,0 @@
From db3178f4292558456596cc31766480638d8a0f3a Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Michael=20M=C3=BCller?= <michael@fds-team.de>
Date: Sun, 7 Feb 2016 01:30:22 +0100
Subject: quartz: AsyncReader should return NULL as media subtype for unknown
formats instead of failing.
---
dlls/quartz/filesource.c | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/dlls/quartz/filesource.c b/dlls/quartz/filesource.c
index 33ac442..a62db2c 100644
--- a/dlls/quartz/filesource.c
+++ b/dlls/quartz/filesource.c
@@ -652,8 +652,9 @@ static HRESULT WINAPI FileSource_Load(IFileSourceFilter * iface, LPCOLESTR pszFi
hr = GetClassMediaFile(pReader, pszFileName, &This->pmt->majortype, &This->pmt->subtype, NULL);
if (FAILED(hr))
{
- CoTaskMemFree(This->pmt);
- This->pmt = NULL;
+ memcpy(&This->pmt->majortype, &MEDIATYPE_Stream, sizeof(GUID));
+ memcpy(&This->pmt->subtype, &MEDIASUBTYPE_NULL, sizeof(GUID));
+ hr = S_OK;
}
}
else
--
2.7.0