diff --git a/ChangeLog b/ChangeLog
index 6d51d3900b9abb99d03fcf22a10a292d02d5f2a7..fe24400c052e6488a1cb89eef6cd81c7802ee7bf 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,7 @@
+2008-08-08 Magnus Granberg <zorry@ume.nu> / Adam Conrad <?>
+	* files.c: (write_file): Add needed flags to open() calls when writing out files.  Fixes Savannah bug 
+	  #23827: Compilation fails with -D_FORTIFY_SOURCE=2
+
 2008-08-08 Chris Allegretta <chrisa@asty.org>
 	* files.c (write_file): Check exit code of fclose(), since in certain out of space conditions the OS will
 	  happily report successful fwrite()s until you try and close the file.  Fix for Savannah bug
diff --git a/src/files.c b/src/files.c
index e589f619f8d9350effcb7c1fedcf2b981a5fd79a..258864cae69a6d44e8cd13176df4aabaffd19d55 100644
--- a/src/files.c
+++ b/src/files.c
@@ -1588,7 +1588,7 @@ bool write_file(const char *name, FILE *f_open, bool tmp, append_type
 	}
 
 	if (f_open == NULL) {
-	    fd_source = open(realname, O_RDONLY | O_CREAT);
+	    fd_source = open(realname, O_RDONLY | O_CREAT, S_IRUSR | S_IWUSR);
 
 	    if (fd_source != -1) {
 		f_source = fdopen(fd_source, "rb");
@@ -1707,7 +1707,7 @@ bool write_file(const char *name, FILE *f_open, bool tmp, append_type
 	int fd_source;
 	FILE *f_source = NULL;
 
-	fd_source = open(tempname, O_RDONLY | O_CREAT);
+	fd_source = open(tempname, O_RDONLY | O_CREAT, S_IRUSR | S_IWUSR);
 
 	if (fd_source != -1) {
 	    f_source = fdopen(fd_source, "rb");