Wraps auth_request_fail().
if (verify_credentials(request, credentials, size))
sasl_server_request_success(auth_request, "", 0);
else
- auth_request_fail(auth_request);
+ sasl_server_request_failure(auth_request);
break;
case PASSDB_RESULT_INTERNAL_FAILURE:
auth_request_internal_failure(auth_request);
break;
default:
- auth_request_fail(auth_request);
+ sasl_server_request_failure(auth_request);
break;
}
}
/* Should never happen */
e_info(auth_request->mech_event,
"no initial response");
- auth_request_fail(auth_request);
+ sasl_server_request_failure(auth_request);
return;
}
/* should never happen */
e_info(auth_request->mech_event,
"malformed data");
- auth_request_fail(auth_request);
+ sasl_server_request_failure(auth_request);
return;
}
/* Should never happen */
e_info(auth_request->mech_event,
"malformed data");
- auth_request_fail(auth_request);
+ sasl_server_request_failure(auth_request);
return;
}
memcpy(request->response_digest, tmp + 1,
(time_t)timestamp < process_start_time) {
e_info(auth_request->mech_event,
"invalid challenge");
- auth_request_fail(auth_request);
+ sasl_server_request_failure(auth_request);
return;
}
if (!auth_request_set_username(auth_request, (const char *)username,
&error)) {
e_info(auth_request->mech_event, "%s", error);
- auth_request_fail(auth_request);
+ sasl_server_request_failure(auth_request);
return;
}
if (count != 4) {
/* invalid input */
e_info(request->mech_event, "invalid input");
- auth_request_fail(request);
+ sasl_server_request_failure(request);
} else if (!auth_request_set_username(request, username, &error)) {
/* invalid username */
e_info(request->mech_event, "%s", error);
- auth_request_fail(request);
+ sasl_server_request_failure(request);
} else {
const char *valid_token =
auth_token_get(service, pid, request->fields.user,
auth_request_set_field(request, "userdb_client_service", service, "");
sasl_server_request_success(request, NULL, 0);
} else {
- auth_request_fail(request);
+ sasl_server_request_failure(request);
}
}
if (size != CRAM_MD5_CONTEXTLEN) {
e_error(auth_request->mech_event, "invalid credentials length");
- auth_request_fail(auth_request);
+ sasl_server_request_failure(auth_request);
return;
}
sizeof(digest) * 2)) {
e_info(auth_request->mech_event,
AUTH_LOG_MSG_PASSWORD_MISMATCH);
- auth_request_fail(auth_request);
+ sasl_server_request_failure(auth_request);
return;
}
auth_request_internal_failure(auth_request);
break;
default:
- auth_request_fail(auth_request);
+ sasl_server_request_failure(auth_request);
break;
}
}
const char *error;
if (!parse_cram_response(request, data, data_size)) {
- auth_request_fail(auth_request);
+ sasl_server_request_failure(auth_request);
return;
}
if (!auth_request_set_username(auth_request, request->username,
&error)) {
e_info(auth_request->mech_event, "%s", error);
- auth_request_fail(auth_request);
+ sasl_server_request_failure(auth_request);
return;
}
if (size != MD5_RESULTLEN) {
e_error(auth_request->mech_event,
"invalid credentials length");
- auth_request_fail(auth_request);
+ sasl_server_request_failure(auth_request);
return;
}
request->response, 32)) {
e_info(auth_request->mech_event,
AUTH_LOG_MSG_PASSWORD_MISMATCH);
- auth_request_fail(auth_request);
+ sasl_server_request_failure(auth_request);
return;
}
} else {
auth_request_internal_failure(auth_request);
break;
default:
- auth_request_fail(auth_request);
+ sasl_server_request_failure(auth_request);
break;
}
}
if (!parse_digest_response(request, data, data_size, &error)) {
e_info(auth_request->mech_event, "%s", error);
- auth_request_fail(auth_request);
+ sasl_server_request_failure(auth_request);
return;
}
}
if (!auth_request_set_username(auth_request, username, &error)) {
e_info(auth_request->mech_event, "%s", error);
- auth_request_fail(auth_request);
+ sasl_server_request_failure(auth_request);
return;
}
if (request->authzid != NULL &&
!auth_request_set_login_username(auth_request, request->authzid,
&error)) {
e_info(auth_request->mech_event, "login user: %s", error);
- auth_request_fail(auth_request);
+ sasl_server_request_failure(auth_request);
return;
}
if (request->fields.user == NULL) {
e_info(request->mech_event,
"username not known");
- auth_request_fail(request);
+ sasl_server_request_failure(request);
return;
}
if (!auth_request_set_username(request, "", &error)) {
e_info(request->mech_event,
"Invalid username");
- auth_request_fail(request);
+ sasl_server_request_failure(request);
return;
}
/* invalid login username */
e_info(request->mech_event,
"login user: %s", error);
- auth_request_fail(request);
+ sasl_server_request_failure(request);
} else {
auth_request_verify_plain(
request, "", sasl_server_mech_plain_verify_callback);
if (!auth_request_set_username(request, username, &error)) {
e_info(request->mech_event, "%s", error);
- auth_request_fail(request);
+ sasl_server_request_failure(request);
return;
}
json_ostream_nfinish_destroy(&joutput);
oauth2_req->failed = TRUE;
- auth_request_fail_with_reply(request, str_data(reply), str_len(reply));
+ sasl_server_request_failure_with_reply(request,
+ str_data(reply), str_len(reply));
}
static void
&request->state) != 0) {
e_error(auth_request->mech_event,
"invalid OTP data in passdb");
- auth_request_fail(auth_request);
+ sasl_server_request_failure(auth_request);
return;
}
if (--request->state.seq < 1) {
e_error(auth_request->mech_event,
"sequence number < 1");
- auth_request_fail(auth_request);
+ sasl_server_request_failure(auth_request);
return;
}
if (!otp_try_lock(request)) {
e_error(auth_request->mech_event,
"user is locked, race attack?");
- auth_request_fail(auth_request);
+ sasl_server_request_failure(auth_request);
return;
}
auth_request_internal_failure(auth_request);
break;
default:
- auth_request_fail(auth_request);
+ sasl_server_request_failure(auth_request);
break;
}
}
if (count != 1) {
e_info(auth_request->mech_event, "invalid input");
- auth_request_fail(auth_request);
+ sasl_server_request_failure(auth_request);
return;
}
if (!auth_request_set_username(auth_request, authenid, &error)) {
e_info(auth_request->mech_event, "%s", error);
- auth_request_fail(auth_request);
+ sasl_server_request_failure(auth_request);
return;
}
ret = otp_parse_response(data, hash, hex);
if (ret < 0) {
e_info(auth_request->mech_event, "invalid response");
- auth_request_fail(auth_request);
+ sasl_server_request_failure(auth_request);
otp_unlock(request);
return;
}
ret = memcmp(cur_hash, state->hash, OTP_HASH_SIZE);
if (ret != 0) {
- auth_request_fail(auth_request);
+ sasl_server_request_failure(auth_request);
otp_unlock(request);
return;
}
if (ret < 0) {
e_info(auth_request->mech_event,
"invalid init response, %s", error);
- auth_request_fail(auth_request);
+ sasl_server_request_failure(auth_request);
otp_unlock(request);
return;
}
ret = memcmp(hash, request->state.hash, OTP_HASH_SIZE);
if (ret != 0) {
- auth_request_fail(auth_request);
+ sasl_server_request_failure(auth_request);
otp_unlock(request);
return;
}
else {
e_info(auth_request->mech_event,
"unsupported response type");
- auth_request_fail(auth_request);
+ sasl_server_request_failure(auth_request);
otp_unlock(request);
}
}
auth_request_internal_failure(request);
break;
default:
- auth_request_fail(request);
+ sasl_server_request_failure(request);
break;
}
}
if (count != 2) {
/* invalid input */
e_info(request->mech_event, "invalid input");
- auth_request_fail(request);
+ sasl_server_request_failure(request);
} else if (!auth_request_set_username(request, authenid, &error)) {
/* invalid username */
e_info(request->mech_event, "%s", error);
- auth_request_fail(request);
+ sasl_server_request_failure(request);
} else if (*authid != '\0' &&
!auth_request_set_login_username(request, authid, &error)) {
/* invalid login username */
e_info(request->mech_event,
"login user: %s", error);
- auth_request_fail(request);
+ sasl_server_request_failure(request);
} else {
auth_request_verify_plain(
request, pass, sasl_server_mech_plain_verify_callback);
key_data->server_key,
&error) < 0) {
e_info(auth_request->mech_event, "%s", error);
- auth_request_fail(auth_request);
+ sasl_server_request_failure(auth_request);
break;
}
auth_request_internal_failure(auth_request);
break;
default:
- auth_request_fail(auth_request);
+ sasl_server_request_failure(auth_request);
break;
}
}
} else {
e_info(auth_request->mech_event, "%s", error);
}
- auth_request_fail(auth_request);
+ sasl_server_request_failure(auth_request);
return;
}
if (ret == 0)
if (res != HR_OK) {
if (res == HR_RESTART)
winbind_helper_disconnect(request->winbind);
- auth_request_fail(auth_request);
+ sasl_server_request_failure(auth_request);
}
}
const void *data, size_t data_size);
void sasl_server_request_success(struct auth_request *request,
const void *data, size_t data_size);
+void sasl_server_request_failure_with_reply(struct auth_request *request,
+ const void *data, size_t data_size);
+void sasl_server_request_failure(struct auth_request *request);
#endif
};
auth_sasl_request_output(request, &output);
}
+
+void sasl_server_request_failure_with_reply(struct auth_request *request,
+ const void *data, size_t data_size)
+{
+ const struct sasl_server_output output = {
+ .status = SASL_SERVER_OUTPUT_FAILURE,
+ .data = data,
+ .data_size = data_size,
+ };
+ auth_sasl_request_output(request, &output);
+}
+
+void sasl_server_request_failure(struct auth_request *request)
+{
+ sasl_server_request_failure_with_reply(request, "", 0);
+}