From: <hesso@pool.math.tu-berlin.de>
Subject: No description.

diff -Naur nvi-1.81.6.orig/common/exf.c nvi-1.81.6/common/exf.c
--- nvi-1.81.6.orig/common/exf.c	2008-05-01 18:10:45.000000000 +0200
+++ nvi-1.81.6/common/exf.c	2008-05-01 18:13:23.000000000 +0200
@@ -207,16 +207,21 @@
 	 */
 	oname = frp->name;
 	if (LF_ISSET(FS_OPENERR) || oname == NULL || !exists) {
+		mode_t orig_umask;
 		if (opts_empty(sp, O_TMP_DIRECTORY, 0))
 			goto err;
+		orig_umask = umask(0);
+		umask(orig_umask & 0177);
 		(void)snprintf(tname, sizeof(tname),
 		    "%s/vi.XXXXXX", O_STR(sp, O_TMP_DIRECTORY));
 		if ((fd = mkstemp(tname)) == -1) {
+			umask(orig_umask);
 			msgq(sp, M_SYSERR,
 			    "237|Unable to create temporary file");
 			goto err;
 		}
 		(void)close(fd);
+		umask(orig_umask);
 
 		if (frp->name == NULL)
 			F_SET(frp, FR_TMPFILE);
