[Nagiosplug-devel] asprintf() madness (example patch)
Andreas Ericsson
ae at op5.se
Sat Jun 4 00:44:04 CEST 2005
I'm hoping to start a discussion here rather than having this patch
applied, so I haven't sent it to the tracker (although committing it is
a good idea anyways).
In some of the plugins, strings are concatenated with asprintf() just to
be printed by printf() in the next statement. This is made even more
horrible when considering asprintf() never guarantees it will
successfully allocate memory.
The perfdata and fperfdata also use sprintf, although can calculate the
maximum length required to ensure boundary safety, so sprintf() (which
is ansi C) would do just fine. The possibly wasted memory is a lot less
than asprintf() uses for temporary storage.
asprintf(foo, "%s%s", foo, bar);
should be replaced by a concat2(str1, str2) function. If needed,
concat3, concat4 and even concat_unlim could easily be written as well.
What the hell is the meaning behind all the asprintf()'s when a good 250
or so of them can be replaced by simpler and more portable functions
that can also exit properly when it runs out of memory?
Validation of memory allocating calls is another matter that could be
easily and transparently solved (with use of wrapper functions and
transparency macros).
--
Andreas Ericsson andreas.ericsson at op5.se
OP5 AB www.op5.se
Lead Developer
More information about the Devel
mailing list