if (ret)
return getnameinfo_err (ret);
- if (outlen < safe_strlen (hbuf) + safe_strlen (pbuf) + 2)
+ if (outlen < mutt_strlen (hbuf) + mutt_strlen (pbuf) + 2)
return SASL_BUFOVER;
snprintf (out, outlen, "%s;%s", hbuf, pbuf);
/*** set sasl IP properties, necessary for use with krb4 ***/
/* Do we need to fail if this fails? I would assume having these unset
- * would just disable KRB4. Who wrote this code? I'm not sure how this
- * interacts with the NSS code either, since that mucks with the fd. */
+ * would just disable KRB4. Who wrote this code?
+ */
#ifndef USE_SASL2 /* with SASLv2 this all happens in sasl_client_new */
{
struct sockaddr_in local, remote;
return -1;
}
- /* we currently don't have an SSF finder for NSS (I don't know the API).
- * If someone does it'd probably be trivial to write mutt_nss_get_ssf().
- * I have a feeling more SSL code could be shared between those two files,
- * but I haven't looked into it yet, since I still don't know the APIs. */
-#if (defined(USE_SSL) || defined(USE_GNUTLS) && !defined(USE_NSS))
- if (conn->account.flags & M_ACCT_SSL) {
+#if defined(USE_SSL) || defined(USE_GNUTLS)
+ if (conn->ssf) {
#ifdef USE_SASL2 /* I'm not sure this actually has an effect, at least with SASLv2 */
debug_print (2, ("External SSF: %d\n", conn->ssf));
if (sasl_setprop (*saslconn, SASL_SSF_EXTERNAL, &(conn->ssf)) != SASL_OK)
callback = mutt_sasl_callbacks;
- callback->id = SASL_CB_AUTHNAME;
+ callback->id = SASL_CB_USER;
callback->proc = mutt_sasl_cb_authname;
callback->context = account;
callback++;
- callback->id = SASL_CB_USER;
+ callback->id = SASL_CB_AUTHNAME;
callback->proc = mutt_sasl_cb_authname;
callback->context = account;
callback++;
if (mutt_get_field (prompt, resp, sizeof (resp), 0))
return SASL_FAIL;
- interaction->len = safe_strlen (resp) + 1;
+ interaction->len = mutt_strlen (resp) + 1;
interaction->result = safe_malloc (interaction->len);
- memcpy (interaction->result, resp, interaction->len);
+ memcpy ((char*) interaction->result, resp, interaction->len);
interaction++;
}
return SASL_OK;
}
-/* mutt_sasl_cb_authname: callback to retrieve authname or user (mutt
- * doesn't distinguish, even if some SASL plugins do) from ACCOUNT */
+/* mutt_sasl_cb_authname: callback to retrieve authname or user from ACCOUNT */
static int mutt_sasl_cb_authname (void *context, int id, const char **result,
unsigned *len)
{
id == SASL_CB_AUTHNAME ? "authname" : "user",
account->host, account->port));
- if (mutt_account_getuser (account))
- return SASL_FAIL;
-
- *result = account->user;
+ if (id == SASL_CB_AUTHNAME) {
+ if (mutt_account_getlogin (account))
+ return SASL_FAIL;
+ *result = account->login;
+ } else {
+ if (mutt_account_getuser (account))
+ return SASL_FAIL;
+ *result = account->user;
+ }
if (len)
- *len = safe_strlen (*result);
+ *len = mutt_strlen (*result);
return SASL_OK;
}
return SASL_BADPARAM;
debug_print (2, ("getting password for %s@%s:%u\n",
- account->user, account->host, account->port));
+ account->login, account->host, account->port));
if (mutt_account_getpass (account))
return SASL_FAIL;
- len = safe_strlen (account->pass);
+ len = mutt_strlen (account->pass);
*psecret = (sasl_secret_t *) safe_malloc (sizeof (sasl_secret_t) + len);
(*psecret)->len = len;
- strcpy ((*psecret)->data, account->pass); /* __STRCPY_CHECKED__ */
+ strcpy ((char*) (*psecret)->data, account->pass); /* __STRCPY_CHECKED__ */
return SASL_OK;
}