imap-send: check for NOLOGIN capability only when using LOGIN command
PATCH 1/2 imap-send: check for NOLOGIN capability only when using LOGIN command
In reply to a message not in the archiveDon'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.
--- imap-send.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-)
imap-send.c +5 -5
@@ -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" );
Signature · 1 line
2.8.1.104.g07d5700.dirty
PATCH 2/2 imap-send: fix CRAM-MD5 response calculation
In reply to a message not in the archiveRemove 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.
--- imap-send.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
imap-send.c +1 -1
@@ -890,7 +890,7 @@ static char *cram(const char *challenge_64, const char *user, const char *pass)/* response: "<user> <digest in hex>" */ 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,
Signature · 1 line
2.8.1.104.g07d5700.dirty
Quoted 6 lines · Kazuki Yamaguchi
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.
Makes sense. The code with this patch applied implements "An IMAP client which complies with this specification MUST NOT issue the LOGIN command if this capability is present." correctly.
Will queue. Thanks.
Quoted 34 lines
Signed-off-by Kazuki Yamaguchi <[email protected]>--- imap-send.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-)imap-send.c +5
-5@@ -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" );