diff src/lib-storage/index/maildir/maildir-sync.c @ 5911:8bb5c7a69405 HEAD

If readdir() or closedir() fails, return failure.
author Timo Sirainen <tss@iki.fi>
date Sun, 08 Jul 2007 22:16:04 +0300
parents 289f828591f7
children 53abd603e04b
line wrap: on
line diff
--- a/src/lib-storage/index/maildir/maildir-sync.c	Sun Jul 08 22:13:53 2007 +0300
+++ b/src/lib-storage/index/maildir/maildir-sync.c	Sun Jul 08 22:16:04 2007 +0300
@@ -643,7 +643,9 @@
 	ctx->move_count = 0;
 	move_new = new_dir && !mailbox_is_readonly(&ctx->mbox->ibox.box) &&
 		!ctx->mbox->ibox.keep_recent;
-	while ((dp = readdir(dirp)) != NULL) {
+
+	errno = 0;
+	for (; (dp = readdir(dirp)) != NULL; errno = 0) {
 		if (dp->d_name[0] == '.')
 			continue;
 
@@ -715,9 +717,16 @@
 		}
 	}
 
+	if (errno != 0) {
+		mail_storage_set_critical(storage,
+					  "readdir(%s) failed: %m", dir);
+		ret = -1;
+	}
+
 	if (closedir(dirp) < 0) {
 		mail_storage_set_critical(storage,
 					  "closedir(%s) failed: %m", dir);
+		ret = -1;
 	}
 
 	t_pop();