[3/3] ntdll: Use the same buffer size for every platform and complain if it's too small

André Hentschel nerv at dawncrow.de
Sun Jan 5 19:34:05 CST 2014


---
 dlls/ntdll/directory.c | 10 ++++++++--
 1 file changed, 8 insertions(+), 2 deletions(-)

diff --git a/dlls/ntdll/directory.c b/dlls/ntdll/directory.c
index 78b3ea7..5e17391 100644
--- a/dlls/ntdll/directory.c
+++ b/dlls/ntdll/directory.c
@@ -3205,19 +3205,22 @@ static void WINAPI read_changes_user_apc( void *arg, IO_STATUS_BLOCK *io, ULONG
 static NTSTATUS read_changes_apc( void *user, PIO_STATUS_BLOCK iosb, NTSTATUS status, void **apc )
 {
     struct read_changes_info *info = user;
-    char data[PATH_MAX];
+    char data[4096];
     NTSTATUS ret;
     int size;
 
     SERVER_START_REQ( read_change )
     {
         req->handle = wine_server_obj_handle( info->FileHandle );
-        wine_server_set_reply( req, data, PATH_MAX );
+        wine_server_set_reply( req, data, sizeof(data) );
         ret = wine_server_call( req );
         size = wine_server_reply_size( reply );
     }
     SERVER_END_REQ;
 
+    if (ret == STATUS_BUFFER_TOO_SMALL)
+        ERR("Buffer too small\n");
+
     if (ret == STATUS_SUCCESS && info->Buffer)
     {
         PFILE_NOTIFY_INFORMATION pfni = info->Buffer;
@@ -3302,6 +3305,9 @@ NtNotifyChangeDirectoryFile( HANDLE FileHandle, HANDLE Event,
           FileHandle, Event, ApcRoutine, ApcContext, IoStatusBlock,
           Buffer, BufferSize, CompletionFilter, WatchTree );
 
+    if (BufferSize > 4096)
+        FIXME("Application provided a Buffer larger than 4096 Bytes\n");
+
     if (!IoStatusBlock)
         return STATUS_ACCESS_VIOLATION;
 
-- 
1.8.1.2




More information about the wine-patches mailing list