mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2024-09-20 17:58:18 +03:00
LibELF: Propagate ELF image validation errors to the caller
With this fixed dlopen() no longer crashes when given an invalid ELF image and instead returns an error code that can be retrieved with dlerror(). Fixes #6995.
This commit is contained in:
parent
461acda76f
commit
0ab37dbd03
Notes:
sideshowbarker
2024-07-18 18:21:13 +09:00
Author: https://github.com/gunnarbeutner Commit: https://github.com/SerenityOS/serenity/commit/0ab37dbd039 Pull-request: https://github.com/SerenityOS/serenity/pull/7015 Issue: https://github.com/SerenityOS/serenity/issues/6995
@ -54,7 +54,10 @@ Result<NonnullRefPtr<DynamicLoader>, DlErrorMessage> DynamicLoader::try_create(i
|
||||
return DlErrorMessage { "DynamicLoader::try_create mmap" };
|
||||
}
|
||||
|
||||
return adopt_ref(*new DynamicLoader(fd, move(filename), data, size));
|
||||
auto loader = adopt_ref(*new DynamicLoader(fd, move(filename), data, size));
|
||||
if (!loader->is_valid())
|
||||
return DlErrorMessage { "ELF image validation failed" };
|
||||
return loader;
|
||||
}
|
||||
|
||||
DynamicLoader::DynamicLoader(int fd, String filename, void* data, size_t size)
|
||||
@ -64,8 +67,9 @@ DynamicLoader::DynamicLoader(int fd, String filename, void* data, size_t size)
|
||||
, m_file_data(data)
|
||||
, m_elf_image((u8*)m_file_data, m_file_size)
|
||||
{
|
||||
m_tls_size_of_current_object = calculate_tls_size();
|
||||
m_valid = validate();
|
||||
if (m_valid)
|
||||
m_tls_size_of_current_object = calculate_tls_size();
|
||||
}
|
||||
|
||||
DynamicLoader::~DynamicLoader()
|
||||
|
Loading…
Reference in New Issue
Block a user