-/* $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.5 2007/01/24 17:14:27 magnus Exp $ */
/*
* Copyright (c) 2004 Andrey Panin <pazke@donpac.ru>
auth_extra_data = string_sprintf("secured\t%s%s",
tls_certificate_verified? "valid-client-cert" : "",
tls_certificate_verified? "\t" : "");
- else if (Ustrcmp(sender_host_address, interface_address) == 0)
+ else if (interface_address
+ && Ustrcmp(sender_host_address, interface_address) == 0)
auth_extra_data = US"secured\t";
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;
}
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;
}
}
out: close(fd);
- return ret;
+
+ /* Expand server_condition as an authorization check */
+ return (ret == OK)? auth_check_serv_cond(ablock) : ret;
}