From aca8e1abe9720ab39807a38e1a36a67108f36b1a Mon Sep 17 00:00:00 2001 From: Brett Bryant Date: Thu, 17 Jul 2008 18:14:42 +0000 Subject: [PATCH] Fix a memory leak in register_group_feature when attempting to register a feature without specifying a group or feature to register. (closes issue #13101) Reported by: eliel Patches: features.c.patch uploaded by eliel (license 64) git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@131717 65c4cc65-6c06-0410-ace0-fbb531ad65f3 --- main/features.c | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/main/features.c b/main/features.c index 5550f81aa3..e3d92d1359 100644 --- a/main/features.c +++ b/main/features.c @@ -1498,14 +1498,6 @@ static void register_group_feature(struct feature_group *fg, const char *exten, { struct feature_group_exten *fge; - if (!(fge = ast_calloc(1, sizeof(*fge)))) - return; - - if (ast_string_field_init(fge, 128)) { - ast_free(fge); - return; - } - if (!fg) { ast_log(LOG_NOTICE, "You didn't pass a group!\n"); return; @@ -1516,7 +1508,15 @@ static void register_group_feature(struct feature_group *fg, const char *exten, return; } - ast_string_field_set(fge, exten, (ast_strlen_zero(exten) ? feature->exten : exten)); + if (!(fge = ast_calloc(1, sizeof(*fge)))) + return; + + if (ast_string_field_init(fge, 128)) { + ast_free(fge); + return; + } + + ast_string_field_set(fge, exten, S_OR(exten, feature->exten)); fge->feature = feature;