[dovecot-cvs] dovecot/src/lib-storage/index/maildir maildir-list.c,1.5,1.6 maildir-storage.c,1.19,1.20

cras at procontrol.fi cras at procontrol.fi
Sat Dec 21 14:14:01 EET 2002


Update of /home/cvs/dovecot/src/lib-storage/index/maildir
In directory danu:/tmp/cvs-serv29177/src/lib-storage/index/maildir

Modified Files:
	maildir-list.c maildir-storage.c 
Log Message:
If used base/login directories exist already, make sure they're with correct
permissions. Always delete contents in login directory at startup.

Added safe_mkdir(). changed unlink_directory() behaviour, and fixed a race
condition which could have made it follow symlinks to other directories and
delete them. Didn't really harm us so far, we never used it for deleting
unsafe directories.



Index: maildir-list.c
===================================================================
RCS file: /home/cvs/dovecot/src/lib-storage/index/maildir/maildir-list.c,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -d -r1.5 -r1.6
--- maildir-list.c	19 Dec 2002 01:02:35 -0000	1.5
+++ maildir-list.c	21 Dec 2002 12:13:58 -0000	1.6
@@ -133,7 +133,7 @@
 			   delete it ourself if it's been there longer than
 			   one hour */
 			if (st.st_mtime < 3600)
-				(void)unlink_directory(path);
+				(void)unlink_directory(path, TRUE);
 			continue;
 		}
 

Index: maildir-storage.c
===================================================================
RCS file: /home/cvs/dovecot/src/lib-storage/index/maildir/maildir-storage.c,v
retrieving revision 1.19
retrieving revision 1.20
diff -u -d -r1.19 -r1.20
--- maildir-storage.c	20 Dec 2002 07:53:52 -0000	1.19
+++ maildir-storage.c	21 Dec 2002 12:13:58 -0000	1.20
@@ -307,7 +307,7 @@
 
 	if (strcmp(storage->index_dir, storage->dir) != 0) {
 		index_dir = t_strconcat(storage->index_dir, "/.", name, NULL);
-		if (!unlink_directory(index_dir)) {
+		if (unlink_directory(index_dir, TRUE) < 0) {
 			mail_storage_set_critical(storage,
 						  "unlink_directory(%s) "
 						  "failed: %m", index_dir);
@@ -325,7 +325,7 @@
 		}
 
 		/* ..dir already existed? delete it and try again */
-		if (!unlink_directory(dest)) {
+		if (unlink_directory(dest, TRUE) < 0) {
 			mail_storage_set_critical(storage,
 						  "unlink_directory(%s) "
 						  "failed: %m", dest);
@@ -334,7 +334,7 @@
 		count++;
 	}
 
-	if (!unlink_directory(dest)) {
+	if (unlink_directory(dest, TRUE) < 0) {
 		mail_storage_set_critical(storage, "unlink_directory(%s) "
 					  "failed: %m", dest);
 		return FALSE;




More information about the dovecot-cvs mailing list