dovecot-2.1: lib-storage: Added separate %{gid} expansion to mai...

dovecot at dovecot.org dovecot at dovecot.org
Sat Dec 10 08:41:17 EET 2011


details:   http://hg.dovecot.org/dovecot-2.1/rev/499e4916bed5
changeset: 13841:499e4916bed5
user:      Timo Sirainen <tss at iki.fi>
date:      Sat Dec 10 08:41:01 2011 +0200
description:
lib-storage: Added separate %{gid} expansion to mail_user.
The default %{gid} probably works also, but it's more reliable to do this
explicitly.

diffstat:

 src/lib-storage/mail-storage-service.c |  2 +-
 src/lib-storage/mail-user.c            |  6 ++++--
 src/lib-storage/mail-user.h            |  5 +++--
 3 files changed, 8 insertions(+), 5 deletions(-)

diffs (60 lines):

diff -r 95524ab3469f -r 499e4916bed5 src/lib-storage/mail-storage-service.c
--- a/src/lib-storage/mail-storage-service.c	Sat Dec 10 08:35:06 2011 +0200
+++ b/src/lib-storage/mail-storage-service.c	Sat Dec 10 08:41:01 2011 +0200
@@ -484,7 +484,7 @@
 	mail_user = mail_user_alloc(user->input.username, user->user_info,
 				    user->user_set);
 	mail_user_set_home(mail_user, *home == '\0' ? NULL : home);
-	mail_user_set_vars(mail_user, geteuid(), ctx->service->name,
+	mail_user_set_vars(mail_user, geteuid(), getegid(), ctx->service->name,
 			   &user->input.local_ip, &user->input.remote_ip);
 
 	mail_set = mail_user_set_get_storage_set(mail_user);
diff -r 95524ab3469f -r 499e4916bed5 src/lib-storage/mail-user.c
--- a/src/lib-storage/mail-user.c	Sat Dec 10 08:35:06 2011 +0200
+++ b/src/lib-storage/mail-user.c	Sat Dec 10 08:41:01 2011 +0200
@@ -159,11 +159,12 @@
 	return NULL;
 }
 
-void mail_user_set_vars(struct mail_user *user, uid_t uid, const char *service,
-			const struct ip_addr *local_ip,
+void mail_user_set_vars(struct mail_user *user, uid_t uid, gid_t gid,
+			const char *service, const struct ip_addr *local_ip,
 			const struct ip_addr *remote_ip)
 {
 	user->uid = uid;
+	user->gid = gid;
 	user->service = p_strdup(user->pool, service);
 	if (local_ip != NULL && local_ip->family != 0) {
 		user->local_ip = p_new(user->pool, struct ip_addr, 1);
@@ -188,6 +189,7 @@
 		{ 'r', NULL, "rip" },
 		{ 'p', NULL, "pid" },
 		{ 'i', NULL, "uid" },
+		{ '\0', NULL, "gid" },
 		{ '\0', NULL, NULL }
 	};
 	struct var_expand_table *tab;
diff -r 95524ab3469f -r 499e4916bed5 src/lib-storage/mail-user.h
--- a/src/lib-storage/mail-user.h	Sat Dec 10 08:35:06 2011 +0200
+++ b/src/lib-storage/mail-user.h	Sat Dec 10 08:41:01 2011 +0200
@@ -20,6 +20,7 @@
 	const char *_home;
 
 	uid_t uid;
+	gid_t gid;
 	const char *service;
 	struct ip_addr *local_ip, *remote_ip;
 	const struct var_expand_table *var_expand_table;
@@ -77,8 +78,8 @@
 struct mail_user *mail_user_find(struct mail_user *user, const char *name);
 
 /* Specify mail location %variable expansion data. */
-void mail_user_set_vars(struct mail_user *user, uid_t uid, const char *service,
-			const struct ip_addr *local_ip,
+void mail_user_set_vars(struct mail_user *user, uid_t uid, gid_t gid,
+			const char *service, const struct ip_addr *local_ip,
 			const struct ip_addr *remote_ip);
 /* Return %variable expansion table for the user. */
 const struct var_expand_table *


More information about the dovecot-cvs mailing list