canonusr.c | canonusr.c | |||
---|---|---|---|---|
skipping to change at line 243 | skipping to change at line 243 | |||
/* Only SASL_CU_AUTHZID was requested. | /* Only SASL_CU_AUTHZID was requested. | |||
The authz_result value is authoritative. */ | The authz_result value is authoritative. */ | |||
result = authz_result; | result = authz_result; | |||
} else if (result == SASL_OK && authz_result != SASL_NOUSER) { | } else if (result == SASL_OK && authz_result != SASL_NOUSER) { | |||
/* Use the authz_result value, unless "result" | /* Use the authz_result value, unless "result" | |||
already contains an error */ | already contains an error */ | |||
result = authz_result; | result = authz_result; | |||
} | } | |||
} | } | |||
if (result == SASL_NOUSER && (flags & SASL_CU_EXTERNALLY_VERIFIED)) { | if ((flags & SASL_CU_EXTERNALLY_VERIFIED) && (result == SASL_NOUSER || result == SASL_NOMECH)) { | |||
/* The called has explicitly told us that the authentication ide ntity | /* The called has explicitly told us that the authentication ide ntity | |||
was already verified. So a failure to retrieve any associated | was already verified or will be verified independently. | |||
properties | So a failure to retrieve any associated properties | |||
is not an error. For example the caller is using Kerberos to verify user, | is not an error. For example the caller is using Kerberos to verify user, | |||
but the LDAPDB/SASLDB auxprop plugin doesn't contain any auxp rops for | but the LDAPDB/SASLDB auxprop plugin doesn't contain any auxp rops for | |||
the user. */ | the user. | |||
Another case is PLAIN/LOGIN not using auxprop to verify user | ||||
passwords. */ | ||||
result = SASL_OK; | result = SASL_OK; | |||
} | } | |||
} | } | |||
#endif | #endif | |||
RETURN(conn, result); | RETURN(conn, result); | |||
} | } | |||
/* default behavior: | /* default behavior: | |||
* Eliminate leading & trailing whitespace, | * Eliminate leading & trailing whitespace, | |||
skipping to change at line 318 | skipping to change at line 320 | |||
if(!plugname || strlen(plugname) > (PATH_MAX - 1)) { | if(!plugname || strlen(plugname) > (PATH_MAX - 1)) { | |||
sasl_seterror(NULL, 0, | sasl_seterror(NULL, 0, | |||
"bad plugname passed to sasl_canonuser_add_plugin\n"); | "bad plugname passed to sasl_canonuser_add_plugin\n"); | |||
return SASL_BADPARAM; | return SASL_BADPARAM; | |||
} | } | |||
result = canonuserfunc(sasl_global_utils, SASL_CANONUSER_PLUG_VERSION, | result = canonuserfunc(sasl_global_utils, SASL_CANONUSER_PLUG_VERSION, | |||
&out_version, &plug, plugname); | &out_version, &plug, plugname); | |||
if(result != SASL_OK) { | if(result != SASL_OK) { | |||
_sasl_log(NULL, SASL_LOG_ERR, "canonuserfunc error %i\n",result); | _sasl_log(NULL, SASL_LOG_ERR, "%s_canonuser_plug_init() failed in sa | |||
sl_canonuser_add_plugin(): %z\n", | ||||
plugname, result); | ||||
return result; | return result; | |||
} | } | |||
if(!plug->canon_user_server && !plug->canon_user_client) { | if(!plug->canon_user_server && !plug->canon_user_client) { | |||
/* We need at least one of these implemented */ | /* We need at least one of these implemented */ | |||
_sasl_log(NULL, SASL_LOG_ERR, | _sasl_log(NULL, SASL_LOG_ERR, | |||
"canonuser plugin without either client or server side"); | "canonuser plugin '%s' without either client or server sid e", plugname); | |||
return SASL_BADPROT; | return SASL_BADPROT; | |||
} | } | |||
new_item = sasl_ALLOC(sizeof(canonuser_plug_list_t)); | new_item = sasl_ALLOC(sizeof(canonuser_plug_list_t)); | |||
if(!new_item) return SASL_NOMEM; | if(!new_item) return SASL_NOMEM; | |||
strncpy(new_item->name, plugname, PATH_MAX); | strncpy(new_item->name, plugname, PATH_MAX); | |||
new_item->plug = plug; | new_item->plug = plug; | |||
new_item->next = canonuser_head; | new_item->next = canonuser_head; | |||
End of changes. 5 change blocks. | ||||
6 lines changed or deleted | 10 lines changed or added | |||
This html diff was produced by rfcdiff 1.41. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ |