[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