diff options
author | Nikita Popov <npopov@redhat.com> | 2022-02-08 09:48:43 +0100 |
---|---|---|
committer | Nikita Popov <npopov@redhat.com> | 2022-02-08 09:49:39 +0100 |
commit | 6d52ea885fb2d2c79fb1fa8062a92ab6c5adc734 (patch) | |
tree | 5b054e5ee8f07c1e2e8ca682d2d5414aa920224b /llvm/lib/Bitcode/Reader/BitcodeReader.cpp | |
parent | 67348c8acfc205785996f2aea21b442f4b76f2c2 (diff) | |
download | llvm-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.cpp | 2 |
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]; |