1
0
mirror of https://git.libssh.org/projects/libssh.git synced 2025-08-08 19:02:06 +03:00

gssapi: Check return values of buffer functions.

CID #0
This commit is contained in:
Andreas Schneider
2013-07-14 14:42:13 +02:00
parent 1467e0782e
commit 831ed08a56

View File

@@ -281,7 +281,8 @@ SSH_PACKET_CALLBACK(ssh_packet_userauth_gssapi_token_server){
gss_name_t client_name = GSS_C_NO_NAME; gss_name_t client_name = GSS_C_NO_NAME;
OM_uint32 ret_flags=0; OM_uint32 ret_flags=0;
gss_channel_bindings_t input_bindings=GSS_C_NO_CHANNEL_BINDINGS; gss_channel_bindings_t input_bindings=GSS_C_NO_CHANNEL_BINDINGS;
//char *name; int rc;
(void)user; (void)user;
(void)type; (void)type;
@@ -299,7 +300,7 @@ SSH_PACKET_CALLBACK(ssh_packet_userauth_gssapi_token_server){
if (ssh_callbacks_exists(session->server_callbacks, gssapi_accept_sec_ctx_function)){ if (ssh_callbacks_exists(session->server_callbacks, gssapi_accept_sec_ctx_function)){
ssh_string out_token=NULL; ssh_string out_token=NULL;
int rc = session->server_callbacks->gssapi_accept_sec_ctx_function(session, rc = session->server_callbacks->gssapi_accept_sec_ctx_function(session,
token, &out_token, session->server_callbacks->userdata); token, &out_token, session->server_callbacks->userdata);
if (rc == SSH_ERROR){ if (rc == SSH_ERROR){
ssh_auth_reply_default(session, 0); ssh_auth_reply_default(session, 0);
@@ -308,8 +309,17 @@ SSH_PACKET_CALLBACK(ssh_packet_userauth_gssapi_token_server){
return SSH_PACKET_USED; return SSH_PACKET_USED;
} }
if (ssh_string_len(out_token) != 0){ if (ssh_string_len(out_token) != 0){
buffer_add_u8(session->out_buffer, SSH2_MSG_USERAUTH_GSSAPI_TOKEN); rc = buffer_add_u8(session->out_buffer,
buffer_add_ssh_string(session->out_buffer,out_token); SSH2_MSG_USERAUTH_GSSAPI_TOKEN);
if (rc < 0) {
ssh_set_error_oom(session);
return SSH_PACKET_USED;
}
rc = buffer_add_ssh_string(session->out_buffer, out_token);
if (rc < 0) {
ssh_set_error_oom(session);
return SSH_PACKET_USED;
}
packet_send(session); packet_send(session);
ssh_string_free(out_token); ssh_string_free(out_token);
} else { } else {