aboutsummaryrefslogtreecommitdiffstats
path: root/apps
diff options
context:
space:
mode:
authortilghman <tilghman@f38db490-d61c-443f-a65b-d21fe96a405b>2009-05-12 20:42:28 +0000
committertilghman <tilghman@f38db490-d61c-443f-a65b-d21fe96a405b>2009-05-12 20:42:28 +0000
commitda62ff76f39362f83e0668b7b9c04fa3aa469d5a (patch)
tree25f05a04945df441fa49a46be1d05c12de495537 /apps
parenta5d358fabe0d2bd79f67d8971c8f65cfd10e4c2e (diff)
Merged revisions 193956 via svnmerge from
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: http://svn.digium.com/svn/asterisk/branches/1.6.2@193959 f38db490-d61c-443f-a65b-d21fe96a405b
Diffstat (limited to 'apps')
-rw-r--r--apps/app_voicemail.c11
1 files changed, 7 insertions, 4 deletions
diff --git a/apps/app_voicemail.c b/apps/app_voicemail.c
index 0785bce50..3822d15b1 100644
--- a/apps/app_voicemail.c
+++ b/apps/app_voicemail.c
@@ -9016,6 +9016,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);
@@ -9027,9 +9031,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");
@@ -9581,7 +9582,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);