X-Git-Url: http://git.madism.org/?p=apps%2Fmadmutt.git;a=blobdiff_plain;f=mutt_sasl.c;h=5c661c7f3bf430cb8f77d7bb0b2c9f2c35b86047;hp=ea3438797b99bf84e370daa535b52d843f2bfc5b;hb=7048f7d738dac900f2e76622f3d92b62f99b69a7;hpb=814a01519c9605d479201b99eb16c97b0ad8635d diff --git a/mutt_sasl.c b/mutt_sasl.c index ea34387..5c661c7 100644 --- a/mutt_sasl.c +++ b/mutt_sasl.c @@ -123,7 +123,7 @@ static int iptostring (const struct sockaddr *addr, socklen_t addrlen, 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); @@ -327,12 +327,12 @@ sasl_callback_t *mutt_sasl_get_callbacks (ACCOUNT * account) 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++; @@ -367,7 +367,7 @@ int mutt_sasl_interact (sasl_interact_t * interaction) 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); @@ -443,8 +443,7 @@ static int mutt_sasl_cb_log (void *context, int priority, const char *message) 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) { @@ -461,13 +460,18 @@ static int mutt_sasl_cb_authname (void *context, int id, const char **result, 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; } @@ -482,12 +486,12 @@ static int mutt_sasl_cb_pass (sasl_conn_t * conn, void *context, int id, 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;