=================================================================== RCS file: /cvsrepo/anoncvs/cvs/src/usr.bin/patch/patch.c,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- src/usr.bin/patch/patch.c 1996/06/10 11:21:31 1.2 +++ src/usr.bin/patch/patch.c 1996/06/25 23:06:39 1.3 @@ -1,4 +1,4 @@ -/* $OpenBSD: patch.c,v 1.2 1996/06/10 11:21:31 niklas Exp $ */ +/* $OpenBSD: patch.c,v 1.3 1996/06/25 23:06:39 deraadt Exp $ */ /* patch - a program to apply diffs to original files * @@ -9,7 +9,7 @@ */ #ifndef lint -static char rcsid[] = "$OpenBSD: patch.c,v 1.2 1996/06/10 11:21:31 niklas Exp $"; +static char rcsid[] = "$OpenBSD: patch.c,v 1.3 1996/06/25 23:06:39 deraadt Exp $"; #endif /* not lint */ #include "INTERN.h" @@ -784,9 +784,14 @@ init_output(name) char *name; { - ofp = fopen(name, "w"); - if (ofp == Nullfp) + int fd; + + if ((fd = open(name, O_EXCL|O_CREAT|O_RDWR, 0666)) == -1 || + (ofp = fdopen(fd, "w")) == NULL) { + if (fd != -1) + close(fd); pfatal2("can't create %s", name); + } } /* Open a file to put hunks we can't locate. */ @@ -795,9 +800,14 @@ init_reject(name) char *name; { - rejfp = fopen(name, "w"); - if (rejfp == Nullfp) + int fd; + + if ((fd = open(name, O_EXCL|O_CREAT|O_RDWR, 0666)) == -1 || + (rejfp = fdopen(fd, "w")) == NULL) { + if (fd != -1) + close(fd); pfatal2("can't create %s", name); + } } /* Copy input file to output, up to wherever hunk is to be applied. */