]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
Give better error message if uid/gid not found from ldap and no default was
authorTimo Sirainen <tss@iki.fi>
Fri, 22 Aug 2003 05:06:53 +0000 (08:06 +0300)
committerTimo Sirainen <tss@iki.fi>
Fri, 22 Aug 2003 05:06:53 +0000 (08:06 +0300)
set.

--HG--
branch : HEAD

src/auth/db-ldap.c
src/auth/userdb-ldap.c

index 10ab9fc44da660ff4f1446aafd294294025662c5..fbf17d05f3067c33e28ca0bf0e31e47d6b1236a6 100644 (file)
@@ -54,8 +54,8 @@ struct ldap_settings default_ldap_settings = {
        MEMBER(pass_attrs) NULL,
        MEMBER(pass_filter) NULL,
        MEMBER(default_pass_scheme) "crypt",
-       MEMBER(user_global_uid) 0,
-       MEMBER(user_global_gid) 0
+       MEMBER(user_global_uid) (uid_t)-1,
+       MEMBER(user_global_gid) (gid_t)-1
 };
 
 static struct ldap_connection *ldap_connections = NULL;
index 37647e06cdf7c2171bb4157137c28ff69705b806..f13afb8d5f195dde833bc821bb95c50d6bd1c135 100644 (file)
@@ -127,18 +127,25 @@ static void handle_request(struct ldap_connection *conn,
                attr = ldap_next_attribute(conn->ld, entry, ber);
        }
 
-       if (user.virtual_user == NULL) {
+       if (user.virtual_user == NULL)
                i_error("LDAP: No username in reply");
-               urequest->userdb_callback(NULL, request->context);
+       else if (user.uid == (uid_t)-1) {
+               i_error("ldap(%s): uidNumber not set and no default given in "
+                       "user_global_uid", user.virtual_user);
+       } else if (user.gid == (gid_t)-1) {
+               i_error("ldap(%s): gidNumber not set and no default given in "
+                       "user_global_gid", user.virtual_user);
+       } else if (ldap_next_entry(conn->ld, entry) != NULL) {
+               i_error("ldap(%s): Multiple replies found for user",
+                       user.virtual_user);
        } else {
-               if (ldap_next_entry(conn->ld, entry) != NULL) {
-                       i_error("LDAP: Multiple replies found for user %s",
-                               user.virtual_user);
-               } else {
-                       urequest->userdb_callback(&user, request->context);
-               }
+               urequest->userdb_callback(&user, request->context);
+               t_pop();
+               return;
        }
 
+       /* error */
+       urequest->userdb_callback(NULL, request->context);
        t_pop();
 }