summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Bitcode/Reader/BitcodeReader.cpp
diff options
context:
space:
mode:
authorFilipe Cabecinhas <me@filcab.net>2015-11-04 14:53:36 +0000
committerFilipe Cabecinhas <me@filcab.net>2015-11-04 14:53:36 +0000
commita2b0ac40cfe37cfacb8648814cc74f6e8d2c0ed3 (patch)
tree38322a4cb55059883f1f155ccea8a797afbfa07a /llvm/lib/Bitcode/Reader/BitcodeReader.cpp
parent4305910803a803f655d9ee28ce93cc5acb7760b8 (diff)
downloadbcm5719-llvm-a2b0ac40cfe37cfacb8648814cc74f6e8d2c0ed3.tar.gz
bcm5719-llvm-a2b0ac40cfe37cfacb8648814cc74f6e8d2c0ed3.zip
Error out when faced with value names containing '\0'
Bug found with afl-fuzz. llvm-svn: 252048
Diffstat (limited to 'llvm/lib/Bitcode/Reader/BitcodeReader.cpp')
-rw-r--r--llvm/lib/Bitcode/Reader/BitcodeReader.cpp5
1 files changed, 4 insertions, 1 deletions
diff --git a/llvm/lib/Bitcode/Reader/BitcodeReader.cpp b/llvm/lib/Bitcode/Reader/BitcodeReader.cpp
index c874a84e0cb..522f2aa4707 100644
--- a/llvm/lib/Bitcode/Reader/BitcodeReader.cpp
+++ b/llvm/lib/Bitcode/Reader/BitcodeReader.cpp
@@ -1749,7 +1749,10 @@ ErrorOr<Value *> BitcodeReader::recordValue(SmallVectorImpl<uint64_t> &Record,
return error("Invalid record");
Value *V = ValueList[ValueID];
- V->setName(StringRef(ValueName.data(), ValueName.size()));
+ StringRef NameStr(ValueName.data(), ValueName.size());
+ if (NameStr.find_first_of(0) != StringRef::npos)
+ return error("Invalid value name");
+ V->setName(NameStr);
auto *GO = dyn_cast<GlobalObject>(V);
if (GO) {
if (GO->getComdat() == reinterpret_cast<Comdat *>(1)) {
OpenPOWER on IntegriCloud