mirror of
https://github.com/asterisk/asterisk.git
synced 2025-11-16 06:48:25 +00:00
Fix func_config list entry allocation
The AST_CONFIG dialplan function defined in func_config.c allocates its config file list entries using ast_malloc. List entry allocations destined for use with Asterisk's linked list API must be ast_calloc()d or otherwise initialized so that list pointers are set to NULL. These uses of ast_malloc have been replaced by ast_calloc to prevent dereferencing of uninitialized pointer values when traversing the list. (closes issue ASTERISK-22483) Reported by: Brian Scott git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@400694 65c4cc65-6c06-0410-ace0-fbb531ad65f3
This commit is contained in:
@@ -120,7 +120,7 @@ static int config_function_read(struct ast_channel *chan, const char *cmd, char
|
|||||||
/* At worst, we might leak an entry while upgrading locks */
|
/* At worst, we might leak an entry while upgrading locks */
|
||||||
AST_RWLIST_UNLOCK(&configs);
|
AST_RWLIST_UNLOCK(&configs);
|
||||||
AST_RWLIST_WRLOCK(&configs);
|
AST_RWLIST_WRLOCK(&configs);
|
||||||
if (!(cur = ast_malloc(sizeof(*cur) + strlen(args.filename) + 1))) {
|
if (!(cur = ast_calloc(1, sizeof(*cur) + strlen(args.filename) + 1))) {
|
||||||
AST_RWLIST_UNLOCK(&configs);
|
AST_RWLIST_UNLOCK(&configs);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
@@ -149,7 +149,7 @@ static int config_function_read(struct ast_channel *chan, const char *cmd, char
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (!cur) {
|
if (!cur) {
|
||||||
if (!(cur = ast_malloc(sizeof(*cur) + strlen(args.filename) + 1))) {
|
if (!(cur = ast_calloc(1, sizeof(*cur) + strlen(args.filename) + 1))) {
|
||||||
AST_RWLIST_UNLOCK(&configs);
|
AST_RWLIST_UNLOCK(&configs);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user