1
1

auth: Prefix kbdint functions.

Этот коммит содержится в:
Andreas Schneider 2011-08-25 16:26:12 +02:00
родитель c59939d4a2
Коммит 892cb92f57
4 изменённых файлов: 84 добавлений и 85 удалений

Просмотреть файл

@ -46,9 +46,9 @@ struct ssh_kbdint_struct {
}; };
typedef struct ssh_kbdint_struct* ssh_kbdint; typedef struct ssh_kbdint_struct* ssh_kbdint;
ssh_kbdint kbdint_new(void); ssh_kbdint ssh_kbdint_new(void);
void kbdint_clean(ssh_kbdint kbd); void ssh_kbdint_clean(ssh_kbdint kbd);
void kbdint_free(ssh_kbdint kbd); void ssh_kbdint_free(ssh_kbdint kbd);
#ifdef WITH_SSH1 #ifdef WITH_SSH1

Просмотреть файл

@ -1372,84 +1372,83 @@ int ssh_userauth_agent_pubkey(ssh_session session,
} }
#endif /* _WIN32 */ #endif /* _WIN32 */
ssh_kbdint kbdint_new(void) { ssh_kbdint ssh_kbdint_new(void) {
ssh_kbdint kbd; ssh_kbdint kbd;
kbd = malloc(sizeof (struct ssh_kbdint_struct)); kbd = malloc(sizeof(struct ssh_kbdint_struct));
if (kbd == NULL) { if (kbd == NULL) {
return NULL; return NULL;
} }
ZERO_STRUCTP(kbd); ZERO_STRUCTP(kbd);
return kbd; return kbd;
} }
void kbdint_free(ssh_kbdint kbd) { void ssh_kbdint_free(ssh_kbdint kbd) {
int i, n; int i, n;
if (kbd == NULL) { if (kbd == NULL) {
return; return;
}
SAFE_FREE(kbd->name);
SAFE_FREE(kbd->instruction);
SAFE_FREE(kbd->echo);
n = kbd->nprompts;
if (kbd->prompts) {
for (i = 0; i < n; i++) {
BURN_STRING(kbd->prompts[i]);
SAFE_FREE(kbd->prompts[i]);
} }
SAFE_FREE(kbd->prompts);
}
n = kbd->nanswers; SAFE_FREE(kbd->name);
if (kbd->answers) { SAFE_FREE(kbd->instruction);
for (i = 0; i < n; i++) { SAFE_FREE(kbd->echo);
BURN_STRING(kbd->answers[i]);
SAFE_FREE(kbd->answers[i]); n = kbd->nprompts;
if (kbd->prompts) {
for (i = 0; i < n; i++) {
BURN_STRING(kbd->prompts[i]);
SAFE_FREE(kbd->prompts[i]);
}
SAFE_FREE(kbd->prompts);
} }
SAFE_FREE(kbd->answers);
}
SAFE_FREE(kbd); n = kbd->nanswers;
if (kbd->answers) {
for (i = 0; i < n; i++) {
BURN_STRING(kbd->answers[i]);
SAFE_FREE(kbd->answers[i]);
}
SAFE_FREE(kbd->answers);
}
SAFE_FREE(kbd);
} }
void kbdint_clean(ssh_kbdint kbd) { void ssh_kbdint_clean(ssh_kbdint kbd) {
int i, n; int i, n;
if (kbd == NULL) { if (kbd == NULL) {
return; return;
}
SAFE_FREE(kbd->name);
SAFE_FREE(kbd->instruction);
SAFE_FREE(kbd->echo);
n = kbd->nprompts;
if (kbd->prompts) {
for (i = 0; i < n; i++) {
BURN_STRING(kbd->prompts[i]);
SAFE_FREE(kbd->prompts[i]);
} }
SAFE_FREE(kbd->prompts);
}
n = kbd->nanswers; SAFE_FREE(kbd->name);
SAFE_FREE(kbd->instruction);
SAFE_FREE(kbd->echo);
if (kbd->answers) { n = kbd->nprompts;
for (i = 0; i < n; i++) { if (kbd->prompts) {
BURN_STRING(kbd->answers[i]); for (i = 0; i < n; i++) {
SAFE_FREE(kbd->answers[i]); BURN_STRING(kbd->prompts[i]);
SAFE_FREE(kbd->prompts[i]);
}
SAFE_FREE(kbd->prompts);
} }
SAFE_FREE(kbd->answers);
}
kbd->nprompts = 0; n = kbd->nanswers;
kbd->nanswers = 0;
if (kbd->answers) {
for (i = 0; i < n; i++) {
BURN_STRING(kbd->answers[i]);
SAFE_FREE(kbd->answers[i]);
}
SAFE_FREE(kbd->answers);
}
kbd->nprompts = 0;
kbd->nanswers = 0;
} }
/* this function sends the first packet as explained in section 3.1 /* this function sends the first packet as explained in section 3.1
@ -1551,7 +1550,7 @@ SSH_PACKET_CALLBACK(ssh_packet_userauth_info_request) {
ssh_string_free(tmp); ssh_string_free(tmp);
if (session->kbdint == NULL) { if (session->kbdint == NULL) {
session->kbdint = kbdint_new(); session->kbdint = ssh_kbdint_new();
if (session->kbdint == NULL) { if (session->kbdint == NULL) {
ssh_set_error_oom(session); ssh_set_error_oom(session);
ssh_string_free(name); ssh_string_free(name);
@ -1561,14 +1560,14 @@ SSH_PACKET_CALLBACK(ssh_packet_userauth_info_request) {
return SSH_PACKET_USED; return SSH_PACKET_USED;
} }
} else { } else {
kbdint_clean(session->kbdint); ssh_kbdint_clean(session->kbdint);
} }
session->kbdint->name = ssh_string_to_char(name); session->kbdint->name = ssh_string_to_char(name);
ssh_string_free(name); ssh_string_free(name);
if (session->kbdint->name == NULL) { if (session->kbdint->name == NULL) {
ssh_set_error_oom(session); ssh_set_error_oom(session);
kbdint_free(session->kbdint); ssh_kbdint_free(session->kbdint);
leave_function(); leave_function();
return SSH_PACKET_USED; return SSH_PACKET_USED;
} }
@ -1577,7 +1576,7 @@ SSH_PACKET_CALLBACK(ssh_packet_userauth_info_request) {
ssh_string_free(instruction); ssh_string_free(instruction);
if (session->kbdint->instruction == NULL) { if (session->kbdint->instruction == NULL) {
ssh_set_error_oom(session); ssh_set_error_oom(session);
kbdint_free(session->kbdint); ssh_kbdint_free(session->kbdint);
session->kbdint = NULL; session->kbdint = NULL;
leave_function(); leave_function();
return SSH_PACKET_USED; return SSH_PACKET_USED;
@ -1589,7 +1588,7 @@ SSH_PACKET_CALLBACK(ssh_packet_userauth_info_request) {
ssh_set_error(session, SSH_FATAL, ssh_set_error(session, SSH_FATAL,
"Too much prompt asked from server: %u (0x%.4x)", "Too much prompt asked from server: %u (0x%.4x)",
nprompts, nprompts); nprompts, nprompts);
kbdint_free(session->kbdint); ssh_kbdint_free(session->kbdint);
session->kbdint = NULL; session->kbdint = NULL;
leave_function(); leave_function();
return SSH_PACKET_USED; return SSH_PACKET_USED;
@ -1601,7 +1600,7 @@ SSH_PACKET_CALLBACK(ssh_packet_userauth_info_request) {
if (session->kbdint->prompts == NULL) { if (session->kbdint->prompts == NULL) {
session->kbdint->nprompts = 0; session->kbdint->nprompts = 0;
ssh_set_error_oom(session); ssh_set_error_oom(session);
kbdint_free(session->kbdint); ssh_kbdint_free(session->kbdint);
session->kbdint = NULL; session->kbdint = NULL;
leave_function(); leave_function();
return SSH_PACKET_USED; return SSH_PACKET_USED;
@ -1612,7 +1611,7 @@ SSH_PACKET_CALLBACK(ssh_packet_userauth_info_request) {
if (session->kbdint->echo == NULL) { if (session->kbdint->echo == NULL) {
session->kbdint->nprompts = 0; session->kbdint->nprompts = 0;
ssh_set_error_oom(session); ssh_set_error_oom(session);
kbdint_free(session->kbdint); ssh_kbdint_free(session->kbdint);
session->kbdint = NULL; session->kbdint = NULL;
leave_function(); leave_function();
return SSH_PACKET_USED; return SSH_PACKET_USED;
@ -1624,7 +1623,7 @@ SSH_PACKET_CALLBACK(ssh_packet_userauth_info_request) {
buffer_get_u8(packet, &session->kbdint->echo[i]); buffer_get_u8(packet, &session->kbdint->echo[i]);
if (tmp == NULL) { if (tmp == NULL) {
ssh_set_error(session, SSH_FATAL, "Short INFO_REQUEST packet"); ssh_set_error(session, SSH_FATAL, "Short INFO_REQUEST packet");
kbdint_free(session->kbdint); ssh_kbdint_free(session->kbdint);
session->kbdint = NULL; session->kbdint = NULL;
leave_function(); leave_function();
return SSH_PACKET_USED; return SSH_PACKET_USED;
@ -1634,7 +1633,7 @@ SSH_PACKET_CALLBACK(ssh_packet_userauth_info_request) {
if (session->kbdint->prompts[i] == NULL) { if (session->kbdint->prompts[i] == NULL) {
ssh_set_error_oom(session); ssh_set_error_oom(session);
session->kbdint->nprompts = i; session->kbdint->nprompts = i;
kbdint_free(session->kbdint); ssh_kbdint_free(session->kbdint);
session->kbdint = NULL; session->kbdint = NULL;
leave_function(); leave_function();
return SSH_PACKET_USED; return SSH_PACKET_USED;
@ -1692,7 +1691,7 @@ static int kbdauth_send(ssh_session session) {
ssh_string_free(answer); ssh_string_free(answer);
} }
session->auth_state=SSH_AUTH_STATE_KBDINT_SENT; session->auth_state=SSH_AUTH_STATE_KBDINT_SENT;
kbdint_free(session->kbdint); ssh_kbdint_free(session->kbdint);
session->kbdint = NULL; session->kbdint = NULL;
if (packet_send(session) == SSH_ERROR) { if (packet_send(session) == SSH_ERROR) {
leave_function(); leave_function();

Просмотреть файл

@ -706,7 +706,7 @@ SSH_PACKET_CALLBACK(ssh_packet_userauth_info_response){
ssh_log(session, SSH_LOG_PROTOCOL, "Warning: Got a keyboard-interactive " ssh_log(session, SSH_LOG_PROTOCOL, "Warning: Got a keyboard-interactive "
"response but it seems we didn't send the request."); "response but it seems we didn't send the request.");
session->kbdint = kbdint_new(); session->kbdint = ssh_kbdint_new();
if (session->kbdint == NULL) { if (session->kbdint == NULL) {
ssh_set_error_oom(session); ssh_set_error_oom(session);
@ -721,7 +721,7 @@ SSH_PACKET_CALLBACK(ssh_packet_userauth_info_response){
ssh_set_error(session, SSH_FATAL, ssh_set_error(session, SSH_FATAL,
"Too much answers received from client: %u (0x%.4x)", "Too much answers received from client: %u (0x%.4x)",
nanswers, nanswers); nanswers, nanswers);
kbdint_free(session->kbdint); ssh_kbdint_free(session->kbdint);
session->kbdint = NULL; session->kbdint = NULL;
leave_function(); leave_function();
return SSH_PACKET_USED; return SSH_PACKET_USED;
@ -737,7 +737,7 @@ SSH_PACKET_CALLBACK(ssh_packet_userauth_info_response){
if (session->kbdint->answers == NULL) { if (session->kbdint->answers == NULL) {
session->kbdint->nanswers = 0; session->kbdint->nanswers = 0;
ssh_set_error_oom(session); ssh_set_error_oom(session);
kbdint_free(session->kbdint); ssh_kbdint_free(session->kbdint);
session->kbdint = NULL; session->kbdint = NULL;
leave_function(); leave_function();
return SSH_PACKET_USED; return SSH_PACKET_USED;
@ -749,7 +749,7 @@ SSH_PACKET_CALLBACK(ssh_packet_userauth_info_response){
if (tmp == NULL) { if (tmp == NULL) {
ssh_set_error(session, SSH_FATAL, "Short INFO_RESPONSE packet"); ssh_set_error(session, SSH_FATAL, "Short INFO_RESPONSE packet");
session->kbdint->nanswers = i; session->kbdint->nanswers = i;
kbdint_free(session->kbdint); ssh_kbdint_free(session->kbdint);
session->kbdint = NULL; session->kbdint = NULL;
leave_function(); leave_function();
return SSH_PACKET_USED; return SSH_PACKET_USED;
@ -759,7 +759,7 @@ SSH_PACKET_CALLBACK(ssh_packet_userauth_info_response){
if (session->kbdint->answers[i] == NULL) { if (session->kbdint->answers[i] == NULL) {
ssh_set_error_oom(session); ssh_set_error_oom(session);
session->kbdint->nanswers = i; session->kbdint->nanswers = i;
kbdint_free(session->kbdint); ssh_kbdint_free(session->kbdint);
session->kbdint = NULL; session->kbdint = NULL;
leave_function(); leave_function();
return SSH_PACKET_USED; return SSH_PACKET_USED;

Просмотреть файл

@ -845,27 +845,27 @@ int ssh_message_auth_interactive_request(ssh_message msg, const char *name,
"keyboard-interactive response but it " "keyboard-interactive response but it "
"seems we didn't send the request."); "seems we didn't send the request.");
msg->session->kbdint = kbdint_new(); msg->session->kbdint = ssh_kbdint_new();
if (msg->session->kbdint == NULL) { if (msg->session->kbdint == NULL) {
ssh_set_error_oom(msg->session); ssh_set_error_oom(msg->session);
return SSH_ERROR; return SSH_ERROR;
} }
} else { } else {
kbdint_clean(msg->session->kbdint); ssh_kbdint_clean(msg->session->kbdint);
} }
msg->session->kbdint->name = strdup(name); msg->session->kbdint->name = strdup(name);
if(msg->session->kbdint->name == NULL) { if(msg->session->kbdint->name == NULL) {
ssh_set_error_oom(msg->session); ssh_set_error_oom(msg->session);
kbdint_free(msg->session->kbdint); ssh_kbdint_free(msg->session->kbdint);
msg->session->kbdint = NULL; msg->session->kbdint = NULL;
return SSH_PACKET_USED; return SSH_PACKET_USED;
} }
msg->session->kbdint->instruction = strdup(instruction); msg->session->kbdint->instruction = strdup(instruction);
if(msg->session->kbdint->instruction == NULL) { if(msg->session->kbdint->instruction == NULL) {
ssh_set_error_oom(msg->session); ssh_set_error_oom(msg->session);
kbdint_free(msg->session->kbdint); ssh_kbdint_free(msg->session->kbdint);
msg->session->kbdint = NULL; msg->session->kbdint = NULL;
return SSH_PACKET_USED; return SSH_PACKET_USED;
} }
@ -876,14 +876,14 @@ int ssh_message_auth_interactive_request(ssh_message msg, const char *name,
if (msg->session->kbdint->prompts == NULL) { if (msg->session->kbdint->prompts == NULL) {
msg->session->kbdint->nprompts = 0; msg->session->kbdint->nprompts = 0;
ssh_set_error_oom(msg->session); ssh_set_error_oom(msg->session);
kbdint_free(msg->session->kbdint); ssh_kbdint_free(msg->session->kbdint);
msg->session->kbdint = NULL; msg->session->kbdint = NULL;
return SSH_ERROR; return SSH_ERROR;
} }
msg->session->kbdint->echo = malloc(num_prompts * sizeof(char)); msg->session->kbdint->echo = malloc(num_prompts * sizeof(char));
if (msg->session->kbdint->echo == NULL) { if (msg->session->kbdint->echo == NULL) {
ssh_set_error_oom(msg->session); ssh_set_error_oom(msg->session);
kbdint_free(msg->session->kbdint); ssh_kbdint_free(msg->session->kbdint);
msg->session->kbdint = NULL; msg->session->kbdint = NULL;
return SSH_ERROR; return SSH_ERROR;
} }
@ -893,7 +893,7 @@ int ssh_message_auth_interactive_request(ssh_message msg, const char *name,
if (msg->session->kbdint->prompts[i] == NULL) { if (msg->session->kbdint->prompts[i] == NULL) {
ssh_set_error_oom(msg->session); ssh_set_error_oom(msg->session);
msg->session->kbdint->nprompts = i; msg->session->kbdint->nprompts = i;
kbdint_free(msg->session->kbdint); ssh_kbdint_free(msg->session->kbdint);
msg->session->kbdint = NULL; msg->session->kbdint = NULL;
return SSH_PACKET_USED; return SSH_PACKET_USED;
} }