[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