From fb2226a9aebebf0ada6fcd298c400a5c58ee3008 Mon Sep 17 00:00:00 2001
From: Chris Allegretta <chrisa@asty.org>
Date: Mon, 4 Dec 2000 05:25:47 +0000
Subject: [PATCH] Okay, we'll use O_EXCL also

git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@383 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
---
 ChangeLog | 2 +-
 files.c   | 8 +++++++-
 2 files changed, 8 insertions(+), 2 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index 4e7d6d1f..6a157173 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -3,7 +3,7 @@ CVS code -
   write_file()
 	- Added tmp check to TMP_OPT section (how apropriate).
 	- Added new consistency checking code from securityfocus 
-	  article by Oliver Friedrichs.
+	  article by Oliver Friedrichs, and use O_EXCL if tmp == 1.
 - winio.c:
   edit_add()
 	- Off by one display error (fix by Rocco Corsi).
diff --git a/files.c b/files.c
index 0b38e3b5..c0299e40 100644
--- a/files.c
+++ b/files.c
@@ -334,7 +334,13 @@ int write_file(char *name, int tmp)
 	 return -1;
     else if (ISSET(FOLLOW_SYMLINKS) || !S_ISLNK(st.st_mode)) {
 
-	fd = open(realname, O_WRONLY | O_CREAT | O_TRUNC,
+	/* Use O_EXCL if tmp == 1, I suppose */
+	if (tmp)
+	    fd = open(realname, O_WRONLY | O_CREAT | O_EXCL | O_TRUNC,
+			S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP | S_IROTH |
+			S_IWOTH);
+	else 
+	    fd = open(realname, O_WRONLY | O_CREAT | O_TRUNC,
 			S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP | S_IROTH |
 			S_IWOTH);
 
-- 
GitLab