diff options
author | 1999-07-03 18:24:13 +0000 | |
---|---|---|
committer | 1999-07-03 18:24:13 +0000 | |
commit | 0c21f367e69324c6564f7be6aab956769b9d5bdd (patch) | |
tree | 9accb4760c71318c5074f3aca04cfff891ab912e | |
parent | proto net_addrcmp() (diff) | |
download | wireguard-openbsd-0c21f367e69324c6564f7be6aab956769b9d5bdd.tar.xz wireguard-openbsd-0c21f367e69324c6564f7be6aab956769b9d5bdd.zip |
use getnameinfo()
-rw-r--r-- | libexec/fingerd/fingerd.c | 22 |
1 files changed, 9 insertions, 13 deletions
diff --git a/libexec/fingerd/fingerd.c b/libexec/fingerd/fingerd.c index 26ded731aca..776b43b952a 100644 --- a/libexec/fingerd/fingerd.c +++ b/libexec/fingerd/fingerd.c @@ -1,4 +1,4 @@ -/* $OpenBSD: fingerd.c,v 1.13 1999/02/24 17:00:01 aaron Exp $ */ +/* $OpenBSD: fingerd.c,v 1.14 1999/07/03 18:24:13 deraadt Exp $ */ /* * Copyright (c) 1983, 1993 @@ -43,7 +43,7 @@ static char copyright[] = #if 0 static char sccsid[] = "from: @(#)fingerd.c 8.1 (Berkeley) 6/4/93"; #else -static char rcsid[] = "$OpenBSD: fingerd.c,v 1.13 1999/02/24 17:00:01 aaron Exp $"; +static char rcsid[] = "$OpenBSD: fingerd.c,v 1.14 1999/07/03 18:24:13 deraadt Exp $"; #endif #endif /* not lint */ @@ -74,6 +74,7 @@ main(argc, argv) size_t linesiz; #define ENTRIES 50 char **ap, *av[ENTRIES + 1], **comp, *line, *prog, *lp, *hname; + char hostbuf[MAXHOSTNAMELEN]; prog = _PATH_FINGER; logging = secure = user_required = short_list = 0; @@ -112,20 +113,15 @@ main(argc, argv) } if (logging) { - struct hostent *hp; - struct sockaddr_in sin; + struct sockaddr_storage ss; int sval; - sval = sizeof(sin); - if (getpeername(0, (struct sockaddr *)&sin, &sval) < 0) + sval = sizeof(ss); + if (getpeername(0, (struct sockaddr *)&ss, &sval) < 0) err("getpeername: %s", strerror(errno)); - if ((hp = gethostbyaddr((char *)&sin.sin_addr.s_addr, - sizeof(sin.sin_addr.s_addr), AF_INET))) - hname = strdup(hp->h_name); - else - hname = strdup(inet_ntoa(sin.sin_addr)); - if (hname == NULL) - err("Out of memory"); + (void)getnameinfo((struct sockaddr *)&ss, ss.ss_len, + hostbuf, sizeof(hostbuf), NULL, 0, 0); + hname = hostbuf; } if ((lp = fgetln(stdin, &linesiz)) == NULL) { |