From 6c50a575952fcffa0df0cb435e9e3f4eab74b1bf Mon Sep 17 00:00:00 2001 From: Kazuki Yamaguchi Date: Fri, 8 Apr 2016 23:02:24 +0900 Subject: [PATCH 1/2] imap-send: check for NOLOGIN capability only when using LOGIN command Don't check for NOLOGIN (LOGINDISABLED) capability when imap.authMethod is specified. LOGINDISABLED capability doesn't forbid using AUTHENTICATE, so it should be allowed, or we can't connect to IMAP servers which only accepts AUTHENTICATE command. Signed-off-by: Kazuki Yamaguchi Signed-off-by: Junio C Hamano --- imap-send.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/imap-send.c b/imap-send.c index 2c52027c84..30979f0c63 100644 --- a/imap-send.c +++ b/imap-send.c @@ -1095,11 +1095,6 @@ static struct imap_store *imap_open_store(struct imap_server_conf *srvc, char *f srvc->pass = xstrdup(cred.password); } - if (CAP(NOLOGIN)) { - fprintf(stderr, "Skipping account %s@%s, server forbids LOGIN\n", srvc->user, srvc->host); - goto bail; - } - if (srvc->auth_method) { struct imap_cmd_cb cb; @@ -1123,6 +1118,11 @@ static struct imap_store *imap_open_store(struct imap_server_conf *srvc, char *f goto bail; } } else { + if (CAP(NOLOGIN)) { + fprintf(stderr, "Skipping account %s@%s, server forbids LOGIN\n", + srvc->user, srvc->host); + goto bail; + } if (!imap->buf.sock.ssl) imap_warn("*** IMAP Warning *** Password is being " "sent in the clear\n"); From eb94ee7f0f38cd24270bfb2f655cdec214a4d6e0 Mon Sep 17 00:00:00 2001 From: Kazuki Yamaguchi Date: Fri, 8 Apr 2016 23:02:30 +0900 Subject: [PATCH 2/2] imap-send: fix CRAM-MD5 response calculation Remove extra + 1 from resp_len, the length of the byte sequence to be Base64 encoded and passed to the server as the response. Or the response incorrectly contains an extra \0. Signed-off-by: Kazuki Yamaguchi Signed-off-by: Junio C Hamano --- imap-send.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/imap-send.c b/imap-send.c index 30979f0c63..407e46bc8c 100644 --- a/imap-send.c +++ b/imap-send.c @@ -890,7 +890,7 @@ static char *cram(const char *challenge_64, const char *user, const char *pass) /* response: " " */ response = xstrfmt("%s %s", user, hex); - resp_len = strlen(response) + 1; + resp_len = strlen(response); response_64 = xmallocz(ENCODED_SIZE(resp_len)); encoded_len = EVP_EncodeBlock((unsigned char *)response_64,