Subject: bin/2872: routed doesn't compile/RIPv2 auth is broken
To: None <gnats-bugs@gnats.netbsd.org>
From: David Carrel <carrel@ipsec.com>
List: netbsd-bugs
Date: 10/20/1996 13:42:59
>Number: 2872
>Category: bin
>Synopsis: Routed.h has incorrect usage of netauth struct
>Confidential: no
>Severity: serious
>Priority: high
>Responsible: bin-bug-people (Utility Bug People)
>State: open
>Class: sw-bug
>Submitter-Id: net
>Arrival-Date: Sun Oct 20 13:50:01 1996
>Last-Modified:
>Originator: David Carrel
>Organization:
weenies anonymmous
>Release: NetBSD-current supped 19 Oct 1996
>Environment:
System: NetBSD spy 1.2 NetBSD 1.2 (SPY) #5: Sun Sep 15 20:53:37 PDT 1996 carrel@spy:/.a/haydon/home/NetBSD/src/sys/arch/i386/compile/SPY i386
>Description:
On my hp300 the compiler discovered a bogus test on line 415 of
sbin/routed/input.c. The test of n->n_family and (struct netauth)n->a_type
are referencing the same 16 bits. (So the if statement will always
evaluate true!!) The netauth structure does indeed overlap a netinfo
struct in the RIPv2 protocol, but only AFTER the netinfo->n_type field.
The netauth struct needs to be offset by 16 bits.
Reference for this can be found in RFC1723, section 3.1, page 4.
ALSO!!! There is a copy of routed.h in sbin/routed/ and also in
include/protocols/. There should only be one!!! The one in sbin/routed/
should be removed.
>How-To-Repeat:
There isn't much to repeat. The compile fails on the hp300, but
interestingly enough, the compiler doesn't notice the problem on my i386.
>Fix:
The following patch fixes the problems. I don't know where NetBSD
get's routed from, but this should be passed back to that source. This
patch should be applied to include/protocols/routed.h and
sbin/routed/routed.h should be deleted from the tree.
*** routed.h.orig Sun Oct 20 13:17:11 1996
--- routed.h Sun Oct 20 13:18:33 1996
***************
*** 85,90 ****
--- 85,91 ----
/* RIPv2 authentication */
struct netauth {
+ u_int16_t a_family; /* overlays netinfo.n_family */
u_int16_t a_type;
#define RIP_AUTH_PW htons(2) /* password type */
union {
>Audit-Trail:
>Unformatted: