[dovecot-cvs] dovecot/src/auth userdb-passwd.c,1.4,1.5

cras at procontrol.fi cras at procontrol.fi
Thu May 8 07:36:23 EEST 2003


Update of /home/cvs/dovecot/src/auth
In directory danu:/tmp/cvs-serv25021

Modified Files:
	userdb-passwd.c 
Log Message:
Support wu-ftpd-like chrooting in /etc/passwd. If home directory ends with
"/./", it's chrooted to.



Index: userdb-passwd.c
===================================================================
RCS file: /home/cvs/dovecot/src/auth/userdb-passwd.c,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -d -r1.4 -r1.5
--- userdb-passwd.c	18 Feb 2003 19:11:26 -0000	1.4
+++ userdb-passwd.c	8 May 2003 03:36:21 -0000	1.5
@@ -15,6 +15,7 @@
 {
 	struct user_data data;
 	struct passwd *pw;
+	size_t len;
 
 	pw = getpwnam(user);
 	if (pw == NULL) {
@@ -31,7 +32,16 @@
 	data.gid = pw->pw_gid;
 
 	data.virtual_user = data.system_user = pw->pw_name;
-	data.home = pw->pw_dir;
+
+	len = strlen(pw->pw_dir);
+	if (len < 3 || strcmp(pw->pw_dir + len - 3, "/./") != 0)
+		data.home = pw->pw_dir;
+	else {
+		/* wu-ftpd uses <chroot>/./<dir>. We don't support
+		   the dir after chroot, but this should work well enough. */
+		data.home = t_strndup(pw->pw_dir, len-3);
+		data.chroot = TRUE;
+	}
 
 	callback(&data, context);
 }




More information about the dovecot-cvs mailing list