X-Git-Url: http://git.madism.org/?p=apps%2Fmadmutt.git;a=blobdiff_plain;f=pop%2Fpop_lib.c;h=143868e4c33863b46430b58c23f7e6e641645e89;hp=2880de52f5daeead48b88262fb99dbc79d30bb49;hb=ba5e3af4ea19e1d20c80941c077039871ec84258;hpb=96d53ff49c308769efbf708e1e65819077cb7af6 diff --git a/pop/pop_lib.c b/pop/pop_lib.c index 2880de5..143868e 100644 --- a/pop/pop_lib.c +++ b/pop/pop_lib.c @@ -40,7 +40,7 @@ int pop_parse_path (const char *path, ACCOUNT * acct) acct->port = POP_PORT; acct->type = M_ACCT_TYPE_POP; - c = safe_strdup (path); + c = str_dup (path); url_parse_ciss (&url, c); if (url.scheme == U_POP || url.scheme == U_POPS) { @@ -53,7 +53,7 @@ int pop_parse_path (const char *path, ACCOUNT * acct) ret = 0; } - FREE (&c); + mem_free (&c); return ret; } @@ -65,7 +65,7 @@ void pop_error (POP_DATA * pop_data, char *msg) t = strchr (pop_data->err_msg, '\0'); c = msg; - if (!safe_strncmp (msg, "-ERR ", 5)) { + if (!str_ncmp (msg, "-ERR ", 5)) { c2 = msg + 5; SKIPWS (c2); @@ -84,10 +84,10 @@ static int fetch_capa (char *line, void *data) char *c; if (!ascii_strncasecmp (line, "SASL", 4)) { - FREE (&pop_data->auth_list); + mem_free (&pop_data->auth_list); c = line + 4; SKIPWS (c); - pop_data->auth_list = safe_strdup (c); + pop_data->auth_list = str_dup (c); } else if (!ascii_strncasecmp (line, "STLS", 4)) @@ -111,11 +111,11 @@ static int fetch_auth (char *line, void *data) POP_DATA *pop_data = (POP_DATA *) data; if (!pop_data->auth_list) { - pop_data->auth_list = safe_malloc (strlen (line) + 1); + pop_data->auth_list = mem_malloc (strlen (line) + 1); *pop_data->auth_list = '\0'; } else { - safe_realloc (&pop_data->auth_list, + mem_realloc (&pop_data->auth_list, strlen (pop_data->auth_list) + strlen (line) + 2); strcat (pop_data->auth_list, " "); /* __STRCAT_CHECKED__ */ } @@ -148,7 +148,7 @@ static pop_query_status pop_capabilities (POP_DATA * pop_data, int mode) pop_data->resp_codes = 0; pop_data->expire = 1; pop_data->login_delay = 0; - FREE (&pop_data->auth_list); + mem_free (&pop_data->auth_list); } /* Execute CAPA command */ @@ -221,7 +221,7 @@ pop_query_status pop_connect (POP_DATA * pop_data) pop_data->status = POP_CONNECTED; - if (safe_strncmp (buf, "+OK", 3)) { + if (str_ncmp (buf, "+OK", 3)) { *pop_data->err_msg = '\0'; pop_error (pop_data, buf); mutt_error ("%s", pop_data->err_msg); @@ -260,9 +260,11 @@ pop_query_status pop_open_connection (POP_DATA * pop_data) return PQ_ERR; } -#if (defined(USE_SSL) || defined(USE_GNUTLS)) && !defined(USE_NSS) +#if (defined(USE_SSL) || defined(USE_GNUTLS)) /* Attempt STLS if available and desired. */ - if (pop_data->cmd_stls && !pop_data->conn->ssf) { + if (!pop_data->conn->ssf && (pop_data->cmd_stls || option(OPTSSLFORCETLS))) { + if (option (OPTSSLFORCETLS)) + pop_data->use_stls = 2; if (pop_data->use_stls == 0) { ret = query_quadoption (OPT_SSLSTARTTLS, _("Secure connection with TLS?")); @@ -303,6 +305,12 @@ pop_query_status pop_open_connection (POP_DATA * pop_data) } } } + + if (option(OPTSSLFORCETLS) && !pop_data->conn->ssf) { + mutt_error _("Encrypted connection unavailable"); + mutt_sleep (1); + return -2; + } #endif ret = pop_authenticate (pop_data); @@ -404,7 +412,7 @@ pop_query_status pop_query_d (POP_DATA * pop_data, char *buf, size_t buflen, cha pop_data->status = POP_DISCONNECTED; return PQ_NOT_CONNECTED; } - if (!safe_strncmp (buf, "+OK", 3)) + if (!str_ncmp (buf, "+OK", 3)) return PQ_OK; pop_error (pop_data, buf); @@ -435,7 +443,7 @@ pop_query_status pop_fetch_data (POP_DATA * pop_data, char *query, char *msg, if (ret != PQ_OK) return ret; - inbuf = safe_malloc (sizeof (buf)); + inbuf = mem_malloc (sizeof (buf)); FOREVER { chunk = @@ -468,10 +476,10 @@ pop_query_status pop_fetch_data (POP_DATA * pop_data, char *query, char *msg, lenbuf = 0; } - safe_realloc (&inbuf, lenbuf + sizeof (buf)); + mem_realloc (&inbuf, lenbuf + sizeof (buf)); } - FREE (&inbuf); + mem_free (&inbuf); return ret; } @@ -484,7 +492,7 @@ static int check_uidl (char *line, void *data) sscanf (line, "%u %s", &index, line); for (i = 0; i < ctx->msgcount; i++) { - if (!mutt_strcmp (ctx->hdrs[i]->data, line)) { + if (!str_cmp (ctx->hdrs[i]->data, line)) { ctx->hdrs[i]->refno = index; break; }