]> git.ipfire.org Git - thirdparty/asterisk.git/commitdiff
Merged revisions 193956 via svnmerge from
authorTilghman Lesher <tilghman@meg.abyt.es>
Tue, 12 May 2009 20:42:17 +0000 (20:42 +0000)
committerTilghman Lesher <tilghman@meg.abyt.es>
Tue, 12 May 2009 20:42:17 +0000 (20:42 +0000)
https://origsvn.digium.com/svn/asterisk/trunk

................
  r193956 | tilghman | 2009-05-12 15:40:22 -0500 (Tue, 12 May 2009) | 13 lines

  Merged revisions 193955 via svnmerge from
  https://origsvn.digium.com/svn/asterisk/branches/1.4

  ........
    r193955 | tilghman | 2009-05-12 15:39:21 -0500 (Tue, 12 May 2009) | 6 lines

    Avoid initializing routines if the authentication fails.  Fixes a crash (RR) issue.
    (closes issue #14508)
     Reported by: tiziano
     Patches:
           20090221_2_wrongmailbox.diff.txt uploaded by tiziano (license 377)
  ........
................

git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.6.1@193958 65c4cc65-6c06-0410-ace0-fbb531ad65f3

apps/app_voicemail.c

index 4d62c658fd7bb281d5e12d287189b3a3eb2421c7..286530a0641c1c174ebd5f54fa81c7e1008b878a 100644 (file)
@@ -8893,6 +8893,10 @@ static int vm_execmain(struct ast_channel *chan, void *data)
        /* If ADSI is supported, setup login screen */
        adsi_begin(chan, &useadsi);
 
+       if (!valid) {
+               goto out;
+       }
+
 #ifdef IMAP_STORAGE
        pthread_once(&ts_vmstate.once, ts_vmstate.key_init);
        pthread_setspecific(ts_vmstate.key, &vms);
@@ -8904,9 +8908,6 @@ static int vm_execmain(struct ast_channel *chan, void *data)
        vmstate_insert(&vms);
        init_vm_state(&vms);
 #endif
-       if (!valid)
-               goto out;
-
        if (!(vms.deleted = ast_calloc(vmu->maxmsg, sizeof(int)))) {
                ast_log(AST_LOG_ERROR, "Could not allocate memory for deleted message storage!\n");
                cmd = ast_play_and_wait(chan, "an-error-has-occured");
@@ -9458,7 +9459,9 @@ out:
        }
        /*  before we delete the state, we should copy pertinent info
         *  back to the persistent model */
-       vmstate_delete(&vms);
+       if (vmu) {
+               vmstate_delete(&vms);
+       }
 #endif
        if (vmu)
                free_user(vmu);