dovecot-2.2-pigeonhole: managesieve-login: proxy: Fixed use of S...
pigeonhole at rename-it.nl
pigeonhole at rename-it.nl
Fri May 22 19:14:30 UTC 2015
details: http://hg.rename-it.nl/dovecot-2.2-pigeonhole/rev/330e55055d61
changeset: 2077:330e55055d61
user: Stephan Bosch <stephan at rename-it.nl>
date: Fri May 22 21:14:21 2015 +0200
description:
managesieve-login: proxy: Fixed use of SASL mechanisms with multiple challenge-response cycles.
Previous change had several problems.
diffstat:
src/managesieve-login/managesieve-proxy.c | 26 +++++++++++++++++---------
1 files changed, 17 insertions(+), 9 deletions(-)
diffs (57 lines):
diff -r 3df7e50f986d -r 330e55055d61 src/managesieve-login/managesieve-proxy.c
--- a/src/managesieve-login/managesieve-proxy.c Fri May 22 02:11:03 2015 +0200
+++ b/src/managesieve-login/managesieve-proxy.c Fri May 22 21:14:21 2015 +0200
@@ -55,6 +55,19 @@
client->common.proxy_ttl - 1);
}
+static void proxy_write_auth_data
+(const unsigned char *data, unsigned int data_len,
+ string_t *str)
+{
+ if (data_len == 0)
+ str_append(str, "\"\"");
+ else {
+ string_t *data_str = t_str_new(128);
+ base64_encode(data, data_len, data_str);
+ managesieve_quote_append_string(str, str_c(data_str), FALSE);
+ }
+}
+
static int proxy_write_auth
(struct managesieve_client *client, string_t *str)
{
@@ -93,13 +106,9 @@
mech_name, error));
return -1;
}
- str_append_c(str, ' ');
- if (len == 0)
- str_append(str, "\"\"");
- else {
- string_t *resp = t_str_new(128);
- base64_encode(output, len, resp);
- managesieve_quote_append_string(str, str_c(resp), FALSE);
+ if (len > 0) {
+ str_append_c(str, ' ');
+ proxy_write_auth_data(output, len, str);
}
str_append(str, "\r\n");
proxy_free_password(&client->common);
@@ -175,7 +184,6 @@
const char *error;
int ret;
- str = t_str_new(256);
if (base64_decode(challenge, strlen(challenge), NULL, str) < 0) {
client_log_err(&client->common,
"proxy: Server sent invalid base64 data in AUTHENTICATE response");
@@ -196,7 +204,7 @@
i_assert(ret == 0);
str_truncate(str, 0);
- base64_encode(data, data_len, str);
+ proxy_write_auth_data(data, data_len, str);
str_append(str, "\r\n");
return 0;
}
More information about the dovecot-cvs
mailing list