diff options
| author | George Rimar <grimar@accesssoftek.com> | 2019-06-07 08:34:18 +0000 |
|---|---|---|
| committer | George Rimar <grimar@accesssoftek.com> | 2019-06-07 08:34:18 +0000 |
| commit | 33044a7ae21350954e3523a70f2e4422a4e165ea (patch) | |
| tree | 853a652ba1d534b803f9cad80bb86df94e499eb1 /llvm/test/tools/llvm-objcopy/ELF | |
| parent | eb394e93d2d39cf18d0b6c992f948b17d99b1c69 (diff) | |
| download | bcm5719-llvm-33044a7ae21350954e3523a70f2e4422a4e165ea.tar.gz bcm5719-llvm-33044a7ae21350954e3523a70f2e4422a4e165ea.zip | |
[llvm-objcopy] - Emit error and don't crash if program header reaches past end of file.
This is https://bugs.llvm.org/show_bug.cgi?id=42122.
If an object file has a size less than program header's file [offset + size]
(i.e. if we have overflow), llvm-objcopy crashes instead of reporting a
error.
The patch fixes this issue.
Differential revision: https://reviews.llvm.org/D62898
llvm-svn: 362778
Diffstat (limited to 'llvm/test/tools/llvm-objcopy/ELF')
| -rw-r--r-- | llvm/test/tools/llvm-objcopy/ELF/invalid-p_filesz-p_offset.test | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/llvm/test/tools/llvm-objcopy/ELF/invalid-p_filesz-p_offset.test b/llvm/test/tools/llvm-objcopy/ELF/invalid-p_filesz-p_offset.test new file mode 100644 index 00000000000..fdb54da5d73 --- /dev/null +++ b/llvm/test/tools/llvm-objcopy/ELF/invalid-p_filesz-p_offset.test @@ -0,0 +1,45 @@ +## In this case, we have a program header with a file size that +## overflows the binary size. Check llvm-objcopy doesn't crash +## and report this error properly. + +# RUN: yaml2obj --docnum=1 %s -o %t1.o +# RUN: not llvm-objcopy %t1.o 2>&1 | FileCheck %s --check-prefix=ERR1 +# ERR1: error: program header with offset 0x1b8 and file size 0x100000 goes past the end of the file + +--- !ELF +FileHeader: + Class: ELFCLASS64 + Data: ELFDATA2LSB + Type: ET_EXEC + Machine: EM_X86_64 +Sections: + - Name: .foo + Type: SHT_PROGBITS +ProgramHeaders: + - Type: PT_LOAD + FileSize: 0x100000 + Sections: + - Section: .foo + +## A similar case, but now the p_offset property of the program header is too large. + +# RUN: yaml2obj --docnum=2 %s -o %t2.o +# RUN: not llvm-objcopy %t2.o 2>&1 | FileCheck %s --check-prefix=ERR2 +# ERR2: error: program header with offset 0x100000 and file size 0x1 goes past the end of the file + +--- !ELF +FileHeader: + Class: ELFCLASS64 + Data: ELFDATA2LSB + Type: ET_EXEC + Machine: EM_X86_64 +Sections: + - Name: .foo + Type: SHT_PROGBITS + Size: 1 +ProgramHeaders: + - Type: PT_LOAD + Offset: 0x100000 + FileSize: 1 + Sections: + - Section: .foo |

