jogle@cbnewsi.att.com (jogle) (08/16/90)
**********************************************************************
I'm posting this for my brother. Please reply to the address
below, although, if you do reply to me I will forward it to him.
**********************************************************************
We have a Sun 3/60 running Mach 2.5 here at GE's Advanced Technology Labs.
While executing the command:
arp -s <hostname> <ether_address>
The kernel bombed, resulting in a bus error trap in the arpioctl
subroutine. The command was supposed to put the
<internet_address>-<ethernet_address> pair for the host in the arptable in
the kernel. Upon further investigation, the following bug was discovered
in the kernel sources (/usr/build/src/kernel/netinet/if_ether.c):
arpioctl(cmd,data)
int cmd;
caddr_t data;
{
register struct arptab *at;
register struct sockaddr_in *sin;
.
.
.
if (at == NULL) {
at = arptnew(at->at_if,&sin->sin_addr);
.
.
.
}
.
.
.
}
Essentially, you are referencing at->at_if through a NULL pointer.
Has anybody encountered this before? Can any of the Mach Gods in CMU
reccommend a "proper" fix for it? I have patched up the code by passing
in 0 instead of at->at_if (essentially at_if is not being used by ARP at
this time), but I might not be thinking along the same wavelength as the
original implememtors.
Tom Geigel
tgeigel@atl.dnet.ge.com
(609)866-6624