I'm no C wizard also, but I'll try to send you my opinions since you've
got no reply up to now.
> 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?
i think it depends on the situation. it should be fine here since
From asprintf manpage:
The functions asprintf() and vasprintf() are analogues of sprintf() and
vsprintf(), except that they allocate a string large enough to hold the
output including the terminating null byte, and return a pointer to it
via the first parameter. This pointer should be passed to free(3) to
release the allocated storage when it is no longer needed.
if asprintf reallocs the space, both should be fine. if there is a
malloc, i'd say, the empty string (but \0 terminated) would remain
allocated but unused..
> 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?
the realloc won't be called until multiple -H options are given.. so I
thinks this is not the problem
passing multiple -H args seems to be an undocumented feature though.
If I understood the source right, the second,... hosts will only be
pinged if the previous check was state unknown.
> Since I cannot reproduce the segfault I can't test it, and the user
> reporting this left.
that's bad. I have only a centos 5 box here at the moment..