From d0de239f7025f3887e211a62f5441d282601cc2d Mon Sep 17 00:00:00 2001 From: Rui Ueyama Date: Fri, 2 Feb 2018 00:27:49 +0000 Subject: [PATCH] Don't accept unsuitable ELF files such as executables or core files. Differential Revision: https://reviews.llvm.org/D42827 llvm-svn: 324041 --- lld/ELF/Driver.cpp | 6 +++++- lld/test/ELF/invalid/Inputs/too-short.elf | Bin 44 -> 0 bytes lld/test/ELF/invalid/executable.s | 9 +++++++++ lld/test/ELF/invalid/too-short.s | 5 ----- 4 files changed, 14 insertions(+), 6 deletions(-) delete mode 100644 lld/test/ELF/invalid/Inputs/too-short.elf create mode 100644 lld/test/ELF/invalid/executable.s delete mode 100644 lld/test/ELF/invalid/too-short.s diff --git a/lld/ELF/Driver.cpp b/lld/ELF/Driver.cpp index 4b7f90253f2a..f63340e9bd43 100644 --- a/lld/ELF/Driver.cpp +++ b/lld/ELF/Driver.cpp @@ -228,11 +228,15 @@ void LinkerDriver::addFile(StringRef Path, bool WithLOption) { Files.push_back( createSharedFile(MBRef, WithLOption ? path::filename(Path) : Path)); return; - default: + case file_magic::bitcode: + case file_magic::elf_relocatable: if (InLib) Files.push_back(make(MBRef, "", 0)); else Files.push_back(createObjectFile(MBRef)); + break; + default: + error(Path + ": unknown file type"); } } diff --git a/lld/test/ELF/invalid/Inputs/too-short.elf b/lld/test/ELF/invalid/Inputs/too-short.elf deleted file mode 100644 index 077f392f1dc4dda9e934b9cb22da021e02d33ece..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 44 wcmb<-^>JfjWMp8NGl4-!o*^-dVR33kd|FYWBm+YV1H=D+uNV{&1 | FileCheck %s +# CHECK: unknown file type + +.global _start +_start: + ret diff --git a/lld/test/ELF/invalid/too-short.s b/lld/test/ELF/invalid/too-short.s deleted file mode 100644 index deaf8218d6e0..000000000000 --- a/lld/test/ELF/invalid/too-short.s +++ /dev/null @@ -1,5 +0,0 @@ -# REQUIRES: x86 - -## too-short.elf file is a truncated ELF. -# RUN: not ld.lld %S/Inputs/too-short.elf -o %t 2>&1 | FileCheck %s -# CHECK: file is too short