From 6d52ea885fb2d2c79fb1fa8062a92ab6c5adc734 Mon Sep 17 00:00:00 2001 From: Nikita Popov Date: Tue, 8 Feb 2022 09:48:43 +0100 Subject: [Bitcode] Prevent OOB read for invalid name size --- llvm/lib/Bitcode/Reader/BitcodeReader.cpp | 2 ++ 1 file changed, 2 insertions(+) (limited to 'llvm/lib/Bitcode/Reader/BitcodeReader.cpp') 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 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]; -- cgit v1.1