Slightly safer temp file open.
authormillert <millert@openbsd.org>
Sun, 15 Sep 1996 18:59:07 +0000 (18:59 +0000)
committermillert <millert@openbsd.org>
Sun, 15 Sep 1996 18:59:07 +0000 (18:59 +0000)
usr.bin/m4/eval.c

index ef14aa3..636e113 100644 (file)
@@ -1,4 +1,4 @@
-/*      $OpenBSD: eval.c,v 1.5 1996/07/01 20:40:27 deraadt Exp $      */
+/*      $OpenBSD: eval.c,v 1.6 1996/09/15 18:59:07 millert Exp $      */
 /*      $NetBSD: eval.c,v 1.5 1996/01/13 23:25:23 pk Exp $      */
 
 /*
@@ -41,7 +41,7 @@
 #if 0
 static char sccsid[] = "@(#)eval.c     8.2 (Berkeley) 4/27/95";
 #else
-static char rcsid[] = "$OpenBSD: eval.c,v 1.5 1996/07/01 20:40:27 deraadt Exp $";
+static char rcsid[] = "$OpenBSD: eval.c,v 1.6 1996/09/15 18:59:07 millert Exp $";
 #endif
 #endif /* not lint */
 
@@ -57,6 +57,7 @@ static char rcsid[] = "$OpenBSD: eval.c,v 1.5 1996/07/01 20:40:27 deraadt Exp $"
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
+#include <fcntl.h>
 #include "mdef.h"
 #include "stdd.h"
 #include "extern.h"
@@ -664,11 +665,14 @@ void
 dodiv(n)
 register int n;
 {
+       int fd;
+
        if (n < 0 || n >= MAXOUT)
                n = 0;                 /* bitbucket */
        if (outfile[n] == NULL) {
                m4temp[UNIQUE] = n + '0';
-               if ((outfile[n] = fopen(m4temp, "w")) == NULL)
+               if ((fd = open(m4temp, O_CREAT|O_EXCL|O_WRONLY, 0600)) < 0 ||
+                   (outfile[n] = fdopen(fd, "w")) == NULL)
                        oops("%s: cannot divert.", m4temp);
        }
        oindex = n;