mirror of
https://github.com/moparisthebest/curl
synced 2024-12-21 23:58:49 -05:00
imap: Fixed double quote in LIST command when mailbox contains spaces
This commit is contained in:
parent
1a614c6c37
commit
50bff12ac8
16
lib/imap.c
16
lib/imap.c
@ -98,7 +98,7 @@ static int imap_getsock(struct connectdata *conn, curl_socket_t *socks,
|
|||||||
int numsocks);
|
int numsocks);
|
||||||
static CURLcode imap_doing(struct connectdata *conn, bool *dophase_done);
|
static CURLcode imap_doing(struct connectdata *conn, bool *dophase_done);
|
||||||
static CURLcode imap_setup_connection(struct connectdata *conn);
|
static CURLcode imap_setup_connection(struct connectdata *conn);
|
||||||
static char *imap_atom(const char *str);
|
static char *imap_atom(const char *str, bool escape_only);
|
||||||
static CURLcode imap_sendf(struct connectdata *conn, const char *fmt, ...);
|
static CURLcode imap_sendf(struct connectdata *conn, const char *fmt, ...);
|
||||||
static CURLcode imap_parse_url_options(struct connectdata *conn);
|
static CURLcode imap_parse_url_options(struct connectdata *conn);
|
||||||
static CURLcode imap_parse_url_path(struct connectdata *conn);
|
static CURLcode imap_parse_url_path(struct connectdata *conn);
|
||||||
@ -540,8 +540,8 @@ static CURLcode imap_perform_login(struct connectdata *conn)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* Make sure the username and password are in the correct atom format */
|
/* Make sure the username and password are in the correct atom format */
|
||||||
user = imap_atom(conn->user);
|
user = imap_atom(conn->user, false);
|
||||||
passwd = imap_atom(conn->passwd);
|
passwd = imap_atom(conn->passwd, false);
|
||||||
|
|
||||||
/* Send the LOGIN command */
|
/* Send the LOGIN command */
|
||||||
result = imap_sendf(conn, "LOGIN %s %s", user ? user : "",
|
result = imap_sendf(conn, "LOGIN %s %s", user ? user : "",
|
||||||
@ -654,7 +654,7 @@ static CURLcode imap_perform_list(struct connectdata *conn)
|
|||||||
imap->custom_params ? imap->custom_params : "");
|
imap->custom_params ? imap->custom_params : "");
|
||||||
else {
|
else {
|
||||||
/* Make sure the mailbox is in the correct atom format if necessary */
|
/* Make sure the mailbox is in the correct atom format if necessary */
|
||||||
mailbox = imap->mailbox ? imap_atom(imap->mailbox) : (char *)"";
|
mailbox = imap->mailbox ? imap_atom(imap->mailbox, true) : (char *) "";
|
||||||
if(!mailbox)
|
if(!mailbox)
|
||||||
return CURLE_OUT_OF_MEMORY;
|
return CURLE_OUT_OF_MEMORY;
|
||||||
|
|
||||||
@ -695,7 +695,7 @@ static CURLcode imap_perform_select(struct connectdata *conn)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* Make sure the mailbox is in the correct atom format */
|
/* Make sure the mailbox is in the correct atom format */
|
||||||
mailbox = imap_atom(imap->mailbox);
|
mailbox = imap_atom(imap->mailbox, false);
|
||||||
if(!mailbox)
|
if(!mailbox)
|
||||||
return CURLE_OUT_OF_MEMORY;
|
return CURLE_OUT_OF_MEMORY;
|
||||||
|
|
||||||
@ -769,7 +769,7 @@ static CURLcode imap_perform_append(struct connectdata *conn)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* Make sure the mailbox is in the correct atom format */
|
/* Make sure the mailbox is in the correct atom format */
|
||||||
mailbox = imap_atom(imap->mailbox);
|
mailbox = imap_atom(imap->mailbox, false);
|
||||||
if(!mailbox)
|
if(!mailbox)
|
||||||
return CURLE_OUT_OF_MEMORY;
|
return CURLE_OUT_OF_MEMORY;
|
||||||
|
|
||||||
@ -1815,7 +1815,7 @@ static CURLcode imap_sendf(struct connectdata *conn, const char *fmt, ...)
|
|||||||
* The returned string needs to be freed.
|
* The returned string needs to be freed.
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
static char *imap_atom(const char *str)
|
static char *imap_atom(const char *str, bool escape_only)
|
||||||
{
|
{
|
||||||
const char *p1;
|
const char *p1;
|
||||||
char *p2;
|
char *p2;
|
||||||
@ -1835,7 +1835,7 @@ static char *imap_atom(const char *str)
|
|||||||
backsp_count++;
|
backsp_count++;
|
||||||
else if(*p1 == '"')
|
else if(*p1 == '"')
|
||||||
quote_count++;
|
quote_count++;
|
||||||
else if(*p1 == ' ')
|
else if(!escape_only && (*p1 == ' '))
|
||||||
space_exists = TRUE;
|
space_exists = TRUE;
|
||||||
|
|
||||||
p1++;
|
p1++;
|
||||||
|
Loading…
Reference in New Issue
Block a user