if (outbuf.length < 4) {
e_error(auth_request->mech_event,
"Invalid response length");
+ (void)gss_release_buffer(&minor_status, &outbuf);
return -1;
}
if (data_has_nuls(name, name_len)) {
e_info(auth_request->mech_event,
"authz_name has NULs");
+ (void)gss_release_buffer(&minor_status, &outbuf);
return -1;
}
request->authz_name = duplicate_name(auth_request,
request->authn_name);
if (get_display_name(auth_request, request->authz_name,
- NULL, &login_user) < 0)
+ NULL, &login_user) < 0) {
+ (void)gss_release_buffer(&minor_status, &outbuf);
return -1;
+ }
}
if (request->authz_name == GSS_C_NO_NAME) {
e_info(auth_request->mech_event,
"no authz_name");
+ (void)gss_release_buffer(&minor_status, &outbuf);
return -1;
}
if (!auth_request_set_username(auth_request, login_user, &error)) {
e_info(auth_request->mech_event,
"authz_name: %s", error);
+ (void)gss_release_buffer(&minor_status, &outbuf);
return -1;
}
auth_request->passdb_success = TRUE; /* default to success */
auth_request_lookup_credentials(&request->auth_request, "",
gssapi_credentials_callback);
+ (void)gss_release_buffer(&minor_status, &outbuf);
return 0;
}