aboutsummaryrefslogtreecommitdiff
path: root/llvm/lib/Bitcode/Reader/BitcodeReader.cpp
diff options
context:
space:
mode:
authorNikita Popov <npopov@redhat.com>2022-02-08 09:48:43 +0100
committerNikita Popov <npopov@redhat.com>2022-02-08 09:49:39 +0100
commit6d52ea885fb2d2c79fb1fa8062a92ab6c5adc734 (patch)
tree5b054e5ee8f07c1e2e8ca682d2d5414aa920224b /llvm/lib/Bitcode/Reader/BitcodeReader.cpp
parent67348c8acfc205785996f2aea21b442f4b76f2c2 (diff)
downloadllvm-6d52ea885fb2d2c79fb1fa8062a92ab6c5adc734.zip
llvm-6d52ea885fb2d2c79fb1fa8062a92ab6c5adc734.tar.gz
llvm-6d52ea885fb2d2c79fb1fa8062a92ab6c5adc734.tar.bz2
[Bitcode] Prevent OOB read for invalid name size
Diffstat (limited to 'llvm/lib/Bitcode/Reader/BitcodeReader.cpp')
-rw-r--r--llvm/lib/Bitcode/Reader/BitcodeReader.cpp2
1 files changed, 2 insertions, 0 deletions
diff --git a/llvm/lib/Bitcode/Reader/BitcodeReader.cpp b/llvm/lib/Bitcode/Reader/BitcodeReader.cpp
index 66f2dcc..93bff30 100644
--- a/llvm/lib/Bitcode/Reader/BitcodeReader.cpp
+++ b/llvm/lib/Bitcode/Reader/BitcodeReader.cpp
@@ -3243,6 +3243,8 @@ Error BitcodeReader::parseComdatRecord(ArrayRef<uint64_t> Record) {
if (Record.size() < 2)
return error("Invalid record");
unsigned ComdatNameSize = Record[1];
+ if (ComdatNameSize > Record.size() - 2)
+ return error("Comdat name size too large");
OldFormatName.reserve(ComdatNameSize);
for (unsigned i = 0; i != ComdatNameSize; ++i)
OldFormatName += (char)Record[2 + i];