Skip to content

Commit 0c2cc6c

Browse files
authored
Merge pull request #8026 from augusto2112/fix-uaf-GetNominal
[lldb] Fix use-after-free of StringRefs in GetNominal
2 parents 66bf4a1 + 3ed9af3 commit 0c2cc6c

File tree

1 file changed

+4
-3
lines changed

1 file changed

+4
-3
lines changed

lldb/source/Plugins/TypeSystem/Swift/TypeSystemSwiftTypeRef.cpp

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -481,8 +481,7 @@ GetNominal(swift::Demangle::Demangler &dem, swift::Demangle::NodePointer node) {
481481

482482
/// Return a pair of module name and type name, given a mangled name.
483483
static llvm::Optional<std::pair<StringRef, StringRef>>
484-
GetNominal(llvm::StringRef mangled_name) {
485-
swift::Demangle::Demangler dem;
484+
GetNominal(llvm::StringRef mangled_name, swift::Demangle::Demangler &dem) {
486485
auto *node = GetDemangledType(dem, mangled_name);
487486
/// Builtin names belong to the builtin module, and are stored only with their
488487
/// mangled name.
@@ -1828,7 +1827,9 @@ TypeSystemSwiftTypeRef::FindTypeInModule(opaque_compiler_type_t opaque_type) {
18281827
auto *M = GetModule();
18291828
if (!M)
18301829
return {};
1831-
auto module_type = GetNominal(AsMangledName(opaque_type));
1830+
1831+
swift::Demangle::Demangler dem;
1832+
auto module_type = GetNominal(AsMangledName(opaque_type), dem);
18321833
if (!module_type)
18331834
return {};
18341835
// DW_AT_linkage_name is not part of the accelerator table, so

0 commit comments

Comments
 (0)