Skip to content

Commit ae050d2

Browse files
committed
llvm-undname: Fix oss-fuzz-foudn crash-on-invalid with incomplete special table nodes
llvm-svn: 358367
1 parent 274f305 commit ae050d2

File tree

2 files changed

+14
-0
lines changed

2 files changed

+14
-0
lines changed

llvm/lib/Demangle/MicrosoftDemangle.cpp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -276,6 +276,10 @@ Demangler::demangleSpecialTableSymbolNode(StringView &MangledName,
276276
SpecialTableSymbolNode *STSN = Arena.alloc<SpecialTableSymbolNode>();
277277
STSN->Name = QN;
278278
bool IsMember = false;
279+
if (MangledName.empty()) {
280+
Error = true;
281+
return nullptr;
282+
}
279283
char Front = MangledName.popFront();
280284
if (Front != '6' && Front != '7') {
281285
Error = true;

llvm/test/Demangle/invalid-manglings.test

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -119,3 +119,13 @@
119119
; CHECK-EMPTY:
120120
; CHECK-NEXT: ?foo@?$?_
121121
; CHECK-NEXT: error: Invalid mangled name
122+
123+
??_R4
124+
; CHECK-EMPTY:
125+
; CHECK-NEXT: ??_R4
126+
; CHECK-NEXT: error: Invalid mangled name
127+
128+
??_R4foo@@
129+
; CHECK-EMPTY:
130+
; CHECK-NEXT: ??_R4foo@@
131+
; CHECK-NEXT: error: Invalid mangled name

0 commit comments

Comments
 (0)