linker: cleanup solist after unsuccessful read
Bug: http://b/25560017 Change-Id: I03c5a1d7aed34c480d341aacfb3b1afdfa037b99
This commit is contained in:
parent
004fead6bc
commit
fd7a91e692
2 changed files with 7 additions and 0 deletions
|
@ -1523,6 +1523,8 @@ static bool load_library(LoadTask* task,
|
|||
|
||||
// Read the ELF header and some of the segments.
|
||||
if (!task->read(realpath.c_str(), file_stat.st_size)) {
|
||||
soinfo_free(si);
|
||||
task->set_soinfo(nullptr);
|
||||
return false;
|
||||
}
|
||||
|
||||
|
|
|
@ -169,6 +169,11 @@ TEST_F(DlExtTest, ExtInfoUseFdWithInvalidOffset) {
|
|||
ASSERT_TRUE(handle_ == nullptr);
|
||||
ASSERT_EQ("dlopen failed: \"" + lib_realpath + "\" has bad ELF magic", dlerror());
|
||||
|
||||
// Check if dlsym works after unsuccessful dlopen().
|
||||
// Supply non-exiting one to make linker visit every soinfo.
|
||||
void* sym = dlsym(RTLD_DEFAULT, "this_symbol_does_not_exist___");
|
||||
ASSERT_TRUE(sym == nullptr);
|
||||
|
||||
close(extinfo.library_fd);
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue