summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--llvm/lib/Bitcode/Reader/BitcodeReader.cpp2
-rw-r--r--llvm/test/Bitcode/metadata-only-empty-string.ll7
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 = !{!""}
OpenPOWER on IntegriCloud