Date: Sun, 9 Jul 1995 02:40:02 -0700 From: greg@greg.rim.or.jp To: freebsd-bugs Subject: misc/605: Message-ID: <199507090940.CAA25136@freefall.cdrom.com> In-Reply-To: Your message of Sun, 9 Jul 1995 16:26:58 %2B0900 <199507090726.QAA07015@apollon.greg.rim.or.jp>
next in thread | previous in thread | raw e-mail | index | archive | help
>Number: 605
>Category: misc
>Synopsis:
>Confidential: yes
>Severity: non-critical
>Priority: high
>Responsible: freebsd-bugs (FreeBSD bugs mailing list)
>State: open
>Class: sw-bug
>Submitter-Id: current-users
>Arrival-Date: Sun Jul 9 02:40:02 1995
>Originator: Kensaku Masuda
>Organization:
// 増田 健作 greg@greg.rim.or.jp ////
// greg@apt.fxis.fujixerox.co.jp //
// 大バグは歩いて来ない、だから潰しに行くんだね! //
//// 一日一個、三日で三個、三個潰して二個バグる //
>Release: FreeBSD 2.0.5-RELEASE i386
>Environment:
At using NIS without DNS, /etc/hosts and/or /etc/networks
has no entries without myself. But NIS map have them.
ex)
/etc/hosts
127.0.0.1 localhost
WWW.XXX.YYY.ZZ0 myname.mydomain myname
/etc/networks
loopback 127
localnet WWW.XXX.YYY
hosts.byaddr
127.0.0.1 localhost
WWW.XXX.YYY.ZZ0 myname.mydomain myname
WWW.XXX,YYY.ZZ1 friend.mydomain friend
networks.byaddr
mydomain WWW.XXX.YYY
loopback 127
multicast 224
>Description:
Building a query problem with NIS in standard C library.
>How-To-Repeat:
Use NIS without DNS. and query not in the /etc/hosts.
for example "netstat -r" / "ping unknwon.host.in.hosts" etc etc.......
>Fix:
diff -rc net.original/gethostbynis.c net/gethostbynis.c
*** net.original/gethostbynis.c Sun Jul 9 15:41:15 1995
--- net/gethostbynis.c Sun Jul 9 14:59:47 1995
***************
*** 111,115 ****
_gethostbynisaddr(name)
char *name;
{
! return _gethostbynis(name, "hosts.byaddr");
}
--- 111,120 ----
_gethostbynisaddr(name)
char *name;
{
! static char buffer[64];
! unsigned char *tmp;
!
! tmp = (unsigned char *)name;
! sprintf(buffer, "%u.%u.%u.%u", tmp[0], tmp[1], tmp[2], tmp[3]);
! return _gethostbynis(buffer, "hosts.byaddr");
}
Only in net: gethostbynis.c.original
diff -rc net.original/getnetbynis.c net/getnetbynis.c
*** net.original/getnetbynis.c Sun Jul 9 15:41:15 1995
--- net/getnetbynis.c Sun Jul 9 15:32:26 1995
***************
*** 118,133 ****
struct in_addr in;
char *str, *cp;
struct netent *np;
if (type != AF_INET)
return (NULL);
! in.s_addr = addr;
str = inet_ntoa(in);
! cp = str + strlen(str) - 2;
! while(!strcmp(cp, ".0")) {
! *cp = '\0';
! cp = str + strlen(str) - 2;
}
return _getnetbynis(str, "networks.byaddr");
--- 118,148 ----
struct in_addr in;
char *str, *cp;
struct netent *np;
+ unsigned char name[4];
+ unsigned char tmp[4];
if (type != AF_INET)
return (NULL);
! /*
! * It's a quick hack, please rewrite into a beautifully.
! * By Kensaku Masuda <greg@greg.rim.or.jp> 1995/07/09
! */
! memcpy(tmp, &addr, sizeof(tmp));
! name[3] = tmp[2];
! name[2] = tmp[1];
! name[1] = tmp[0];
! name[0] = tmp[3];
! in.s_addr = name[0] << 24 | name[1] << 16 | name[2] << 8 | name[3];
str = inet_ntoa(in);
! for(cp = str + strlen(str) ; str != cp ; cp--) {
! if(*cp == '.') {
! if(strcmp(cp, ".0") == 0) {
! *cp = 0;
! } else {
! break;
! }
! }
}
return _getnetbynis(str, "networks.byaddr");
>Audit-Trail:
>Unformatted:
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199507090940.CAA25136>
