mirror of
https://github.com/intel/llvm.git
synced 2026-01-30 14:07:28 +08:00
[ELF] - Do not hang if broken object has option descriptor in .MIPS.options with size of zero.
Previously lld would hang in infinite loop in this case, patch fixes the issue. Object was found during AFL run. Differential revision: https://reviews.llvm.org/D25229 llvm-svn: 283208
This commit is contained in:
@@ -694,6 +694,8 @@ MipsOptionsInputSection<ELFT>::MipsOptionsInputSection(elf::ObjectFile<ELFT> *F,
|
||||
error(getName(this) + ": unsupported non-zero ri_gp_value");
|
||||
break;
|
||||
}
|
||||
if (!O->size)
|
||||
fatal(getName(this) + ": zero option descriptor size");
|
||||
D = D.slice(O->size);
|
||||
}
|
||||
}
|
||||
|
||||
BIN
lld/test/ELF/invalid/Inputs/mips-invalid-options-descriptor.elf
Normal file
BIN
lld/test/ELF/invalid/Inputs/mips-invalid-options-descriptor.elf
Normal file
Binary file not shown.
5
lld/test/ELF/invalid/mips-invalid-options-descriptor.s
Normal file
5
lld/test/ELF/invalid/mips-invalid-options-descriptor.s
Normal file
@@ -0,0 +1,5 @@
|
||||
## mips-invalid-options-descriptor.elf has option descriptor in
|
||||
## .MIPS.options with size of zero.
|
||||
# RUN: not ld.lld %p/Inputs/mips-invalid-options-descriptor.elf -o %t2 2>&1 | \
|
||||
# RUN: FileCheck %s
|
||||
# CHECK: zero option descriptor size
|
||||
Reference in New Issue
Block a user