[Nagiosplug-devel] check_ping problem

Robert Nelson rnelson at windchannel.com
Fri Jul 23 07:18:05 CEST 2004


Thanks Karl! I appreciate the quick response. I'll fix and recompile the
plugins and see if it fixes things. Changing the name of our POP was a
bit dramatic :)

In the future, is this the best way for a psuedo programmer like myself
to pass on bugs and help out, or is there a better way that's less work
for you guys? Sorry, but I don't know jack about patching and diff'ing
source files!

Rob Nelson
Network Engineer
Windchannel Communications
919-538-6326 

> -----Original Message-----
> From: Karl DeBisschop [mailto:karl at debisschop.net] 
> Sent: Friday, July 23, 2004 7:57 AM
> To: Robert Nelson
> Cc: Walt Howard; nagiosplug-devel at lists.sourceforge.net
> Subject: RE: [Nagiosplug-devel] check_ping problem
> 
> 
> Robert Nelson said:
> >> A reasonable question is whether this is a problem in the
> >> nagios plugin
> >> or in your local resolver library.  If you just type a
> >>   ping tap-5300h.2wachovia.nc.windchannel.com
> >> to a shell prompt, do you get normal output or a resolver 
> error?  If
> >> the bare ping command works, you may have to tweak the 
> check_ping to
> >> use it instead of some ping program that comes with the
> >> nagios plugins.
> >> (My nagios box is down at the moment so I can't check exactly where
> >> nagios gets its ping; I do remember that it configured it 
> wrong and I
> >> had to fix that).
> >
> > Pings and nslookups themselves resolve fine without 
> difficulty, which is
> > why I was so surprised :) I'm using nagios-plugins-1.3.1 
> and here's what
> > I found - goes beyond check_ping, in fact:
> >
> >
> > The offending code in check_ping.c is (starting on line 200):
> >
> > =====
> >                 case 'H':       /* hostname */
> >                         if (is_host (optarg) == FALSE)
> >                                 usage2 ("Invalid host name/address",
> > optarg);
> >                         server_address = optarg;
> >                         break;
> > =====
> >
> > The is_host seems to be defined in utils.c on line 167:
> >
> > =====
> > int
> > is_host (char *address)
> > {
> >         if (is_dotted_quad (address) || is_hostname (address))
> >                 return (TRUE);
> >         return (FALSE);
> > }
> > =====
> >
> > That then leads to utils.c on line 215:
> >
> > =====
> > int
> > is_hostname (char *s1)
> > {
> >         if (!s1 || strlen (s1) > 255) {
> >                 return FALSE;
> >         }
> >         /* if s1 contains anything but ALPHA, NUM, dash, or period*/
> >         if (strcspn (s1,
> > 
> "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUWVXYZ0123456789-.") !=
> > 0) {
> >                 return FALSE;
> >         }
> >         /* or if s1 begins with dash or period */
> >         if (strspn (s1, "-.") == 1) {
> >                 return FALSE;
> >         }
> >   /* '..' and '.-' are not legal either */
> >         while ((s1 = index (s1, '.'))) {
> >                 s1++;
> >                 if (strspn (s1, "0123456789-.") == 1) {
> >                         return FALSE;
> >                 }
> >         }
> >         return TRUE;
> > }
> > =====
> >
> > I know enough about code to be dangerous but not offer 
> anything helpful.
> > But I'm going to try anyway ;) If I remove the last if test, it will
> > probably start accepting the domain 2wachovia...However, 
> I'm not sure
> > why a check for '..' and '.-' use a regex that will match 
> '.0' through
> > '.9' as well. What else would this affect, if I "fixed" that if
> > statement and recompiled? And how long can I reasonably 
> expect for any
> > such fix to happen and be merged with the source?
> 
> You can go ahead and make the change - this regex correspnds 
> to the old
> definition of an arpa hostname - which is stricter than the present
> defintion.
> 
> Fixing the code in CVS is on the TODO list.
> 
> --
> Karl
> 
> 
> 




More information about the Devel mailing list