Clean up and ensure proper usage of alloca()

This replaces all calls to alloca() with ast_alloca() which calls gcc's
__builtin_alloca() to avoid BSD semantics and removes all NULL checks
on memory allocated via ast_alloca() and ast_strdupa().

(closes issue ASTERISK-20125)
Review: https://reviewboard.asterisk.org/r/2032/
Patch-by: Walter Doekes (wdoekes)
........

Merged revisions 370642 from http://svn.asterisk.org/svn/asterisk/branches/1.8
........

Merged revisions 370643 from http://svn.asterisk.org/svn/asterisk/branches/10


git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@370655 65c4cc65-6c06-0410-ace0-fbb531ad65f3
This commit is contained in:
Kinsey Moore
2012-07-31 20:21:43 +00:00
parent 6c23a60f80
commit 9b16c8b0f6
64 changed files with 317 additions and 399 deletions

View File

@@ -646,6 +646,15 @@ int _ast_vasprintf(char **ret, const char *file, int lineno, const char *func, c
#endif /* AST_DEBUG_MALLOC */
/*!
\brief call __builtin_alloca to ensure we get gcc builtin semantics
\param size The size of the buffer we want allocated
This macro will attempt to allocate memory from the stack. If it fails
you won't get a NULL returned, but a SEGFAULT if you're lucky.
*/
#define ast_alloca(size) __builtin_alloca(size)
#if !defined(ast_strdupa) && defined(__GNUC__)
/*!
* \brief duplicate a string in memory from the stack