diff --git a/Userland/Libraries/LibELF/DynamicLoader.cpp b/Userland/Libraries/LibELF/DynamicLoader.cpp index df5c4b35f6..301b595b08 100644 --- a/Userland/Libraries/LibELF/DynamicLoader.cpp +++ b/Userland/Libraries/LibELF/DynamicLoader.cpp @@ -260,6 +260,8 @@ void DynamicLoader::load_program_headers() VERIFY(!tls_region.has_value()); tls_region = region; } else if (region.is_load()) { + if (region.size_in_memory() == 0) + return; load_regions.append(region); if (region.is_executable()) { text_regions.append(region); diff --git a/Userland/Libraries/LibELF/Validation.cpp b/Userland/Libraries/LibELF/Validation.cpp index dc68380f24..525d242286 100644 --- a/Userland/Libraries/LibELF/Validation.cpp +++ b/Userland/Libraries/LibELF/Validation.cpp @@ -230,12 +230,6 @@ bool validate_program_headers(const ElfW(Ehdr) & elf_header, size_t file_size, c return false; } - if (program_header.p_memsz <= 0 && (program_header.p_type == PT_TLS || program_header.p_type == PT_LOAD)) { - if (verbose) - dbgln("Program header ({}) has invalid size in memory ({})", header_index, program_header.p_memsz); - return false; - } - if (elf_header.e_type != ET_CORE) { if (program_header.p_type == PT_LOAD && program_header.p_align == 0) { if (verbose)