aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorbug1 <bug1@69ca8d6d-28ef-0310-b511-8ec308f3f277>2003-04-21 10:07:48 +0000
committerbug1 <bug1@69ca8d6d-28ef-0310-b511-8ec308f3f277>2003-04-21 10:07:48 +0000
commitf7b218d1be36d8d0d8ccc6c0de7563201c748877 (patch)
tree3bc2901d47c9d99de0d46dde758a4006bf1c39e8
parenteb657e440e873ff1c21b8bbe29ba23060dd54adb (diff)
downloadbusybox-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.c3
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