[comp.os.mach] Mach 2.5 bug using ARP

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