]> git.ipfire.org Git - thirdparty/asterisk.git/commitdiff
Fix a memory leak in register_group_feature when attempting to register
authorBrett Bryant <bbryant@digium.com>
Thu, 17 Jul 2008 18:14:42 +0000 (18:14 +0000)
committerBrett Bryant <bbryant@digium.com>
Thu, 17 Jul 2008 18:14:42 +0000 (18:14 +0000)
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

index 5550f81aa3ef15e8b62bb7fb6088f01b32b08416..e3d92d13590ccde9ee925ed3b161ce1cd1aa866c 100644 (file)
@@ -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;