[asterisk-commits] mmichelson: trunk r187680 - /trunk/main/channel.c

SVN commits to the Asterisk project asterisk-commits at lists.digium.com
Fri Apr 10 11:06:25 CDT 2009


Author: mmichelson
Date: Fri Apr 10 11:06:22 2009
New Revision: 187680

URL: http://svn.digium.com/svn-view/asterisk?view=rev&rev=187680
Log:
Don't let ast_channel_alloc fail if explicitly passed NULL cid_name or cid_number.

This also fixes a small memory leak.


Modified:
    trunk/main/channel.c

Modified: trunk/main/channel.c
URL: http://svn.digium.com/svn-view/asterisk/trunk/main/channel.c?view=diff&rev=187680&r1=187679&r2=187680
==============================================================================
--- trunk/main/channel.c (original)
+++ trunk/main/channel.c Fri Apr 10 11:06:22 2009
@@ -796,11 +796,22 @@
 		return NULL;
 	}
 
-	if (!(tmp->cid.cid_name = ast_strdup(cid_name)) || !(tmp->cid.cid_num = ast_strdup(cid_num))) {
-		ast_string_field_free_memory(tmp);
-		sched_context_destroy(tmp->sched);
-		ast_free(tmp);
-		return NULL;
+	if (cid_name) {
+		if (!(tmp->cid.cid_name = ast_strdup(cid_name))) {
+			ast_string_field_free_memory(tmp);
+			sched_context_destroy(tmp->sched);
+			ast_free(tmp);
+			return NULL;
+		}
+	}
+	if (cid_num) {
+		if (!(tmp->cid.cid_num = ast_strdup(cid_num))) {
+			ast_string_field_free_memory(tmp);
+			sched_context_destroy(tmp->sched);
+			ast_free(tmp->cid.cid_name);
+			ast_free(tmp);
+			return NULL;
+		}
 	}
 
 #ifdef HAVE_EPOLL




More information about the asterisk-commits mailing list