This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "GNU gsasl".
http://git.savannah.gnu.org/cgit/gsasl.git/commit/?id=ddb53a7d228880fdabaebc87d7424761c6d8a4b7 The branch, master has been updated via ddb53a7d228880fdabaebc87d7424761c6d8a4b7 (commit) from f7d306f34b1d465ee951ab75c66e3d3e2f7b55b4 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit ddb53a7d228880fdabaebc87d7424761c6d8a4b7 Author: Simon Josefsson <[email protected]> Date: Wed Sep 12 14:29:13 2012 +0200 gsasl: IMAP client code now permits empty SASL tokens prefixed with '+'. Normally servers should send '+ '. Buggy servers include Microsoft Exchange. Reported by Adam Sjøgren. ----------------------------------------------------------------------- Summary of changes: NEWS | 4 ++++ src/imap.c | 14 +++++++++----- 2 files changed, 13 insertions(+), 5 deletions(-) diff --git a/NEWS b/NEWS index 2909679..222d63b 100644 --- a/NEWS +++ b/NEWS @@ -8,6 +8,10 @@ SASL. That include the manual, the command line tool, and self tests. * Version 1.8.1 (unreleased) [stable] +** gsasl: IMAP client code now permits empty SASL tokens prefixed with '+'. +Normally servers should send '+ '. Buggy servers include Microsoft +Exchange. Reported by Adam Sjøgren. + ** GSSAPI client: Now retrieves GSASL_AUTHZID for authorization identity. ** GSSAPI client: Can now transmit an empty/missing authorization identity. Before the GSSAPI client retrieved GSASL_AUTHID (authentication diff --git a/src/imap.c b/src/imap.c index 22da867..0fa6a4e 100644 --- a/src/imap.c +++ b/src/imap.c @@ -175,13 +175,17 @@ imap_step_recv (char **data) if (strlen (p) >= 2 && strncmp (p, ". ", 2) == 0) return 3; - if (strlen (p) >= 2 && strncmp (p, "+ ", 2) != 0) + if (strlen (p) >= 2 && strncmp (p, "+ ", 2) == 0) + memmove (&p[0], &p[2], strlen (p) - 1); + /* This is a workaround for servers (e.g., Microsoft Exchange) + that return '+' instead of the correct '+ '. */ + else if (strcmp (p, "+\n") == 0) + p[0] = '\0'; + else { - fprintf (stderr, _("error: server did not return a token\n")); - return 0; + fprintf (stderr, _("warning: server did not return a token\n")); + return 3; } - - memmove (&p[0], &p[2], strlen (p) - 1); } if (p[strlen (p) - 1] == '\n') hooks/post-receive -- GNU gsasl
_______________________________________________ Gsasl-commit mailing list [email protected] https://lists.gnu.org/mailman/listinfo/gsasl-commit
