[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