forked from OSchip/llvm-project
ELF: Only unlink regular files
Summary: If the output file is a character file (e.g. /dev/null) unlinking it could potentially destabilize the user's system. For example, unlinking causes `lld %input -o /dev/null` to replace /dev/null with a regular file, which will lead to unexpected behavior in other programs that read from /dev/null, and worse than expected peformance for programs that write to /dev/null. This makes it possible to run the test-release.sh script as root. Prior to this patch, the ELF/basic.s test would replace /dev/null with a regular file, which would cause crashes in llvm test-suite programs that piped /dev/null to stdin. For example, if you run the test-relase.sh script as root, Reviewers: ruiu Reviewed By: ruiu Subscribers: emaste, llvm-commits Differential Revision: https://reviews.llvm.org/D34917 llvm-svn: 307092
This commit is contained in:
parent
de5d250a0b
commit
c17a04c6c8
|
|
@ -38,7 +38,8 @@ using namespace lld::elf;
|
|||
// This function spawns a background thread to call unlink.
|
||||
// The calling thread returns almost immediately.
|
||||
void elf::unlinkAsync(StringRef Path) {
|
||||
if (!Config->Threads || !sys::fs::exists(Config->OutputFile))
|
||||
if (!Config->Threads || !sys::fs::exists(Config->OutputFile) ||
|
||||
!sys::fs::is_regular_file(Config->OutputFile))
|
||||
return;
|
||||
|
||||
// First, rename Path to avoid race condition. We cannot remove
|
||||
|
|
|
|||
Loading…
Reference in New Issue