[asterisk-commits] jrose: branch 12 r398286 - in /branches/12: ./ tests/test_voicemail_api.c

SVN commits to the Asterisk project asterisk-commits at lists.digium.com
Wed Sep 4 16:36:30 CDT 2013


Author: jrose
Date: Wed Sep  4 16:36:28 2013
New Revision: 398286

URL: http://svnview.digium.com/svn/asterisk?view=rev&rev=398286
Log:
unit tests: test_voicemail_api leaks stringfields from snapshots

(closes issue ASTERISK-22414)
Reported by: Corey Farrell
Patches:
    test_voicemail_api-leaks-11.patch uploaded by coreyfarrell (license 5909)
........

Merged revisions 398285 from http://svn.asterisk.org/svn/asterisk/branches/11

Modified:
    branches/12/   (props changed)
    branches/12/tests/test_voicemail_api.c

Propchange: branches/12/
------------------------------------------------------------------------------
Binary property 'branch-11-merged' - no diff available.

Modified: branches/12/tests/test_voicemail_api.c
URL: http://svnview.digium.com/svn/asterisk/branches/12/tests/test_voicemail_api.c?view=diff&rev=398286&r1=398285&r2=398286
==============================================================================
--- branches/12/tests/test_voicemail_api.c (original)
+++ branches/12/tests/test_voicemail_api.c Wed Sep  4 16:36:28 2013
@@ -382,12 +382,27 @@
 	snprintf(msg_id_buf, sizeof(msg_id_buf), "%ld-%d", (long)time(NULL), ast_str_hash(msg_id_hash));
 
 	if ((snapshot = ast_calloc(1, sizeof(*snapshot)))) {
-		ast_string_field_init(snapshot, 128);
+		if (ast_string_field_init(snapshot, 128)) {
+			ast_free(snapshot);
+			return NULL;
+		}
 		ast_string_field_set(snapshot, msg_id, msg_id_buf);
 		ast_string_field_set(snapshot, exten, exten);
 		ast_string_field_set(snapshot, callerid, callerid);
 	}
 	return snapshot;
+}
+
+/*!
+ * \internal
+ * \brief Destroy a mock snapshot object
+ */
+static void test_vm_api_destroy_mock_snapshot(struct ast_vm_msg_snapshot *snapshot)
+{
+	if (snapshot) {
+		ast_string_field_free_memory(snapshot);
+		ast_free(snapshot);
+	}
 }
 
 /*!
@@ -620,10 +635,10 @@
 		|| !((msg_three = test_vm_api_create_mock_snapshot("default", "test_vm_api_2345", "\"Phil\" <2000>")))
 		|| !((msg_four = test_vm_api_create_mock_snapshot("default", "test_vm_api_2345", "\"Bill\" <3000>")))) {
 		ast_log(AST_LOG_ERROR, "Failed to create mock snapshots for test\n");
-		ast_free(msg_one);
-		ast_free(msg_two);
-		ast_free(msg_three);
-		ast_free(msg_four);
+		test_vm_api_destroy_mock_snapshot(msg_one);
+		test_vm_api_destroy_mock_snapshot(msg_two);
+		test_vm_api_destroy_mock_snapshot(msg_three);
+		test_vm_api_destroy_mock_snapshot(msg_four);
 		return 1;
 	}
 
@@ -631,10 +646,10 @@
 	if (ast_vm_test_create_user("default", "test_vm_api_1234")
 		|| ast_vm_test_create_user("default", "test_vm_api_2345")) {
 		ast_log(AST_LOG_ERROR, "Failed to create test voicemail users\n");
-		ast_free(msg_one);
-		ast_free(msg_two);
-		ast_free(msg_three);
-		ast_free(msg_four);
+		test_vm_api_destroy_mock_snapshot(msg_one);
+		test_vm_api_destroy_mock_snapshot(msg_two);
+		test_vm_api_destroy_mock_snapshot(msg_three);
+		test_vm_api_destroy_mock_snapshot(msg_four);
 		/* Note that the cleanup macro will ensure that any test user that
 		 * was successfully created is removed
 		 */
@@ -687,7 +702,7 @@
 			 * up the object here instead */
 			ast_log(AST_LOG_ERROR, "Failed to store voicemail %s/%s\n",
 				"default", test_snapshots[i]->exten);
-			ast_free(test_snapshots[i]);
+			test_vm_api_destroy_mock_snapshot(test_snapshots[i]);
 			test_snapshots[i] = NULL;
 			res = 1;
 		}
@@ -703,7 +718,7 @@
 	/* Remove our test message snapshots */
 	for (i = 0; i < TOTAL_SNAPSHOTS; ++i) {
 		test_vm_api_remove_voicemail(test_snapshots[i]);
-		ast_free(test_snapshots[i]);
+		test_vm_api_destroy_mock_snapshot(test_snapshots[i]);
 		test_snapshots[i] = NULL;
 	}
 
@@ -853,6 +868,7 @@
 	VM_API_INT_VERIFY(2, test_mbox_snapshot->total_msg_num);
 	VM_API_SNAPSHOT_MSG_VERIFY(test_snapshots[0], test_mbox_snapshot, "INBOX", 0);
 	VM_API_SNAPSHOT_MSG_VERIFY(test_snapshots[1], test_mbox_snapshot, "INBOX", 1);
+	ast_vm_mailbox_snapshot_destroy(test_mbox_snapshot);
 
 	ast_test_status_update(test, "Test retrieving message 1, 0 from Old and INBOX of test_vm_1234 ordered by time desc\n");
 	VM_API_SNAPSHOT_CREATE("test_vm_api_1234", "default", "INBOX", 1, AST_VM_SNAPSHOT_SORT_BY_TIME, 1);




More information about the asterisk-commits mailing list