]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
auth: db-lua - Fix password scheme handling
authorAki Tuomi <aki.tuomi@dovecot.fi>
Tue, 28 Nov 2017 14:50:13 +0000 (16:50 +0200)
committerAki Tuomi <aki.tuomi@dovecot.fi>
Tue, 28 Nov 2017 18:00:24 +0000 (20:00 +0200)
It was left as NULL and had misleading name in some
of the handler functions causing assert-crash.

src/auth/db-lua.c

index 1dcf854e9dea6c4d3ee32e21e9d9d27314af0343..a54143dc1739a4069716b8845b4756c2bfaf2270 100644 (file)
@@ -418,8 +418,7 @@ auth_lua_export_fields(struct auth_request *req,
                        key = t_strdup_until(*fields, value++);
                }
 
-               if (password_r != NULL && strcmp(key, "password") == 0 &&
-                   req->userdb_lookup) {
+               if (password_r != NULL && strcmp(key, "password") == 0) {
                        *scheme_r = password_get_scheme(&value);
                        *password_r = value;
                } else if (req->userdb_lookup) {
@@ -507,7 +506,7 @@ auth_lua_export_passdb_table(struct dlua_script *script, struct auth_request *re
 
 static enum passdb_result
 auth_lua_call_lookup_finish(struct dlua_script *script, struct auth_request *req,
-                           const char **username_r, const char **password_r,
+                           const char **scheme_r, const char **password_r,
                            const char **error_r)
 {
        if (lua_istable(script->L, -1)) {
@@ -522,9 +521,12 @@ auth_lua_call_lookup_finish(struct dlua_script *script, struct auth_request *req
        if (ret != PASSDB_RESULT_OK && ret != PASSDB_RESULT_NEXT) {
                *error_r = str;
        } else {
-               auth_lua_export_fields(req, str, username_r, password_r);
+               auth_lua_export_fields(req, str, scheme_r, password_r);
        }
 
+       if (scheme_r != NULL && *scheme_r == NULL)
+               *scheme_r = "PLAIN";
+
        return ret;
 }