summaryrefslogtreecommitdiffstats
path: root/llvm
diff options
context:
space:
mode:
authorRafael Espindola <rafael.espindola@gmail.com>2015-06-29 14:02:24 +0000
committerRafael Espindola <rafael.espindola@gmail.com>2015-06-29 14:02:24 +0000
commitf934a6a1045e83a1c70b28de57af55377f674330 (patch)
tree9852492674a4e2b015a224a08a28d0ac1fc98c57 /llvm
parent29093488d8971e147b7c413099be931ee842ddd2 (diff)
downloadbcm5719-llvm-f934a6a1045e83a1c70b28de57af55377f674330.tar.gz
bcm5719-llvm-f934a6a1045e83a1c70b28de57af55377f674330.zip
Convert an assert that can fail into error checking.
llvm-svn: 240944
Diffstat (limited to 'llvm')
-rw-r--r--llvm/include/llvm/Object/ELF.h3
-rw-r--r--llvm/test/Object/Inputs/invalid-strtab-type.elfbin0 -> 536 bytes
-rw-r--r--llvm/test/Object/invalid.test1
3 files changed, 3 insertions, 1 deletions
diff --git a/llvm/include/llvm/Object/ELF.h b/llvm/include/llvm/Object/ELF.h
index ed8ce5aea74..662057a40b5 100644
--- a/llvm/include/llvm/Object/ELF.h
+++ b/llvm/include/llvm/Object/ELF.h
@@ -867,7 +867,8 @@ ELFFile<ELFT>::getSection(uint32_t index) const {
template <class ELFT>
ErrorOr<StringRef> ELFFile<ELFT>::getString(const Elf_Shdr *Section,
ELF::Elf32_Word Offset) const {
- assert(Section && Section->sh_type == ELF::SHT_STRTAB && "Invalid section!");
+ if (Section->sh_type != ELF::SHT_STRTAB)
+ return object_error::parse_failed;
if (Offset >= Section->sh_size)
return object_error::parse_failed;
return StringRef((const char *)base() + Section->sh_offset + Offset);
diff --git a/llvm/test/Object/Inputs/invalid-strtab-type.elf b/llvm/test/Object/Inputs/invalid-strtab-type.elf
new file mode 100644
index 00000000000..2a072ebe51d
--- /dev/null
+++ b/llvm/test/Object/Inputs/invalid-strtab-type.elf
Binary files differ
diff --git a/llvm/test/Object/invalid.test b/llvm/test/Object/invalid.test
index 73bf62a1ed4..2e2c924dfae 100644
--- a/llvm/test/Object/invalid.test
+++ b/llvm/test/Object/invalid.test
@@ -1,2 +1,3 @@
RUN: not llvm-dwarfdump %p/Inputs/invalid-bad-rel-type.elf 2>&1 | FileCheck %s
+RUN: not llvm-objdump -s %p/Inputs/invalid-strtab-type.elf 2>&1 | FileCheck %s
CHECK: Invalid data was encountered while parsing the file
OpenPOWER on IntegriCloud