diff options
| -rw-r--r-- | lib/imap.c | 21 | 
1 files changed, 12 insertions, 9 deletions
diff --git a/lib/imap.c b/lib/imap.c index 503ed6d46..29784e9e8 100644 --- a/lib/imap.c +++ b/lib/imap.c @@ -692,6 +692,12 @@ static CURLcode imap_select(struct connectdata *conn)    Curl_safefree(imapc->mailbox);    Curl_safefree(imapc->mailbox_uidvalidity); +  /* Check we have a mailbox */ +  if(!imap->mailbox) { +    failf(conn->data, "Cannot SELECT without a mailbox."); +    return CURLE_URL_MALFORMAT; +  } +    /* Make sure the mailbox is in the correct atom format */    mailbox = imap_atom(imap->mailbox);    if(!mailbox) @@ -730,6 +736,12 @@ static CURLcode imap_append(struct connectdata *conn)    struct IMAP *imap = conn->data->state.proto.imap;    char *mailbox; +  /* Check we have a mailbox */ +  if(!imap->mailbox) { +    failf(conn->data, "Cannot APPEND without a mailbox."); +    return CURLE_URL_MALFORMAT; +  } +    /* Check we know the size of the upload */    if(conn->data->set.infilesize < 0) {      failf(conn->data, "Cannot APPEND with unknown input file size\n"); @@ -1869,7 +1881,6 @@ static CURLcode imap_perform(struct connectdata *conn, bool *connected,  static CURLcode imap_do(struct connectdata *conn, bool *done)  {    CURLcode result = CURLE_OK; -  struct IMAP *imap;    *done = FALSE; /* default to false */ @@ -1882,8 +1893,6 @@ static CURLcode imap_do(struct connectdata *conn, bool *done)    if(result)      return result; -  imap = conn->data->state.proto.imap; -    /* Parse the URL path */    result = imap_parse_url_path(conn);    if(result) @@ -1894,12 +1903,6 @@ static CURLcode imap_do(struct connectdata *conn, bool *done)    if(result)      return result; -  /* Check we have a mailbox for FETCH and APPEND commands */ -  if(!imap->custom && !imap->mailbox) { -    failf(conn->data, "FETCH and APPEND require a mailbox."); -    return CURLE_URL_MALFORMAT; -  } -    result = imap_regular_transfer(conn, done);    return result;  | 
