summaryrefslogtreecommitdiffstats
path: root/llvm/test/tools/llvm-objcopy/ELF
diff options
context:
space:
mode:
authorGeorge Rimar <grimar@accesssoftek.com>2019-06-07 08:34:18 +0000
committerGeorge Rimar <grimar@accesssoftek.com>2019-06-07 08:34:18 +0000
commit33044a7ae21350954e3523a70f2e4422a4e165ea (patch)
tree853a652ba1d534b803f9cad80bb86df94e499eb1 /llvm/test/tools/llvm-objcopy/ELF
parenteb394e93d2d39cf18d0b6c992f948b17d99b1c69 (diff)
downloadbcm5719-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.test45
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
OpenPOWER on IntegriCloud