1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-26 02:47:34 +00:00

Kernel: Fix two error codes being returned as positive in Process::exec

This made the assertion on line 921 think it was a successful exec, when it wasn't.

Fixes #5084
This commit is contained in:
Luke 2021-01-24 00:03:14 +00:00 committed by Andreas Kling
parent 1c18d1380f
commit 50a2cb38e5

View file

@ -819,12 +819,12 @@ int Process::exec(String path, Vector<String> arguments, Vector<String> environm
// #2) ELF32 for i386 // #2) ELF32 for i386
if (nread_or_error.value() < (int)sizeof(Elf32_Ehdr)) if (nread_or_error.value() < (int)sizeof(Elf32_Ehdr))
return ENOEXEC; return -ENOEXEC;
auto main_program_header = (Elf32_Ehdr*)first_page; auto main_program_header = (Elf32_Ehdr*)first_page;
if (!ELF::validate_elf_header(*main_program_header, metadata.size)) { if (!ELF::validate_elf_header(*main_program_header, metadata.size)) {
dbgln("exec({}): File has invalid ELF header", path); dbgln("exec({}): File has invalid ELF header", path);
return ENOEXEC; return -ENOEXEC;
} }
auto elf_result = find_elf_interpreter_for_executable(path, *main_program_header, nread_or_error.value(), metadata.size); auto elf_result = find_elf_interpreter_for_executable(path, *main_program_header, nread_or_error.value(), metadata.size);