diff options
-rw-r--r-- | llvm/lib/Bitcode/Reader/BitcodeReader.cpp | 2 | ||||
-rw-r--r-- | llvm/test/Bitcode/metadata-only-empty-string.ll | 7 |
2 files changed, 8 insertions, 1 deletions
diff --git a/llvm/lib/Bitcode/Reader/BitcodeReader.cpp b/llvm/lib/Bitcode/Reader/BitcodeReader.cpp index cb2784ff204..72ac217bef2 100644 --- a/llvm/lib/Bitcode/Reader/BitcodeReader.cpp +++ b/llvm/lib/Bitcode/Reader/BitcodeReader.cpp @@ -1899,7 +1899,7 @@ std::error_code BitcodeReader::parseMetadataStrings(ArrayRef<uint64_t> Record, unsigned StringsOffset = Record[1]; if (!NumStrings) return error("Invalid record: metadata strings with no strings"); - if (StringsOffset >= Blob.size()) + if (StringsOffset > Blob.size()) return error("Invalid record: metadata strings corrupt offset"); StringRef Lengths = Blob.slice(0, StringsOffset); diff --git a/llvm/test/Bitcode/metadata-only-empty-string.ll b/llvm/test/Bitcode/metadata-only-empty-string.ll new file mode 100644 index 00000000000..f8331e35985 --- /dev/null +++ b/llvm/test/Bitcode/metadata-only-empty-string.ll @@ -0,0 +1,7 @@ +; RUN: llvm-as < %s | llvm-dis | FileCheck %s + +; CHECK: !named = !{!0} +!named = !{!0} + +; CHECK: !0 = !{!""} +!0 = !{!""} |