X-Git-Url: https://git.reactos.org/?p=reactos.git;a=blobdiff_plain;f=reactos%2Flib%2Fntdll%2Fldr%2Fstartup.c;h=7cfcbb44f332078805db83e56554401581c3e17e;hp=443a81d66fd50b4535db77329719e872947f5702;hb=8464f35250bdf406056fbbe6b8386b90f74791ab;hpb=0a9b99479d477423bb78b5c3c8bb1515f0f91567 diff --git a/reactos/lib/ntdll/ldr/startup.c b/reactos/lib/ntdll/ldr/startup.c index 443a81d66fd..7cfcbb44f33 100644 --- a/reactos/lib/ntdll/ldr/startup.c +++ b/reactos/lib/ntdll/ldr/startup.c @@ -266,7 +266,7 @@ LdrpInit(PCONTEXT Context, if (ImageBase <= (PVOID)0x1000) { DPRINT("ImageBase is null\n"); - ZwTerminateProcess(NtCurrentProcess(), STATUS_UNSUCCESSFUL); + ZwTerminateProcess(NtCurrentProcess(), STATUS_INVALID_IMAGE_FORMAT); } /* If MZ header exists */ @@ -278,7 +278,7 @@ LdrpInit(PCONTEXT Context, *(PULONG)((PUCHAR)ImageBase + PEDosHeader->e_lfanew) != IMAGE_NT_SIGNATURE) { DPRINT1("Image has bad header\n"); - ZwTerminateProcess(NtCurrentProcess(), STATUS_UNSUCCESSFUL); + ZwTerminateProcess(NtCurrentProcess(), STATUS_INVALID_IMAGE_FORMAT); } /* normalize process parameters */ @@ -321,7 +321,7 @@ LdrpInit(PCONTEXT Context, if (Peb->ProcessHeap == 0) { DPRINT1("Failed to create process heap\n"); - ZwTerminateProcess(NtCurrentProcess(),STATUS_UNSUCCESSFUL); + ZwTerminateProcess(NtCurrentProcess(), STATUS_INSUFFICIENT_RESOURCES); } /* initialized vectored exception handling */ @@ -345,6 +345,11 @@ LdrpInit(PCONTEXT Context, RtlAllocateHeap(RtlGetProcessHeap(), 0, sizeof(PVOID) * (USER32_CALLBACK_MAXIMUM + 1)); + if (Peb->KernelCallbackTable == NULL) + { + DPRINT1("Failed to create callback table\n"); + ZwTerminateProcess(NtCurrentProcess(),STATUS_INSUFFICIENT_RESOURCES); + } /* initalize loader lock */ RtlInitializeCriticalSection (&LoaderLock); @@ -357,7 +362,7 @@ LdrpInit(PCONTEXT Context, if (Peb->Ldr == NULL) { DPRINT1("Failed to create loader data\n"); - ZwTerminateProcess(NtCurrentProcess(),STATUS_UNSUCCESSFUL); + ZwTerminateProcess(NtCurrentProcess(), STATUS_INSUFFICIENT_RESOURCES); } Peb->Ldr->Length = sizeof(PEB_LDR_DATA); Peb->Ldr->Initialized = FALSE; @@ -383,7 +388,7 @@ LdrpInit(PCONTEXT Context, if (NtModule == NULL) { DPRINT1("Failed to create loader module entry (NTDLL)\n"); - ZwTerminateProcess(NtCurrentProcess(),STATUS_UNSUCCESSFUL); + ZwTerminateProcess(NtCurrentProcess(), STATUS_INSUFFICIENT_RESOURCES); } memset(NtModule, 0, sizeof(LDR_DATA_TABLE_ENTRY)); @@ -422,7 +427,7 @@ LdrpInit(PCONTEXT Context, if (ExeModule == NULL) { DPRINT1("Failed to create loader module infomation\n"); - ZwTerminateProcess(NtCurrentProcess(),STATUS_UNSUCCESSFUL); + ZwTerminateProcess(NtCurrentProcess(), STATUS_INSUFFICIENT_RESOURCES); } ExeModule->DllBase = Peb->ImageBaseAddress; @@ -473,7 +478,7 @@ LdrpInit(PCONTEXT Context, if (EntryPoint == NULL) { DPRINT1("Failed to initialize image\n"); - ZwTerminateProcess(NtCurrentProcess(),STATUS_UNSUCCESSFUL); + ZwTerminateProcess(NtCurrentProcess(), STATUS_INVALID_IMAGE_FORMAT); } } /* attach the thread */