Index: bin/csh/dol.c
===================================================================
RCS file: /cvs/src/bin/csh/dol.c,v
retrieving revision 1.17
diff -u -p -d -r1.17 dol.c
--- bin/csh/dol.c 12 Aug 2010 02:00:27 -0000 1.17
+++ bin/csh/dol.c 11 Jul 2014 09:12:11 -0000
@@ -829,7 +829,8 @@ heredoc(Char *term)
if (mkstemp(tmp) < 0)
stderror(ERR_SYSTEM, tmp, strerror(errno));
- (void) unlink(tmp); /* 0 0 inode! */
+ else
+ (void) unlink(tmp); /* 0 0 inode! */
Dv[0] = term;
Dv[1] = NULL;
gflag = 0;
Index: sbin/disklabel/disklabel.c
===================================================================
RCS file: /cvs/src/sbin/disklabel/disklabel.c,v
retrieving revision 1.195
diff -u -p -d -r1.195 disklabel.c
--- sbin/disklabel/disklabel.c 5 May 2014 16:33:34 -0000 1.195
+++ sbin/disklabel/disklabel.c 11 Jul 2014 09:13:43 -0000
@@ -815,9 +815,12 @@ edit(struct disklabel *lp, int f)
FILE *fp;
u_int64_t total_sectors, starting_sector, ending_sector;
- if ((fd = mkstemp(tmpfil)) == -1 || (fp = fdopen(fd, "w")) == NULL) {
- if (fd != -1)
+ if ((fd = mkstemp(tmpfil)) == -1 ||
+ (fp = fdopen(fd, "w")) == NULL) {
+ if (fd != -1) {
+ unlink(tmpfil);
close(fd);
+ }
warn("%s", tmpfil);
return (1);
}
Index: sbin/scsi/scsi.c
===================================================================
RCS file: /cvs/src/sbin/scsi/scsi.c,v
retrieving revision 1.28
diff -u -p -d -r1.28 scsi.c
--- sbin/scsi/scsi.c 12 Nov 2013 04:59:02 -0000 1.28
+++ sbin/scsi/scsi.c 11 Jul 2014 09:13:44 -0000
@@ -571,8 +571,11 @@ edit_init(void)
strlcpy(edit_name, "/var/tmp/scXXXXXXXX", sizeof edit_name);
if ((fd = mkstemp(edit_name)) == -1)
err(1, "mkstemp");
- if ( (edit_file = fdopen(fd, "w+")) == 0)
+ if ( (edit_file = fdopen(fd, "w+")) == 0) {
+ unlink(edit_name);
+ close(fd);
err(1, "fdopen");
+ }
edit_opened = 1;
atexit(edit_done);
Index: usr.bin/gzsig/sign.c
===================================================================
RCS file: /cvs/src/usr.bin/gzsig/sign.c,v
retrieving revision 1.13
diff -u -p -d -r1.13 sign.c
--- usr.bin/gzsig/sign.c 10 Mar 2013 10:36:57 -0000 1.13
+++ usr.bin/gzsig/sign.c 11 Jul 2014 09:14:10 -0000
@@ -281,6 +281,7 @@ sign(int argc, char *argv[])
if ((fout = fdopen(fd, "w")) == NULL) {
fprintf(stderr, "Error opening %s: %s\n",
tmppath, strerror(errno));
+ unlink(tmppath);
fclose(fin);
close(fd);
continue;
@@ -288,6 +289,7 @@ sign(int argc, char *argv[])
if (copy_permissions(fileno(fin), fd) < 0) {
fprintf(stderr, "Error initializing %s: %s\n",
tmppath, strerror(errno));
+ unlink(tmppath);
fclose(fin);
fclose(fout);
continue;
Index: usr.bin/htpasswd/htpasswd.c
===================================================================
RCS file: /cvs/src/usr.bin/htpasswd/htpasswd.c,v
retrieving revision 1.10
diff -u -p -d -r1.10 htpasswd.c
--- usr.bin/htpasswd/htpasswd.c 24 Mar 2014 20:33:01 -0000 1.10
+++ usr.bin/htpasswd/htpasswd.c 11 Jul 2014 09:14:10 -0000
@@ -164,8 +164,10 @@ main(int argc, char** argv)
if ((fd = mkstemp(tmpl)) == -1)
err(1, "mkstemp");
- if ((out = fdopen(fd, "w+")) == NULL)
+ if ((out = fdopen(fd, "w+")) == NULL) {
+ unlink(tmpl);
err(1, "cannot open tempfile");
+ }
while ((linelen = getline(&line, &linesize, in))
!= -1) {
Index: usr.bin/m4/eval.c
===================================================================
RCS file: /cvs/src/usr.bin/m4/eval.c,v
retrieving revision 1.72
diff -u -p -d -r1.72 eval.c
--- usr.bin/m4/eval.c 28 Apr 2014 12:34:11 -0000 1.72
+++ usr.bin/m4/eval.c 11 Jul 2014 09:14:11 -0000
@@ -818,8 +818,11 @@ dodiv(int n)
char fname[] = _PATH_DIVNAME;
if ((fd = mkstemp(fname)) < 0 ||
- (outfile[n] = fdopen(fd, "w+")) == NULL)
+ (outfile[n] = fdopen(fd, "w+")) == NULL) {
+ if (fd != -1)
+ unlink(fname);
err(1, "%s: cannot divert", fname);
+ }
if (unlink(fname) == -1)
err(1, "%s: cannot unlink", fname);
}
Index: usr.bin/rwall/rwall.c
===================================================================
RCS file: /cvs/src/usr.bin/rwall/rwall.c,v
retrieving revision 1.12
diff -u -p -d -r1.12 rwall.c
--- usr.bin/rwall/rwall.c 27 Oct 2009 23:59:43 -0000 1.12
+++ usr.bin/rwall/rwall.c 11 Jul 2014 09:14:13 -0000
@@ -112,8 +112,14 @@ makemsg(char *fname)
char *whom, hostname[MAXHOSTNAMELEN], lbuf[100], tmpname[MAXPATHLEN];
snprintf(tmpname, sizeof(tmpname), "%s/wall.XXXXXXXXXX", _PATH_TMP);
- if ((fd = mkstemp(tmpname)) == -1 || !(fp = fdopen(fd, "r+")))
+ if ((fd = mkstemp(tmpname)) == -1 ||
+ (fp = fdopen(fd, "r+")) == NULL) {
+ if (fd != -1) {
+ unlink(tmpname);
+ close(fd);
+ }
err(1, "can't open temporary file");
+ }
(void)unlink(tmpname);
if (!(whom = getlogin()))
Index: usr.bin/sort/sort.c
===================================================================
RCS file: /cvs/src/usr.bin/sort/sort.c,v
retrieving revision 1.41
diff -u -p -d -r1.41 sort.c
--- usr.bin/sort/sort.c 13 Nov 2013 15:07:27 -0000 1.41
+++ usr.bin/sort/sort.c 11 Jul 2014 09:14:13 -0000
@@ -282,8 +282,13 @@ main(int argc, char *argv[])
(void)umask(um);
if ((outfd = mkstemp(toutpath)) == -1 ||
fchmod(outfd, DEFFILEMODE & ~um) == -1 ||
- (outfp = fdopen(outfd, "w")) == NULL)
+ (outfp = fdopen(outfd, "w")) == NULL) {
+ if (outfd != -1) {
+ unlink(toutpath);
+ close(outfd);
+ }
err(2, "%s", toutpath);
+ }
outfile = toutpath;
(void)atexit(cleanup);
Index: usr.bin/sort/tmp.c
===================================================================
RCS file: /cvs/src/usr.bin/sort/tmp.c,v
retrieving revision 1.9
diff -u -p -d -r1.9 tmp.c
--- usr.bin/sort/tmp.c 27 Oct 2009 23:59:43 -0000 1.9
+++ usr.bin/sort/tmp.c 11 Jul 2014 09:14:13 -0000
@@ -65,8 +65,10 @@ ftmp(void)
(void)sigprocmask(SIG_BLOCK, &set, &oset);
if ((fd = mkstemp(path)) < 0)
err(2, "%s", path);
- if (!(fp = fdopen(fd, "w+")))
+ if (!(fp = fdopen(fd, "w+"))) {
+ (void)unlink(path);
err(2, "%s", path);
+ }
(void)unlink(path);
(void)sigprocmask(SIG_SETMASK, &oset, NULL);
Index: usr.bin/ssh/moduli.c
===================================================================
RCS file: /cvs/src/usr.bin/ssh/moduli.c,v
retrieving revision 1.28
diff -u -p -d -r1.28 moduli.c
--- usr.bin/ssh/moduli.c 24 Oct 2013 00:49:49 -0000 1.28
+++ usr.bin/ssh/moduli.c 11 Jul 2014 09:14:14 -0000
@@ -457,6 +457,7 @@ write_checkpoint(char *cpfile, u_int32_t
}
if ((fp = fdopen(r, "w")) == NULL) {
logit("write_checkpoint: fdopen: %s", strerror(errno));
+ unlink(tmp);
close(r);
return;
}
Index: usr.bin/tic/tic.c
===================================================================
RCS file: /cvs/src/usr.bin/tic/tic.c,v
retrieving revision 1.31
diff -u -p -d -r1.31 tic.c
--- usr.bin/tic/tic.c 28 Nov 2013 18:24:55 -0000 1.31
+++ usr.bin/tic/tic.c 11 Jul 2014 09:14:15 -0000
@@ -460,11 +460,18 @@ matches(char **needle, const char *hayst
static FILE *
open_tempfile(char *name)
{
- FILE *result = 0;
+ FILE *result;
#if HAVE_MKSTEMP
- int fd = mkstemp(name);
- if (fd >= 0)
- result = fdopen(fd, "w");
+ int fd;
+
+ if ((fd = mkstemp(name)) == -1 ||
+ (result = fdopen(fd, "w")) == NULL) {
+ if (fd != -1) {
+ unlink(name);
+ close(fd);
+ }
+ return (NULL);
+ }
#else
if (tmpnam(name) != 0)
result = fopen(name, "w");
Index: usr.sbin/user/user.c
===================================================================
RCS file: /cvs/src/usr.sbin/user/user.c,v
retrieving revision 1.98
diff -u -p -d -r1.98 user.c
--- usr.sbin/user/user.c 23 Nov 2013 17:14:05 -0000 1.98
+++ usr.sbin/user/user.c 11 Jul 2014 09:14:31 -0000
@@ -721,6 +721,8 @@ setdefaults(user_t *up)
}
if ((fp = fdopen(fd, "w")) == NULL) {
warn("can't fdopen `%s' for writing", CONFFILE);
+ unlink(template);
+ close(fd);
return 0;
}
ret = 1;