changeset 12698:c75a13e5b678

mkdir_*chown/chgrp(): If chown() fails, rmdir() the directory.
author Timo Sirainen <tss@iki.fi>
date Sun, 16 Jan 2011 21:15:10 +0200
parents 113b54dcb950
children 9d111f5b22e2
files src/lib/mkdir-parents.c
diffstat 1 files changed, 5 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/src/lib/mkdir-parents.c	Sun Jan 16 18:53:27 2011 +0200
+++ b/src/lib/mkdir-parents.c	Sun Jan 16 21:15:10 2011 +0200
@@ -33,12 +33,16 @@
 		return -1;
 	}
 	if (chown(path, uid, gid) < 0) {
+		orig_errno = errno;
+		if (rmdir(path) < 0)
+			i_error("rmdir(%s) failed: %m", path);
+		errno = orig_errno;
+
 		if (errno == EPERM && uid == (uid_t)-1) {
 			i_error("%s", eperm_error_get_chgrp("chown", path, gid,
 							    gid_origin));
 			return -1;
 		}
-		orig_errno = errno;
 
 		str = t_str_new(256);
 		str_printfa(str, "chown(%s, %ld", path,