[llvm-nm] Fix heap-use-after-free while executing 'llvm-nm -n --export-symbols' (#65668)

Use symbol's flags saved in `NMSymbol::SymFlags` inside
`NMSymbol::isDefined()` since `BasicSymbolRef::getFlags()` requires the
symbol's containing entity object to exist (which doesn't, causing
llvm-nm to crash).
This commit is contained in:
chbessonova 2023-09-13 19:39:03 +02:00 committed by GitHub
parent 61757fbd04
commit 7457228629
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -237,10 +237,8 @@ struct NMSymbol {
std::string IndirectName;
bool isDefined() const {
if (Sym.getRawDataRefImpl().p) {
uint32_t Flags = cantFail(Sym.getFlags());
return !(Flags & SymbolRef::SF_Undefined);
}
if (Sym.getRawDataRefImpl().p)
return !(SymFlags & SymbolRef::SF_Undefined);
return TypeChar != 'U';
}