[Nagiosplug-devel] Segfault in check_ping (need help fixing)

Thomas Guyot-Sionnest dermoth at aei.ca
Tue Apr 24 06:28:00 CEST 2007


Yesterday I assisted sb in a Nagios upgrade and the newer version of
check_ping was segfaulting.

It happens in a strlen done internally by asprintf on line 128. My guess
is that something passed to asprintf is not initialized properly but I'm
not sure which one. The guilty line is:

#ifdef PING_PACKETS_FIRST
# ifdef PING_HAS_TIMEOUT
  asprintf (&cmd, rawcmd, timeout_interval, max_packets, addresses[i]);
# else

My two guesses are:

1) cmd == NULL. In some plugins I saw things such as
  output = strdup ("");
  [...]
  asprintf (&output, ...

Is this the RightThing(tm) to do? Could it be the cause?

2) mallos/realloc's
  char **addresses = NULL;
  [...]
  addresses = malloc (sizeof(char*) * max_addr);
  [...]
  addresses = realloc (addresses, sizeof(char*) * max_addr);

I understand the concept of malloc/realloc but when it comes to fancy
sizes I always get lost in pointers. Anyone skilled enough could verify
that these alloc enough memory?


Since I cannot reproduce the segfault I can't test it, and the user
reporting this left.

More details here:
http://www.pastebin.ca/453823

Thanks

Thomas





More information about the Devel mailing list