diff options
author | Jeffrey Stedfast <fejj@ximian.com> | 2001-11-09 08:41:09 +0800 |
---|---|---|
committer | Jeffrey Stedfast <fejj@src.gnome.org> | 2001-11-09 08:41:09 +0800 |
commit | 64c19759bfa6820bd67b47d659ea7241f2efbd9b (patch) | |
tree | 6658ac64f2592da0df4bdb49838d1e7b83bd3943 /camel/providers/imap/camel-imap-store.c | |
parent | 4e96a9415be10f8184d8b3b2e47f879f78faeac7 (diff) | |
download | gsoc2013-evolution-64c19759bfa6820bd67b47d659ea7241f2efbd9b.tar gsoc2013-evolution-64c19759bfa6820bd67b47d659ea7241f2efbd9b.tar.gz gsoc2013-evolution-64c19759bfa6820bd67b47d659ea7241f2efbd9b.tar.bz2 gsoc2013-evolution-64c19759bfa6820bd67b47d659ea7241f2efbd9b.tar.lz gsoc2013-evolution-64c19759bfa6820bd67b47d659ea7241f2efbd9b.tar.xz gsoc2013-evolution-64c19759bfa6820bd67b47d659ea7241f2efbd9b.tar.zst gsoc2013-evolution-64c19759bfa6820bd67b47d659ea7241f2efbd9b.zip |
Now takes a command-length argument so we can 1) avoid duping the command
2001-11-06 Jeffrey Stedfast <fejj@ximian.com>
* providers/imap/camel-imap-command.c
(camel_imap_command_continuation): Now takes a command-length
argument so we can 1) avoid duping the command string yet again,
yay. 2) we now don't have to worry about embedded nul-chars
screwing us over (we still need to avoid allowing them into the
string but at least now it won't mess us up).
* providers/imap/camel-imap-folder.c (do_append): Instead of
appending a nul char to the end of the byte array and then passing
that off as if it were a string to
camel_imap_command_continuation, instead pass the byte-array
length since that function now takes a length argument. Yay. Also
encode any 8bit parts to avoid the possibility of sending embedded
nul chars to the imap server.
* providers/imap/camel-imap-store.c (try_auth): Updated to pass a
command-length argument to camel_imap_command_continuation().
svn path=/trunk/; revision=14637
Diffstat (limited to 'camel/providers/imap/camel-imap-store.c')
-rw-r--r-- | camel/providers/imap/camel-imap-store.c | 23 |
1 files changed, 11 insertions, 12 deletions
diff --git a/camel/providers/imap/camel-imap-store.c b/camel/providers/imap/camel-imap-store.c index 1ef9b6edad..0811061280 100644 --- a/camel/providers/imap/camel-imap-store.c +++ b/camel/providers/imap/camel-imap-store.c @@ -446,31 +446,30 @@ try_auth (CamelImapStore *store, const char *mech, CamelException *ex) CamelImapResponse *response; char *resp; char *sasl_resp; - + CAMEL_IMAP_STORE_ASSERT_LOCKED (store, command_lock); - - response = camel_imap_command (store, NULL, ex, - "AUTHENTICATE %s", mech); + + response = camel_imap_command (store, NULL, ex, "AUTHENTICATE %s", mech); if (!response) return FALSE; - + sasl = camel_sasl_new ("imap", mech, CAMEL_SERVICE (store)); while (!camel_sasl_authenticated (sasl)) { resp = camel_imap_response_extract_continuation (store, response, ex); if (!resp) goto lose; - + sasl_resp = camel_sasl_challenge_base64 (sasl, resp + 2, ex); g_free (resp); if (camel_exception_is_set (ex)) goto break_and_lose; - - response = camel_imap_command_continuation (store, sasl_resp, ex); + + response = camel_imap_command_continuation (store, sasl_resp, strlen (sasl_resp), ex); g_free (sasl_resp); if (!response) goto lose; } - + resp = camel_imap_response_extract_continuation (store, response, NULL); if (resp) { /* Oops. SASL claims we're done, but the IMAP server @@ -483,13 +482,13 @@ try_auth (CamelImapStore *store, const char *mech, CamelException *ex) camel_object_unref (CAMEL_OBJECT (sasl)); return TRUE; - + break_and_lose: /* Get the server out of "waiting for continuation data" mode. */ - response = camel_imap_command_continuation (store, "*", NULL); + response = camel_imap_command_continuation (store, "*", 1, NULL); if (response) camel_imap_response_free (store, response); - + lose: if (!camel_exception_is_set (ex)) { camel_exception_set (ex, CAMEL_EXCEPTION_SERVICE_CANT_AUTHENTICATE, |