]> git.ipfire.org Git - thirdparty/asterisk.git/commitdiff
app_voicemail: Fix memory management issues.
authorCorey Farrell <git@cfware.com>
Tue, 19 Dec 2017 00:04:56 +0000 (19:04 -0500)
committerCorey Farrell <git@cfware.com>
Tue, 19 Dec 2017 00:12:23 +0000 (18:12 -0600)
* mwi_sub_event_cb: mwist leaked on separate_mailbox failure.
* add_email_attachment: A reference to sox_gain_tmpdir was used
  after the storage was out of scope.

Change-Id: I6282c542ff7b82fa091177a912d11234a8b00a30

apps/app_voicemail.c

index d01730101b329b253879f4fe583dca5954386c7f..01111a1aa729e3d5c73680181d22a23d7520f7cd 100644 (file)
@@ -5371,6 +5371,7 @@ plain_message:
 static int add_email_attachment(FILE *p, struct ast_vm_user *vmu, char *format, char *attach, char *greeting_attachment, char *mailbox, char *bound, char *filename, int last, int msgnum)
 {
        char fname[PATH_MAX] = "";
+       char sox_gain_tmpdir[PATH_MAX];
        char *file_to_delete = NULL, *dir_to_delete = NULL;
        int res;
 
@@ -5380,7 +5381,6 @@ static int add_email_attachment(FILE *p, struct ast_vm_user *vmu, char *format,
        /* This 'while' loop will only execute once. We use it so that we can 'break' */
        while (vmu->volgain < -.001 || vmu->volgain > .001) {
                char tmpdir[PATH_MAX];
-               char sox_gain_tmpdir[PATH_MAX];
 
                create_dirpath(tmpdir, sizeof(tmpdir), vmu->context, vmu->mailbox, "tmp");
 
@@ -13148,6 +13148,7 @@ static void mwi_sub_event_cb(struct stasis_subscription_change *change)
        }
 
        if (separate_mailbox(ast_strdupa(stasis_topic_name(change->topic)), &mailbox, &context)) {
+               ast_free(mwist);
                return;
        }