8000 Revert #6503 by ethomson · Pull Request #6511 · libgit2/libgit2 · GitHub
[go: up one dir, main page]

Skip to content
8000

Revert #6503 #6511

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 2 commits into from
Feb 27, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 3 additions & 11 deletions src/libgit2/transports/ssh.c
Original file line number Diff line number Diff line change
Expand Up @@ -651,8 +651,6 @@ static int check_against_known_hosts(
return ret;
}

#define SSH_DEFAULT_PORT 22

/*
* Perform the check for the session's certificate against known hosts if
* possible and then ask the user if they have a callback.
Expand Down Expand Up @@ -750,29 +748,23 @@ static int check_certificate(
if (check_cb != NULL) {
git_cert_hostkey *cert_ptr = &cert;
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);
error = check_cb((git_cert *) cert_ptr, cert_valid, host_ptr, check_cb_payload);
error = check_cb((git_cert *) cert_ptr, cert_valid, host, check_cb_payload);
if (error == GIT_PASSTHROUGH) {
error = git_error_state_restore(&previous_error);
} else if (error < 0 && !git_error_last()) {
git_error_set(GIT_ERROR_NET, "unknown remote host key");
}

git_error_state_free(&previous_error);
git_str_dispose(&host_and_port);
}

return error;
}

#define SSH_DEFAULT_PORT "22"

static int _git_ssh_setup_conn(
ssh_subtransport *t,
const char *url,
Expand Down
12 changes: 1 addition & 11 deletions tests/libgit2/online/clone.c
Original file line number Diff line number Diff line change
Expand Up @@ -787,19 +787,10 @@ static int ssh_certificate_check(git_cert *cert, int valid, const char *host, vo
{
git_cert_hostkey *key;
git_oid expected = GIT_OID_SHA1_ZERO, actual = GIT_OID_SHA1_ZERO;
git_str expected_host = GIT_STR_INIT;
git_net_url parsed_url = GIT_NET_URL_INIT;

GIT_UNUSED(valid);
GIT_UNUSED(payload);

cl_git_pass(git_net_url_parse_standard_or_scp(&parsed_url, _remote_url));
cl_git_pass(git_str_printf(&expected_host, "%s%s%s",
parsed_url.host,
git_net_url_is_default_port(&parsed_url) ? "" : ":",
git_net_url_is_default_port(&parsed_url) ? "" : parsed_url.port));
cl_assert_equal_s(expected_host.ptr, host);

cl_assert(_remote_ssh_fingerprint);

cl_git_pass(git_oid__fromstrp(&expected, _remote_ssh_fingerprint, GIT_OID_SHA1));
5EE1 Expand All @@ -821,8 +812,7 @@ static int ssh_certificate_check(git_cert *cert, int valid, const char *host, vo

cl_assert(!memcmp(&expected, &actual, 20));

git_net_url_dispose(&parsed_url);
git_str_dispose(&expected_host);
cl_assert_equal_s("localhost", host);

return GIT_EUSER;
}
Expand Down
0