aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEd Maste <emaste@FreeBSD.org>2023-02-08 13:16:53 +0000
committerEd Maste <emaste@FreeBSD.org>2023-06-05 19:05:32 +0000
commit77d002b9cbf49168ba6261b5dc84b8e694c24b20 (patch)
tree16f997fdf336c9686c12a23e0583c3fd7277b51b
parent2b4fb1350ceea0f2a0f04b1b8f5bfd3c32329ae4 (diff)
downloadsrc-77d002b9cbf49168ba6261b5dc84b8e694c24b20.tar.gz
src-77d002b9cbf49168ba6261b5dc84b8e694c24b20.zip
ssh: fix leak and apply style(9) to hostname canonicalization
Fixes: bf2e2524a2ce ("ssh: canonicize the host name before...") Fixes: 3e74849a1ee2 ("ssh: canonicize the host name before...") Reviewed by: rew Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D38441 (cherry picked from commit 19aba210e1a1b5999bff10cccab5a277060c4d46) (cherry picked from commit 792d3f16868e5f79ab8b11803340251371515f0a)
-rw-r--r--crypto/openssh/ssh.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/crypto/openssh/ssh.c b/crypto/openssh/ssh.c
index c5a4326bd1c6..b058e8349c63 100644
--- a/crypto/openssh/ssh.c
+++ b/crypto/openssh/ssh.c
@@ -1397,18 +1397,21 @@ main(int ac, char **av)
cinfo->locuser = xstrdup(pw->pw_name);
/* Find canonic host name. */
- if (strchr(host, '.') == 0) {
+ if (strchr(host, '.') == NULL) {
struct addrinfo hints;
struct addrinfo *ai = NULL;
int errgai;
+
memset(&hints, 0, sizeof(hints));
hints.ai_family = options.address_family;
hints.ai_flags = AI_CANONNAME;
hints.ai_socktype = SOCK_STREAM;
errgai = getaddrinfo(host, NULL, &hints, &ai);
if (errgai == 0) {
- if (ai->ai_canonname != NULL)
+ if (ai->ai_canonname != NULL) {
+ free(host);
host = xstrdup(ai->ai_canonname);
+ }
freeaddrinfo(ai);
}
}