mirror of
https://github.com/RGBCube/serenity
synced 2025-07-26 04:27:44 +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:
parent
68576bcf1b
commit
2b862e4569
1 changed files with 8 additions and 4 deletions
|
@ -122,8 +122,15 @@ size_t DynamicLoader::calculate_tls_size() const
|
||||||
|
|
||||||
bool DynamicLoader::validate()
|
bool DynamicLoader::validate()
|
||||||
{
|
{
|
||||||
|
if (!m_elf_image.is_valid())
|
||||||
|
return false;
|
||||||
|
|
||||||
auto* elf_header = (Elf32_Ehdr*)m_file_data;
|
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)
|
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)
|
RefPtr<DynamicObject> DynamicLoader::load_from_image(unsigned flags, size_t total_tls_size)
|
||||||
{
|
{
|
||||||
|
|
||||||
m_valid = m_elf_image.is_valid();
|
|
||||||
|
|
||||||
if (!m_valid) {
|
if (!m_valid) {
|
||||||
dbgln("DynamicLoader::load_from_image failed: image is invalid");
|
dbgln("DynamicLoader::load_from_image failed: image is invalid");
|
||||||
return nullptr;
|
return nullptr;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue