summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTheo de Raadt <deraadt@cvs.openbsd.org>1996-06-26 03:42:14 +0000
committerTheo de Raadt <deraadt@cvs.openbsd.org>1996-06-26 03:42:14 +0000
commit2333f9633b94f25c04c44fb46b8384a969e37e07 (patch)
tree3a2d9cd632000b6366ab46574d3128d844a4acfc
parent3ed880dac0ac490038c5e826e7faabd621b3d3a0 (diff)
open + fdopen
-rw-r--r--usr.bin/oldrdist/docmd.c16
1 files changed, 13 insertions, 3 deletions
diff --git a/usr.bin/oldrdist/docmd.c b/usr.bin/oldrdist/docmd.c
index 5fc534421d7..bc05fcac0c8 100644
--- a/usr.bin/oldrdist/docmd.c
+++ b/usr.bin/oldrdist/docmd.c
@@ -33,7 +33,7 @@
#ifndef lint
/* from: static char sccsid[] = "@(#)docmd.c 8.1 (Berkeley) 6/9/93"; */
-static char *rcsid = "$Id: docmd.c,v 1.1 1996/02/03 12:11:55 dm Exp $";
+static char *rcsid = "$Id: docmd.c,v 1.2 1996/06/26 03:42:13 deraadt Exp $";
#endif /* not lint */
#include "defs.h"
@@ -139,12 +139,17 @@ doarrow(filev, files, rhost, cmds)
if (nflag)
printf("updating host %s\n", rhost);
else {
+ int fd;
+
if (setjmp(env))
goto done;
signal(SIGPIPE, lostconn);
if (!makeconn(rhost))
return;
- if ((lfp = fopen(tempfile, "w")) == NULL) {
+ if ((fd = open(tempfile, O_RDWR|O_EXCL|O_CREAT, 0666)) == -1 ||
+ (lfp = fdopen(fd, "w")) == NULL) {
+ if (fd != -1)
+ close(fd);
fatal("cannot open %s\n", tempfile);
exit(1);
}
@@ -367,7 +372,12 @@ dodcolon(filev, files, stamp, cmds)
if (nflag || (options & VERIFY))
tfp = NULL;
else {
- if ((tfp = fopen(tempfile, "w")) == NULL) {
+ int fd;
+
+ if ((fd = open(tempfile, O_RDWR|O_EXCL|O_CREAT, 0666)) == -1 ||
+ (tfp = fdopen(fd, "w")) == NULL) {
+ if (fd != -1)
+ close(fd);
error("%s: %s\n", stamp, strerror(errno));
return;
}