Alexandre Julliard : server: Don't return image information for a terminated process.

Alexandre Julliard julliard at winehq.org
Thu Mar 11 15:59:35 CST 2021


Module: wine
Branch: master
Commit: 4ece7d409a64e0a21159c5fd550ce1e8f40fefa8
URL:    https://source.winehq.org/git/wine.git/?a=commit;h=4ece7d409a64e0a21159c5fd550ce1e8f40fefa8

Author: Alexandre Julliard <julliard at winehq.org>
Date:   Thu Mar 11 21:51:57 2021 +0100

server: Don't return image information for a terminated process.

Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 dlls/kernel32/tests/process.c | 2 --
 server/process.c              | 8 ++++++--
 2 files changed, 6 insertions(+), 4 deletions(-)

diff --git a/dlls/kernel32/tests/process.c b/dlls/kernel32/tests/process.c
index 3e450c09849..373212cd2da 100644
--- a/dlls/kernel32/tests/process.c
+++ b/dlls/kernel32/tests/process.c
@@ -4207,9 +4207,7 @@ static void test_dead_process(void)
 
     memset( &image, 0xcc, sizeof(image) );
     status = NtQueryInformationProcess( pi.hProcess, ProcessImageInformation, &image, sizeof(image), NULL);
-    todo_wine
     ok( status == STATUS_PROCESS_IS_TERMINATING, "ProcessImageInformation wrong error %x\n", status );
-    todo_wine
     ok( image.Machine == 0xcccc, "ProcessImageInformation info modified\n" );
 
     while ((status = NtQuerySystemInformation(SystemProcessInformation, buffer, size, &size)) == STATUS_INFO_LENGTH_MISMATCH)
diff --git a/server/process.c b/server/process.c
index 90ea44515ec..f65d7abe2af 100644
--- a/server/process.c
+++ b/server/process.c
@@ -1361,8 +1361,12 @@ DECL_HANDLER(get_process_info)
             client_ptr_t base;
             const pe_image_info_t *info;
             struct memory_view *view = get_exe_view( process );
-            if (view && (info = get_view_image_info( view, &base )))
-                set_reply_data( info, min( sizeof(*info), get_reply_max_size() ));
+            if (view)
+            {
+                if ((info = get_view_image_info( view, &base )))
+                    set_reply_data( info, min( sizeof(*info), get_reply_max_size() ));
+            }
+            else set_error( STATUS_PROCESS_IS_TERMINATING );
         }
         release_object( process );
     }




More information about the wine-cvs mailing list