Fix $auth1 problem in dovecot authenticator.
[exim.git] / src / src / auths / dovecot.c
index c11b2fe9b274b02c8bf47c823572bdf00d2c2ae9..61b0f0b4f2031be3eb99332f99c8d0f2b6333d93 100644 (file)
@@ -1,4 +1,4 @@
-/* $Cambridge: exim/src/src/auths/dovecot.c,v 1.2 2006/10/16 13:43:22 ph10 Exp $ */
+/* $Cambridge: exim/src/src/auths/dovecot.c,v 1.4 2007/01/23 12:22:00 ph10 Exp $ */
 
 /*
  * Copyright (c) 2004 Andrey Panin <pazke@donpac.ru>
@@ -278,7 +278,8 @@ int auth_dovecot_server(auth_instance *ablock, uschar *data)
                                uschar *p = US strchr(args[2], '=');
                                if (p) {
                                        ++p;
-                                       expand_nstring[1] = auth_vars[0] = p;
+                                       expand_nstring[1] = auth_vars[0] =
+                                         string_copy(p);  /* PH */
                                        expand_nlength[1] = Ustrlen(p);
                                        expand_nmax = 1;
                                }
@@ -296,7 +297,8 @@ int auth_dovecot_server(auth_instance *ablock, uschar *data)
                                        OUT("authentication socket protocol error, username missing");
 
                                p++;
-                               expand_nstring[1] = auth_vars[0] = p;
+                               expand_nstring[1] = auth_vars[0] =
+                                 string_copy(p);  /* PH */
                                expand_nlength[1] = Ustrlen(p);
                                expand_nmax = 1;
                        }
@@ -309,5 +311,7 @@ int auth_dovecot_server(auth_instance *ablock, uschar *data)
        }
 
 out:   close(fd);
-       return ret;
+
+       /* Expand server_condition as an authorization check */
+       return (ret == OK)? auth_check_serv_cond(ablock) : ret;
 }