]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
auth: Fix password and scheme handling in Lua db
authorAki Tuomi <aki.tuomi@dovecot.fi>
Fri, 22 Dec 2017 11:34:45 +0000 (13:34 +0200)
committerTimo Sirainen <timo.sirainen@dovecot.fi>
Fri, 22 Dec 2017 13:27:31 +0000 (15:27 +0200)
This was only partially fixed in c86575ac9776d0995355d03719c82e7ceac802e6

src/auth/db-lua.c
src/auth/passdb-lua.c

index a54143dc1739a4069716b8845b4756c2bfaf2270..efc372c110922cf963044908df1e7cc2c2427581 100644 (file)
@@ -453,8 +453,7 @@ static void auth_lua_export_table(struct dlua_script *script, struct auth_reques
                        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) {
@@ -510,7 +509,8 @@ auth_lua_call_lookup_finish(struct dlua_script *script, struct auth_request *req
                            const char **error_r)
 {
        if (lua_istable(script->L, -1)) {
-               return auth_lua_export_passdb_table(script, req, NULL, NULL, error_r);
+               return auth_lua_export_passdb_table(script, req, scheme_r,
+                                                   password_r, error_r);
        }
 
        enum passdb_result ret = lua_tointeger(script->L, -2);
index 2f6da9e93b1a6d188debe5d81d034af76096e8ee..760a889ba1d74431dc47dcde5baa2625be82d9e8 100644 (file)
@@ -89,6 +89,8 @@ passdb_lua_verify_plain(struct auth_request *request, const char *password,
        } else {
                result = passdb_lua_lookup(request, &lua_scheme, &lua_password);
                if (result == PASSDB_RESULT_OK) {
+                       if (lua_scheme == NULL)
+                               lua_scheme = "PLAIN";
                        if ((auth_request_password_verify(request, password, lua_password,
                                                          lua_scheme, AUTH_SUBSYS_DB)) <=0) {
                                result = PASSDB_RESULT_PASSWORD_MISMATCH;