Date: Sat, 23 Feb 2002 18:10:30 +0100 From: Anton Berezin <tobez@FreeBSD.org> To: audit@FreeBSD.org Subject: [CFR] a small fix of gethostbyname2() Message-ID: <20020223171030.GA29155@heechee.tobez.org>
next in thread | raw e-mail | index | archive | help
The bug:
$ HOSTALIASES=~/.hostaliases; export HOSTALIASES
$ cd ~
$ cat >.hostaliases
somehost somehost.fqdn.bla
^D
$ ssh somehost # <-- works
$ ping somehost # <-- does no work
The problem:
Programs that use gethostbyname2() and do not initialize resolver
themselves, will lead to the resolver operating uninitialized. Even if
(I have not looked) the resolver is initialized at some point later,
some parts, like HOSTALIASES support, do not work as they should.
The fix:
Index: gethostnamadr.c
===================================================================
RCS file: /home/ncvs/src/lib/libc/net/gethostnamadr.c,v
retrieving revision 1.19
diff -u -r1.19 gethostnamadr.c
--- gethostnamadr.c 13 Aug 2001 14:06:25 -0000 1.19
+++ gethostnamadr.c 23 Feb 2002 16:56:46 -0000
@@ -84,6 +84,11 @@
NS_NIS_CB(_nis_gethostbyname, NULL) /* force -DHESIOD */
{ 0 }
};
+
+ if ((_res.options & RES_INIT) == 0 && res_init() == -1) {
+ h_errno = NETDB_INTERNAL;
+ return (NULL);
+ }
rval = nsdispatch((void *)&hp, dtab, NSDB_HOSTS, "gethostbyname",
default_src, name, type);
Similarly, for -stable:
Index: gethostnamadr.c
===================================================================
RCS file: /home/ncvs/src/lib/libc/net/gethostnamadr.c,v
retrieving revision 1.15.2.2
diff -u -r1.15.2.2 gethostnamadr.c
--- gethostnamadr.c 5 Mar 2001 10:40:42 -0000 1.15.2.2
+++ gethostnamadr.c 23 Feb 2002 16:59:11 -0000
@@ -140,6 +140,11 @@
struct hostent *hp = 0;
int nserv = 0;
+ if ((_res.options & RES_INIT) == 0 && res_init() == -1) {
+ h_errno = NETDB_INTERNAL;
+ return (NULL);
+ }
+
if (!service_done)
init_services();
Would anybody mind if I commit it?
Cheers,
=Anton.
--
| Anton Berezin | FreeBSD: The power to serve |
| catpipe Systems ApS _ _ |_ | http://www.FreeBSD.org |
| tobez@catpipe.net (_(_|| | tobez@FreeBSD.org |
| +45 7021 0050 | Private: tobez@tobez.org |
To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-audit" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20020223171030.GA29155>
