[dovecot-cvs] dovecot/src/auth db-ldap.c, 1.30, 1.31 db-ldap.h, 1.14, 1.15 userdb-ldap.c, 1.32, 1.33

cras at dovecot.org cras at dovecot.org
Fri Jul 22 14:32:59 EEST 2005


Update of /var/lib/cvs/dovecot/src/auth
In directory talvi:/tmp/cvs-serv22198

Modified Files:
	db-ldap.c db-ldap.h userdb-ldap.c 
Log Message:
user_global_uid and user_global_gid settings weren't working. Also changed
them to now allow named user/group.



Index: db-ldap.c
===================================================================
RCS file: /var/lib/cvs/dovecot/src/auth/db-ldap.c,v
retrieving revision 1.30
retrieving revision 1.31
diff -u -d -r1.30 -r1.31
--- db-ldap.c	12 Jul 2005 12:58:47 -0000	1.30
+++ db-ldap.c	22 Jul 2005 11:32:57 -0000	1.31
@@ -9,6 +9,7 @@
 #include "hash.h"
 #include "str.h"
 #include "settings.h"
+#include "userdb.h"
 #include "db-ldap.h"
 
 #include <stddef.h>
@@ -41,8 +42,8 @@
 	DEF(SET_STR, pass_attrs),
 	DEF(SET_STR, pass_filter),
 	DEF(SET_STR, default_pass_scheme),
-	DEF(SET_INT, user_global_uid),
-	DEF(SET_INT, user_global_gid)
+	DEF(SET_STR, user_global_uid),
+	DEF(SET_STR, user_global_gid)
 };
 
 struct ldap_settings default_ldap_settings = {
@@ -59,8 +60,8 @@
 	MEMBER(pass_attrs) "uid,userPassword",
 	MEMBER(pass_filter) "(&(objectClass=posixAccount)(uid=%u))",
 	MEMBER(default_pass_scheme) "crypt",
-	MEMBER(user_global_uid) (uid_t)-1,
-	MEMBER(user_global_gid) (gid_t)-1
+	MEMBER(user_global_uid) "",
+	MEMBER(user_global_gid) ""
 };
 
 static struct ldap_connection *ldap_connections = NULL;
@@ -381,7 +382,29 @@
 		i_fatal("LDAP: No base given");
 
         conn->set.ldap_deref = deref2str(conn->set.deref);
-        conn->set.ldap_scope = scope2str(conn->set.scope);
+	conn->set.ldap_scope = scope2str(conn->set.scope);
+
+	if (*conn->set.user_global_uid == '\0')
+		conn->set.uid = (uid_t)-1;
+	else {
+		conn->set.uid =
+			userdb_parse_uid(NULL, conn->set.user_global_uid);
+		if (conn->set.uid == (uid_t)-1) {
+			i_fatal("LDAP: Invalid user_global_uid: %s",
+				conn->set.user_global_uid);
+		}
+	}
+
+	if (*conn->set.user_global_gid == '\0')
+		conn->set.gid = (gid_t)-1;
+	else {
+		conn->set.gid =
+			userdb_parse_gid(NULL, conn->set.user_global_gid);
+		if (conn->set.gid == (gid_t)-1) {
+			i_fatal("LDAP: Invalid user_global_gid: %s",
+				conn->set.user_global_gid);
+		}
+	}
 
 	conn->next = ldap_connections;
         ldap_connections = conn;

Index: db-ldap.h
===================================================================
RCS file: /var/lib/cvs/dovecot/src/auth/db-ldap.h,v
retrieving revision 1.14
retrieving revision 1.15
diff -u -d -r1.14 -r1.15
--- db-ldap.h	17 Apr 2005 16:52:00 -0000	1.14
+++ db-ldap.h	22 Jul 2005 11:32:57 -0000	1.15
@@ -26,10 +26,12 @@
 	const char *pass_filter;
 
 	const char *default_pass_scheme;
-	unsigned int user_global_uid;
-	unsigned int user_global_gid;
+	const char *user_global_uid;
+	const char *user_global_gid;
 
 	int ldap_deref, ldap_scope;
+	uid_t uid;
+	gid_t gid;
 };
 
 struct ldap_connection {

Index: userdb-ldap.c
===================================================================
RCS file: /var/lib/cvs/dovecot/src/auth/userdb-ldap.c,v
retrieving revision 1.32
retrieving revision 1.33
diff -u -d -r1.32 -r1.33
--- userdb-ldap.c	12 Jul 2005 12:58:47 -0000	1.32
+++ userdb-ldap.c	22 Jul 2005 11:32:57 -0000	1.33
@@ -109,14 +109,27 @@
 	}
 
 	if (!seen_uid) {
-		auth_request_log_error(auth_request, "ldap",
-			"uid not in user_attrs and no default given in "
-			"user_global_uid");
+	}
+
+	if (!seen_uid) {
+		if (conn->set.uid == (uid_t)-1) {
+			auth_request_log_error(auth_request, "ldap",
+				"uid not in user_attrs and no default given in "
+				"user_global_uid");
+		}
+
+		str_append(str, "\tuid=");
+		str_append(str, dec2str(conn->set.uid));
 	}
 	if (!seen_gid) {
-		auth_request_log_error(auth_request, "ldap",
-			"gid not in user_attrs and no default given in "
-			"user_global_gid");
+		if (conn->set.gid == (gid_t)-1) {
+			auth_request_log_error(auth_request, "ldap",
+				"gid not in user_attrs and no default given in "
+				"user_global_gid");
+		}
+
+		str_append(str, "\tgid=");
+		str_append(str, dec2str(conn->set.gid));
 	}
 
 	return str_c(str);



More information about the dovecot-cvs mailing list