summaryrefslogtreecommitdiff
path: root/tempfile.c
diff options
context:
space:
mode:
authorManoj Srivastava <srivasta@debian.org>2009-05-02 04:06:24 -0500
committerClint Adams <schizo@debian.org>2009-05-02 09:42:12 -0400
commitaeb47f24e0d3158e7d41163bb8f28e5ca1ecc698 (patch)
tree4cdd9d2d4019c0c992f1fe3e95aaf6260bd95708 /tempfile.c
parent1e1ffb1e7fbc710c48ab591d3f3a501c290d5b87 (diff)
downloaddebianutils-aeb47f24e0d3158e7d41163bb8f28e5ca1ecc698.tar.gz
Fix a double free problem in tempfile
Closes: #526606, #526607, #526610 Signed-off-by: Manoj Srivastava <srivasta@debian.org>
Diffstat (limited to 'tempfile.c')
-rw-r--r--tempfile.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/tempfile.c b/tempfile.c
index c3a3b97..1ac7130 100644
--- a/tempfile.c
+++ b/tempfile.c
@@ -130,7 +130,8 @@ main (int argc, char **argv)
if ((fd = open(filename, O_RDWR | O_CREAT | O_EXCL, mode)) < 0) {
if (errno == EEXIST) {
- free(name);
+ if(name != filename)
+ free(name);
free(filename);
continue;
}
@@ -143,7 +144,8 @@ main (int argc, char **argv)
if (close(fd))
syserror("close");
puts(filename);
+ if(name != filename)
+ free(name);
free(filename);
- free(name);
exit(0);
}