diff --git a/Kernel/Process.h b/Kernel/Process.h index b5fc545539..e51224f8bd 100644 --- a/Kernel/Process.h +++ b/Kernel/Process.h @@ -538,7 +538,7 @@ private: KResultOr do_statvfs(String path, statvfs* buf); - KResultOr> find_elf_interpreter_for_executable(const String& path, const ElfW(Ehdr) & elf_header, int nread, size_t file_size); + KResultOr> find_elf_interpreter_for_executable(String const& path, ElfW(Ehdr) const& main_executable_header, size_t main_executable_header_size, size_t file_size); KResult do_kill(Process&, int signal); KResult do_killpg(ProcessGroupID pgrp, int signal); diff --git a/Kernel/Syscalls/execve.cpp b/Kernel/Syscalls/execve.cpp index 24624a1697..f6743068b6 100644 --- a/Kernel/Syscalls/execve.cpp +++ b/Kernel/Syscalls/execve.cpp @@ -745,11 +745,11 @@ static KResultOr> find_shebang_interpreter_for_executable(char co return ENOEXEC; } -KResultOr> Process::find_elf_interpreter_for_executable(const String& path, const ElfW(Ehdr) & main_program_header, int nread, size_t file_size) +KResultOr> Process::find_elf_interpreter_for_executable(String const& path, ElfW(Ehdr) const& main_executable_header, size_t main_executable_header_size, size_t file_size) { // Not using KResultOr here because we'll want to do the same thing in userspace in the RTLD String interpreter_path; - if (!ELF::validate_program_headers(main_program_header, file_size, (const u8*)&main_program_header, nread, &interpreter_path)) { + if (!ELF::validate_program_headers(main_executable_header, file_size, (u8 const*)&main_executable_header, main_executable_header_size, &interpreter_path)) { dbgln("exec({}): File has invalid ELF Program headers", path); return ENOEXEC; } @@ -799,11 +799,11 @@ KResultOr> Process::find_elf_interpreter_for_executable( return interpreter_description; } - if (main_program_header.e_type == ET_REL) { + if (main_executable_header.e_type == ET_REL) { // We can't exec an ET_REL, that's just an object file from the compiler return ENOEXEC; } - if (main_program_header.e_type == ET_DYN) { + if (main_executable_header.e_type == ET_DYN) { // If it's ET_DYN with no PT_INTERP, then it's a dynamic executable responsible // for its own relocation (i.e. it's /usr/lib/Loader.so) if (path != "/usr/lib/Loader.so")