mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2025-01-31 12:41:49 +01:00
[CodeView] Validate the vftable offset
llvm-svn: 271791
This commit is contained in:
parent
3e22310a07
commit
838aba6c09
@ -1061,8 +1061,12 @@ public:
|
||||
MethodOptions Options = L->Attrs.getFlags();
|
||||
MethodKind MethKind = L->Attrs.getMethodKind();
|
||||
MemberAccess Access = L->Attrs.getAccess();
|
||||
return OneMethodRecord(L->Type, MethKind, Options, Access, VFTableOffset,
|
||||
OneMethodRecord Method(L->Type, MethKind, Options, Access, VFTableOffset,
|
||||
Name);
|
||||
// Validate the vftable offset.
|
||||
if (Method.isIntroducingVirtual() && Method.getVFTableOffset() < 0)
|
||||
return std::make_error_code(std::errc::illegal_byte_sequence);
|
||||
return Method;
|
||||
}
|
||||
|
||||
TypeIndex getType() const { return Type; }
|
||||
@ -1122,6 +1126,11 @@ public:
|
||||
|
||||
Methods.emplace_back(L->Type, MethKind, Options, Access, VFTableOffset,
|
||||
StringRef());
|
||||
|
||||
// Validate the vftable offset.
|
||||
auto &Method = Methods.back();
|
||||
if (Method.isIntroducingVirtual() && Method.getVFTableOffset() < 0)
|
||||
return std::make_error_code(std::errc::illegal_byte_sequence);
|
||||
}
|
||||
return MethodOverloadListRecord(Methods);
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user