diff options
author | Theo de Raadt <deraadt@cvs.openbsd.org> | 1999-07-03 18:24:14 +0000 |
---|---|---|
committer | Theo de Raadt <deraadt@cvs.openbsd.org> | 1999-07-03 18:24:14 +0000 |
commit | 009d65a7cb3b2c78febc1fff61f40149c48d061d (patch) | |
tree | 8b710a4a6eca79c32fa75ff4d6adc6347bdff241 | |
parent | 534718e4140056ce93b2c36e64582448013c95b9 (diff) |
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) { |