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,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;
--