1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-25 06:27:45 +00:00

LibELF: Don't validate ELF twice in DynamicLoader

Validation was happening in two steps, some in the constructor, and then
some later on, in load_from_image().

This made no sense so just move all the validation to the constructor.
This commit is contained in:
Andreas Kling 2021-01-31 11:29:23 +01:00
parent 68576bcf1b
commit 2b862e4569

View file

@ -122,8 +122,15 @@ size_t DynamicLoader::calculate_tls_size() const
bool DynamicLoader::validate()
{
if (!m_elf_image.is_valid())
return false;
auto* elf_header = (Elf32_Ehdr*)m_file_data;
return validate_elf_header(*elf_header, m_file_size) && validate_program_headers(*elf_header, m_file_size, (u8*)m_file_data, m_file_size, &m_program_interpreter);
if (!validate_elf_header(*elf_header, m_file_size))
return false;
if (!validate_program_headers(*elf_header, m_file_size, (u8*)m_file_data, m_file_size, &m_program_interpreter))
return false;
return true;
}
void* DynamicLoader::symbol_for_name(const char* name)
@ -138,9 +145,6 @@ void* DynamicLoader::symbol_for_name(const char* name)
RefPtr<DynamicObject> DynamicLoader::load_from_image(unsigned flags, size_t total_tls_size)
{
m_valid = m_elf_image.is_valid();
if (!m_valid) {
dbgln("DynamicLoader::load_from_image failed: image is invalid");
return nullptr;