Re: [PATCH] boilerplate: Add xsprintf() and xsnprintf()
Bill Spitzak <[email protected]>
| Newsgroups | gmane.comp.lib.cairo |
|---|---|
| Message-ID | <[email protected]> |
Passing NULL for an *output* buffer can be considered programmer error, and I would prefer it segfault at this point rather than call exit and lose the stack trace. If they are calling malloc to make the buffer then they should be calling the xmalloc instead which exits, thus reproducing this result but with a correct out-of-memory error. Any other method of making the buffer pointer will be extracting the pointer from another pointed-to structure and thus any error will segfault before calling this, or pass a small offset from zero that this code does not detect anyway. And I strongly suspect the error result of snprintf is never produced. That is for reporting errors from the flush of output streams. I think this is useless code similar to the _s crap that Microsoft foisted on the C standard in an effort to make C non-portable, and should not be added. Any effort here would be better spent changing all sprintf to snprintf and replacing strdup and strcat with strldup and strlcat, If there is a worry about NULL string pointers you should be fixing functions that take *input* strings and make them do some expected result when passed NULL, such as treat it the same as "". This would fix actual bugs and crashes. On 10/21/2014 10:13 PM, RAVI NANJUNDAPPA wrote: > (formatting was the problem with the earlier mail. Pls ignore that mail.) > Agreed. But we need to check for other conditions like if the user is passing NULL string value or not (as it's been done in xstrdup()) > In which case also, we need to exit from the execution environment. > > Thanks and Best Regards, > N Ravi -- cairo mailing list [email protected] http://lists.cairographics.org/mailman/listinfo/cairo