diff options
author | Glenn L McGrath <bug1@ihug.co.nz> | 2003-04-21 10:07:48 +0000 |
---|---|---|
committer | Glenn L McGrath <bug1@ihug.co.nz> | 2003-04-21 10:07:48 +0000 |
commit | 35a5b08eee997593e4e852a6b48fc4b2bb4904e6 (patch) | |
tree | 3bc2901d47c9d99de0d46dde758a4006bf1c39e8 /archival/tar.c | |
parent | 6f9a0d4bbb0774822f7e19e59c21f4cbfd7e490e (diff) | |
download | busybox-w32-35a5b08eee997593e4e852a6b48fc4b2bb4904e6.tar.gz busybox-w32-35a5b08eee997593e4e852a6b48fc4b2bb4904e6.tar.bz2 busybox-w32-35a5b08eee997593e4e852a6b48fc4b2bb4904e6.zip |
unlink() an existing file, before opening it, simply truncating can
cause nasty problems if overwriting glibc, spotted by waldi.
Diffstat (limited to 'archival/tar.c')
-rw-r--r-- | archival/tar.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/archival/tar.c b/archival/tar.c index c39d5787f..23af9ffa3 100644 --- a/archival/tar.c +++ b/archival/tar.c | |||
@@ -472,7 +472,8 @@ static inline int writeTarFile(const char *tarName, const int verboseFlag, | |||
472 | tbInfo.tarFd = fileno(stdout); | 472 | tbInfo.tarFd = fileno(stdout); |
473 | tbInfo.verboseFlag = verboseFlag ? 2 : 0; | 473 | tbInfo.verboseFlag = verboseFlag ? 2 : 0; |
474 | } else { | 474 | } else { |
475 | tbInfo.tarFd = open(tarName, O_WRONLY | O_CREAT | O_TRUNC, 0644); | 475 | unlink(tarName); |
476 | tbInfo.tarFd = open(tarName, O_WRONLY | O_CREAT | O_EXCL, 0644); | ||
476 | tbInfo.verboseFlag = verboseFlag ? 1 : 0; | 477 | tbInfo.verboseFlag = verboseFlag ? 1 : 0; |
477 | } | 478 | } |
478 | 479 | ||