Commit f68b40c0 by Francois-Xavier Coudert Committed by Edward Thomson

Pass hostkey & port to host verify callback

Co-authored-by: Stefan Karpinski <stefan@karpinski.org>
parent c2bdef6f
...@@ -651,6 +651,8 @@ static int check_against_known_hosts( ...@@ -651,6 +651,8 @@ static int check_against_known_hosts(
return ret; return ret;
} }
#define SSH_DEFAULT_PORT 22
/* /*
* Perform the check for the session's certificate against known hosts if * Perform the check for the session's certificate against known hosts if
* possible and then ask the user if they have a callback. * possible and then ask the user if they have a callback.
...@@ -748,9 +750,16 @@ static int check_certificate( ...@@ -748,9 +750,16 @@ static int check_certificate(
if (check_cb != NULL) { if (check_cb != NULL) {
git_cert_hostkey *cert_ptr = &cert; git_cert_hostkey *cert_ptr = &cert;
git_error_state previous_error = {0}; git_error_state previous_error = {0};
const char *host_ptr = host;
git_str host_and_port = GIT_STR_INIT;
if (port != SSH_DEFAULT_PORT) {
git_str_printf(&host_and_port, "%s:%d", host, port);
host_ptr = host_and_port.ptr;
}
git_error_state_capture(&previous_error, error); git_error_state_capture(&previous_error, error);
error = check_cb((git_cert *) cert_ptr, cert_valid, host, check_cb_payload); error = check_cb((git_cert *) cert_ptr, cert_valid, host_ptr, check_cb_payload);
if (error == GIT_PASSTHROUGH) { if (error == GIT_PASSTHROUGH) {
error = git_error_state_restore(&previous_error); error = git_error_state_restore(&previous_error);
} else if (error < 0 && !git_error_last()) { } else if (error < 0 && !git_error_last()) {
...@@ -758,13 +767,12 @@ static int check_certificate( ...@@ -758,13 +767,12 @@ static int check_certificate(
} }
git_error_state_free(&previous_error); git_error_state_free(&previous_error);
git_str_dispose(&host_and_port);
} }
return error; return error;
} }
#define SSH_DEFAULT_PORT "22"
static int _git_ssh_setup_conn( static int _git_ssh_setup_conn(
ssh_subtransport *t, ssh_subtransport *t,
const char *url, const char *url,
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment