diff options
| author | George Rimar <grimar@accesssoftek.com> | 2016-10-14 11:10:36 +0000 |
|---|---|---|
| committer | George Rimar <grimar@accesssoftek.com> | 2016-10-14 11:10:36 +0000 |
| commit | 85e6106d76af306c0a78324c13d9f9d1ca6ea508 (patch) | |
| tree | 6362b65eb9694502c1de6be34ba42b204cbbceeb /lld/ELF/InputFiles.cpp | |
| parent | cc6e567ca38f3967ef9db746e685a33779e62da3 (diff) | |
| download | bcm5719-llvm-85e6106d76af306c0a78324c13d9f9d1ca6ea508.tar.gz bcm5719-llvm-85e6106d76af306c0a78324c13d9f9d1ca6ea508.zip | |
[ELF] - Do not crash when object has multiple SHT_MIPS_OPTIONS
Issue was revealed by AFl and I was able to generate such object using yaml2obj.
When object has more than one SHT_MIPS_OPTIONS,
each except the last one is destroyed after placing into Sections array.
Sections array contains dead pointers finally. LLD may crash then.
Differential revision: https://reviews.llvm.org/D25555
llvm-svn: 284227
Diffstat (limited to 'lld/ELF/InputFiles.cpp')
| -rw-r--r-- | lld/ELF/InputFiles.cpp | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/lld/ELF/InputFiles.cpp b/lld/ELF/InputFiles.cpp index 269d060eec9..3aafdbb93a7 100644 --- a/lld/ELF/InputFiles.cpp +++ b/lld/ELF/InputFiles.cpp @@ -324,6 +324,9 @@ elf::ObjectFile<ELFT>::createInputSection(const Elf_Shdr &Sec) { MipsReginfo.reset(new MipsReginfoInputSection<ELFT>(this, &Sec, Name)); return MipsReginfo.get(); case SHT_MIPS_OPTIONS: + if (MipsOptions) + fatal(getFilename(this) + + ": multiple SHT_MIPS_OPTIONS sections are not allowed"); MipsOptions.reset(new MipsOptionsInputSection<ELFT>(this, &Sec, Name)); return MipsOptions.get(); case SHT_MIPS_ABIFLAGS: |

