Date: Mon, 8 Dec 1997 13:22:30 -0500 (EST) From: "Gregory D. Moncreaff" <moncrg@bt340707.res.ray.com> To: FreeBSD-gnats-submit@FreeBSD.ORG Subject: bin/5256: netstat sockaddr bogon Message-ID: <199712081822.NAA13280@bt340707.res.ray.com> Resent-Message-ID: <199712090110.RAA07952@hub.freebsd.org>
next in thread | raw e-mail | index | archive | help
>Number: 5256 >Category: bin >Synopsis: netstat sockaddr bogon >Confidential: no >Severity: serious >Priority: medium >Responsible: freebsd-bugs >State: open >Class: sw-bug >Submitter-Id: current-users >Arrival-Date: Mon Dec 8 17:10:02 PST 1997 >Last-Modified: >Originator: Gregory D. Moncreaff >Organization: RES >Release: FreeBSD 2.2.5-RELEASE i386 >Environment: >Description: truncates info in sockaddr* between kgetsa and p_sockaddr by dereferencing pointer to smaller structure >How-To-Repeat: only visiable with larger sockaddrs (I'm working with resurrected netiso code) >Fix: diffs to netstat/route.c: 101c101,102 < typedef union { --- > > static union { 104,106c105 < } sa_u; < < static sa_u pt_u; --- > } pt_u; 509c508 < sa_u addr, mask; --- > struct sockaddr addr, mask; 517,524c516,523 < bzero(&addr, sizeof addr); < if ((sa = kgetsa(rt_key(rt)))) < bcopy(sa,&addr,sa->sa_len); < < bzero(&mask, sizeof mask); < if (rt_mask(rt) && (sa = kgetsa(rt_mask(rt)))) < bcopy(sa,&mask,sa->sa_len); < --- > if (!(sa = kgetsa(rt_key(rt)))) > bzero(&addr, sizeof addr); > else > addr = *sa; > if (!rt_mask(rt) || !(sa = kgetsa(rt_mask(rt)))) > bzero(&mask, sizeof mask); > else > mask = *sa; >Audit-Trail: >Unformatted:
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199712081822.NAA13280>