[asterisk-commits] tilghman: trunk r62546 - in /trunk: ./ apps/app_voicemail.c

asterisk-commits at lists.digium.com asterisk-commits at lists.digium.com
Tue May 1 14:41:49 MST 2007


Author: tilghman
Date: Tue May  1 16:41:48 2007
New Revision: 62546

URL: http://svn.digium.com/view/asterisk?view=rev&rev=62546
Log:
Merged revisions 62545 via svnmerge from 
https://origsvn.digium.com/svn/asterisk/branches/1.4

........
r62545 | tilghman | 2007-05-01 16:34:43 -0500 (Tue, 01 May 2007) | 2 lines

Bug 9590 - Memory leaks around find_user() (found by rayjay, different fixes by me)

........

Modified:
    trunk/   (props changed)
    trunk/apps/app_voicemail.c

Propchange: trunk/
------------------------------------------------------------------------------
Binary property 'branch-1.4-merged' - no diff available.

Modified: trunk/apps/app_voicemail.c
URL: http://svn.digium.com/view/asterisk/trunk/apps/app_voicemail.c?view=diff&rev=62546&r1=62545&r2=62546
==============================================================================
--- trunk/apps/app_voicemail.c (original)
+++ trunk/apps/app_voicemail.c Tue May  1 16:41:48 2007
@@ -2642,6 +2642,7 @@
 	/* No IMAP account available */
 	if (vmu->imapuser[0] == '\0') {
 		ast_log (LOG_WARNING,"IMAP user not set for mailbox %s\n",vmu->mailbox);
+		free_user(vmu);
 		return -1;
  	}
  
@@ -2651,6 +2652,7 @@
 			ast_log (LOG_DEBUG,"Returning before search - user is logged in\n");
  		*newmsgs = vms_p->newmessages;
  		*oldmsgs = vms_p->oldmessages;
+		free_user(vmu);
  		return 0;
  	}
  
@@ -2658,8 +2660,10 @@
 	if (!(vms_p = get_vm_state_by_imapuser(vmu->imapuser, 0)) && !(vms_p = get_vm_state_by_mailbox(mailboxnc, 0))) {
 		if(option_debug > 2)
 			ast_log (LOG_DEBUG,"Adding new vmstate for %s\n",vmu->imapuser);
-		if (!(vms_p = ast_calloc(1, sizeof(*vms_p))))
+		if (!(vms_p = ast_calloc(1, sizeof(*vms_p)))) {
+			free_user(vmu);
 			return -1;
+		}
  		ast_copy_string(vms_p->imapuser,vmu->imapuser, sizeof(vms_p->imapuser));
  		ast_copy_string(vms_p->username, mailboxnc, sizeof(vms_p->username)); /* save for access from interactive entry point */
  		vms_p->mailstream = NIL; /* save for access from interactive entry point */
@@ -2676,6 +2680,7 @@
 	ret = init_mailstream(vms_p, 0);
 	if (!vms_p->mailstream) {
 		ast_log (LOG_ERROR,"Houston we have a problem - IMAP mailstream is NULL\n");
+		free_user(vmu);
 		return -1;
 	}
 
@@ -2721,6 +2726,7 @@
  		*oldmsgs = vms_p->oldmessages;
  	}
 
+	free_user(vmu);
  	return 0;
  }
 
@@ -8380,7 +8386,8 @@
 			ast_config_destroy(msg_cfg);
 			return res;
 		} else {
-			if (find_user(NULL, vmu->context, num)) {
+			struct ast_vm_user vmu2;
+			if (find_user(&vmu2, vmu->context, num)) {
 				struct leave_vm_options leave_options;
 				char mailbox[AST_MAX_EXTENSION * 2 + 2];
 				snprintf(mailbox, sizeof(mailbox), "%s@%s", num, vmu->context);



More information about the asterisk-commits mailing list