bin/112126: [patch] netstat(1) segfaults on unusual ICMP statistics

Christoph Weber-Fahr wefa2 at gmx.de
Fri Apr 27 01:50:09 UTC 2007


The following reply was made to PR bin/112126; it has been noted by GNATS.

From: Christoph Weber-Fahr <wefa2 at gmx.de>
To: Maxim Konovalov <maxim at macomnet.ru>
Cc: bug-followup at FreeBSD.org
Subject: Re: bin/112126: [patch] netstat(1) segfaults on unusual ICMP statistics
Date: Fri, 27 Apr 2007 03:50:05 +0200

 Hello,
 
 Maxim Konovalov wrote:
 > On Thu, 26 Apr 2007, 00:00+0200, Chris wrote:
 >>> +static  const char *icmpnames[ICMP_MAXTYPE + 1] = {
 >> with this he actually avoids the crash in case of an
 >> out of sync kernel interface (assumed the array gets
 >> automatically zeroed at allocation time - does it ? )
 >>
 >> But this still produces a very funny netstat output
 >> with just numbers and no labels. I continue to prefer
 >> my suggestion.
 > 
 > I see:
 > 
 >         Output histogram:
 >                 echo reply: 41
 >                 destination unreachable: 495
 > [...]
 >         Input histogram:
 >                 echo reply: 12
 >                 destination unreachable: 1
 >                 echo: 41
 >                 #20: 7
 >                 icmp traceroute: 16
 >                 mobile registration req: 25
 >                 #37: 31
 
 Actually, you don't see that. You'd see:
 
           Input histogram:
                   echo reply: 12
                   destination unreachable: 1
                   echo: 41
                   #20: 7
                   icmp traceroute: 16
                   mobile registration req: 25
                   #37: 31
 		 8
                   15
 
 Note the last two untagged values. They
 are created when the kernel, which in
 the meantime has a ICM_MAXTYPE at, say, 49,
 has logged 8 packets of type 44, and 15 of type 47.
 
 > What is yours?
 
 My variant would produce:
 
           Input histogram:
                   echo reply: 12
                   destination unreachable: 1
                   echo: 41
                   #20: 7
                   icmp traceroute: 16
                   mobile registration req: 25
                   #37: 31
 		 unknown ICMP #44: 8
                   unknown ICMP #47: 15
 
 This is preferable because it both gives more
 information (you still get the type number) and
 doesn't break the tag: value format that many
 monitoring setups use for simple parsing.
 
 Regards
 
 Christoph Weber-Fahr
 


More information about the freebsd-bugs mailing list