diff --git a/llvm/tools/llvm-readobj/COFFDumper.cpp b/llvm/tools/llvm-readobj/COFFDumper.cpp index 6fc57e83e9c9..a216a05e96fb 100644 --- a/llvm/tools/llvm-readobj/COFFDumper.cpp +++ b/llvm/tools/llvm-readobj/COFFDumper.cpp @@ -687,7 +687,10 @@ void COFFDumper::initializeFileAndStringTables(StringRef Data) { default: break; } - Data = Data.drop_front(alignTo(SubSectionSize, 4)); + uint32_t PaddedSize = alignTo(SubSectionSize, 4); + if (PaddedSize > Data.size()) + error(object_error::parse_failed); + Data = Data.drop_front(PaddedSize); } }