mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-12-13 20:32:21 +00:00
Fix PR23914.
r226830 moved the declaration of Buf to a nested scope, resulting in a dangling reference (in StringRef Name), and a use-after-free. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@240357 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
3755f9f48c
commit
845d1a6a17
@ -842,12 +842,12 @@ void ELFObjectWriter::computeSymbolTable(
|
||||
// seems that this information is not easily accessible from the
|
||||
// ELFObjectWriter.
|
||||
StringRef Name = Symbol.getName();
|
||||
SmallString<32> Buf;
|
||||
if (!Name.startswith("?") && !Name.startswith("@?") &&
|
||||
!Name.startswith("__imp_?") && !Name.startswith("__imp_@?")) {
|
||||
// This symbol isn't following the MSVC C++ name mangling convention. We
|
||||
// can thus safely interpret the @@@ in symbol names as specifying symbol
|
||||
// versioning.
|
||||
SmallString<32> Buf;
|
||||
size_t Pos = Name.find("@@@");
|
||||
if (Pos != StringRef::npos) {
|
||||
Buf += Name.substr(0, Pos);
|
||||
|
16
test/MC/ELF/symver-pr23914.s
Normal file
16
test/MC/ELF/symver-pr23914.s
Normal file
@ -0,0 +1,16 @@
|
||||
// Regression test for PR23914.
|
||||
// RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o - | llvm-readobj -r -t | FileCheck %s
|
||||
|
||||
defined:
|
||||
.symver defined, aaaaaaaaaaaaaaaaaa@@@AAAAAAAAAAAAA
|
||||
|
||||
// CHECK: Symbol {
|
||||
// CHECK: Name: aaaaaaaaaaaaaaaaaa@@AAAAAAAAAAAAA
|
||||
// CHECK-NEXT: Value: 0x0
|
||||
// CHECK-NEXT: Size: 0
|
||||
// CHECK-NEXT: Binding: Local
|
||||
// CHECK-NEXT: Type: None
|
||||
// CHECK-NEXT: Other: 0
|
||||
// CHECK-NEXT: Section: .text
|
||||
// CHECK-NEXT: }
|
||||
|
Loading…
Reference in New Issue
Block a user