Check subsystem
Modified: trunk/reactos/lib/kernel32/process/create.c
_____
Modified: trunk/reactos/lib/kernel32/process/create.c
--- trunk/reactos/lib/kernel32/process/create.c 2005-02-12 09:08:52 UTC
(rev 13500)
+++ trunk/reactos/lib/kernel32/process/create.c 2005-02-12 09:17:51 UTC
(rev 13501)
@@ -1023,6 +1023,7 @@
if (! NT_SUCCESS(Status))
{
NtClose(hSection);
+ DPRINT("Unable to get SectionImageInformation, status 0x%x\n",
Status);
SetLastErrorByStatus(Status);
return FALSE;
}
@@ -1030,10 +1031,20 @@
if (0 != (Sii.Characteristics & IMAGE_FILE_DLL))
{
NtClose(hSection);
+ DPRINT("Can't execute a DLL\n");
SetLastError(ERROR_BAD_EXE_FORMAT);
return FALSE;
}
+ if (IMAGE_SUBSYSTEM_WINDOWS_GUI != Sii.Subsystem
+ && IMAGE_SUBSYSTEM_WINDOWS_CUI != Sii.Subsystem)
+ {
+ NtClose(hSection);
+ DPRINT("Invalid subsystem %d\n", Sii.Subsystem);
+ SetLastError(ERROR_CHILD_NOT_COMPLETE);
+ return FALSE;
+ }
+
/*
* Initialize the process object attributes
*/
Show replies by date