[Nagiosplug-devel] asprintf() madness (example patch)

Andreas Ericsson ae at op5.se
Sat Jun 4 01:08:01 CEST 2005


And here be the patch. ;)

Andreas Ericsson wrote:
> 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
-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: nagiosplug-check_swap-asprintf-madness.diff
URL: <http://nagios-plugins.org/archive/devel/attachments/20050604/c68c2391/attachment.ksh>


More information about the Devel mailing list