forked from OSchip/llvm-project
llvm-undname: Fix crash on incomplete virtual this adjusts
Found by oss-fuzz. Also remove an else-after-return, this part has no behavior change. llvm-svn: 358237
This commit is contained in:
parent
8ec304c9fd
commit
b4f33bbbb0
|
@ -481,7 +481,7 @@ Demangler::demangleFunctionIdentifierCode(StringView &MangledName) {
|
|||
if (MangledName.consumeFront("__"))
|
||||
return demangleFunctionIdentifierCode(
|
||||
MangledName, FunctionIdentifierCodeGroup::DoubleUnder);
|
||||
else if (MangledName.consumeFront("_"))
|
||||
if (MangledName.consumeFront("_"))
|
||||
return demangleFunctionIdentifierCode(MangledName,
|
||||
FunctionIdentifierCodeGroup::Under);
|
||||
return demangleFunctionIdentifierCode(MangledName,
|
||||
|
@ -1575,7 +1575,8 @@ FuncClass Demangler::demangleFunctionClass(StringView &MangledName) {
|
|||
FuncClass VFlag = FC_VirtualThisAdjust;
|
||||
if (MangledName.consumeFront('R'))
|
||||
VFlag = FuncClass(VFlag | FC_VirtualThisAdjustEx);
|
||||
|
||||
if (MangledName.empty())
|
||||
break;
|
||||
switch (MangledName.popFront()) {
|
||||
case '0':
|
||||
return FuncClass(FC_Private | FC_Virtual | VFlag);
|
||||
|
|
|
@ -99,3 +99,8 @@
|
|||
; CHECK-EMPTY:
|
||||
; CHECK-NEXT: ?B@?$?K$H?
|
||||
; CHECK-NEXT: error: Invalid mangled name
|
||||
|
||||
??C@$
|
||||
; CHECK-EMPTY:
|
||||
; CHECK-NEXT: ??C@$
|
||||
; CHECK-NEXT: error: Invalid mangled name
|
||||
|
|
Loading…
Reference in New Issue