X-Git-Url: http://git.madism.org/?p=apps%2Fmadmutt.git;a=blobdiff_plain;f=pop%2Fpop_lib.c;h=143868e4c33863b46430b58c23f7e6e641645e89;hp=f63e4f72d89eca5e03f0e66df1ef0e3e201c8e77;hb=ba5e3af4ea19e1d20c80941c077039871ec84258;hpb=814a01519c9605d479201b99eb16c97b0ad8635d diff --git a/pop/pop_lib.c b/pop/pop_lib.c index f63e4f7..143868e 100644 --- a/pop/pop_lib.c +++ b/pop/pop_lib.c @@ -22,6 +22,7 @@ #include "lib/mem.h" #include "lib/intl.h" #include "lib/debug.h" +#include "lib/str.h" #include #include @@ -39,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) { @@ -52,7 +53,7 @@ int pop_parse_path (const char *path, ACCOUNT * acct) ret = 0; } - FREE (&c); + mem_free (&c); return ret; } @@ -64,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); @@ -73,7 +74,7 @@ void pop_error (POP_DATA * pop_data, char *msg) } strfcpy (t, c, sizeof (pop_data->err_msg) - strlen (pop_data->err_msg)); - mutt_remove_trailing_ws (pop_data->err_msg); + str_skip_trailws (pop_data->err_msg); } /* Parse CAPA output */ @@ -83,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)) @@ -110,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__ */ } @@ -147,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 */ @@ -220,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); @@ -259,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?")); @@ -302,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); @@ -403,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); @@ -434,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 = @@ -467,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; } @@ -483,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 (!safe_strcmp (ctx->hdrs[i]->data, line)) { + if (!str_cmp (ctx->hdrs[i]->data, line)) { ctx->hdrs[i]->refno = index; break; }