← Commit list

39d5cead0d

Viktor Szakats
Viktor Szakats
2026-06-08
SUCCESS Duration: 227s

Subject

libssh2: save non-standard port to `known_hosts`

Binary

No binary (build failed)

Architecture & Compiler Flags

Architecture: x86_64-linux-gnu Compiler: gcc (Ubuntu 11.4.0-1ubuntu1~22.04.3) 11.4.0

—

Build Log

(log yok)

Commit Diff GitHub →

lib/vssh/libssh2.c+34 -23
@@ -429,31 +429,42 @@ static CURLcode ssh_knownhost(struct Curl_easy *data,
case CURLKHSTAT_FINE_ADD_TO_FILE:
/* proceed */
if(keycheck != LIBSSH2_KNOWNHOST_CHECK_MATCH) {
- /* the found host+key did not match but has been told to be fine
- anyway so we add it in memory */
- int addrc = libssh2_knownhost_addc(sshc->kh,
- conn->origin->hostname, NULL,
- remotekey, keylen,
- NULL, 0,
- LIBSSH2_KNOWNHOST_TYPE_PLAIN |
- LIBSSH2_KNOWNHOST_KEYENC_RAW |
- keybit, NULL);
- if(addrc)
- infof(data, "WARNING: adding the known host %s failed",
- conn->origin->hostname);
- else if(rc == CURLKHSTAT_FINE_ADD_TO_FILE ||
- rc == CURLKHSTAT_FINE_REPLACE) {
- /* now we write the entire in-memory list of known hosts to the
- known_hosts file */
- int wrc =
- libssh2_knownhost_writefile(sshc->kh,
- data->set.str[STRING_SSH_KNOWNHOSTS],
- LIBSSH2_KNOWNHOST_FILE_OPENSSH);
- if(wrc) {
- infof(data, "WARNING: writing %s failed",
- data->set.str[STRING_SSH_KNOWNHOSTS]);
+ int addrc;
+ const char *hostbuf;
+ char *hostport = NULL;
+ if(conn->origin->port != PORT_SSH) {
+ hostbuf = hostport = curl_maprintf("[%s]:%u", conn->origin->hostname,
+ conn->origin->port);
+ if(!hostbuf)
+ infof(data, "WARNING: failed allocating buffer for [host]:port");
+ }
+ else
+ hostbuf = conn->origin->hostname;
+ if(hostbuf) {
+ /* the found host+key did not match but has been told to be fine
+ anyway so we add it in memory */
+ addrc = libssh2_knownhost_addc(sshc->kh, hostbuf, NULL,
+ remotekey, keylen, NULL, 0,
+ LIBSSH2_KNOWNHOST_TYPE_PLAIN |
+ LIBSSH2_KNOWNHOST_KEYENC_RAW |
+ keybit, NULL);
+ if(addrc)
+ infof(data, "WARNING: adding the known host %s failed", hostbuf);
+ else if(rc == CURLKHSTAT_FINE_ADD_TO_FILE ||
+ rc == CURLKHSTAT_FINE_REPLACE) {
+ /* now we write the entire in-memory list of known hosts to the
+ known_hosts file */
+ int wrc =
+ libssh2_knownhost_writefile(sshc->kh,
+ data->set.str[STRING_SSH_KNOWNHOSTS],
+ LIBSSH2_KNOWNHOST_FILE_OPENSSH);
+ if(wrc) {
+ infof(data, "WARNING: writing %s failed",
+ data->set.str[STRING_SSH_KNOWNHOSTS]);
+ }
}
}
+ curlx_free(hostport);
}
break;
}