diff options
author | bug1 <bug1@69ca8d6d-28ef-0310-b511-8ec308f3f277> | 2003-04-21 10:07:48 +0000 |
---|---|---|
committer | bug1 <bug1@69ca8d6d-28ef-0310-b511-8ec308f3f277> | 2003-04-21 10:07:48 +0000 |
commit | f7b218d1be36d8d0d8ccc6c0de7563201c748877 (patch) | |
tree | 3bc2901d47c9d99de0d46dde758a4006bf1c39e8 | |
parent | eb657e440e873ff1c21b8bbe29ba23060dd54adb (diff) | |
download | busybox-w32-f7b218d1be36d8d0d8ccc6c0de7563201c748877.tar.gz busybox-w32-f7b218d1be36d8d0d8ccc6c0de7563201c748877.tar.bz2 busybox-w32-f7b218d1be36d8d0d8ccc6c0de7563201c748877.zip |
unlink() an existing file, before opening it, simply truncating can
cause nasty problems if overwriting glibc, spotted by waldi.
git-svn-id: svn://busybox.net/trunk/busybox@6803 69ca8d6d-28ef-0310-b511-8ec308f3f277
-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 | ||