[asterisk-commits] mmichelson: trunk r165724 - /trunk/res/res_odbc.c

SVN commits to the Asterisk project asterisk-commits at lists.digium.com
Thu Dec 18 13:34:33 CST 2008


Author: mmichelson
Date: Thu Dec 18 13:34:33 2008
New Revision: 165724

URL: http://svn.digium.com/view/asterisk?view=rev&rev=165724
Log:
Fix crashes in res_odbc.

The variable "class" was being set NULL just prior to
being dereferenced in an ao2_link call. I have moved
the setting of the variable to NULL until after the
ao2_link call.


Modified:
    trunk/res/res_odbc.c

Modified: trunk/res/res_odbc.c
URL: http://svn.digium.com/view/asterisk/trunk/res/res_odbc.c?view=diff&rev=165724&r1=165723&r2=165724
==============================================================================
--- trunk/res/res_odbc.c (original)
+++ trunk/res/res_odbc.c Thu Dec 18 13:34:33 2008
@@ -699,7 +699,6 @@
 			ast_mutex_init(&obj->lock);
 			/* obj inherits the outstanding reference to class */
 			obj->parent = class;
-			class = NULL;
 			if (odbc_obj_connect(obj) == ODBC_FAIL) {
 				ast_log(LOG_WARNING, "Failed to connect to %s\n", name);
 				ao2_ref(obj, -1);
@@ -708,6 +707,7 @@
 				obj->used = 1;
 				ao2_link(class->obj_container, obj);
 			}
+			class = NULL;
 		} else {
 			/* Object is not constructed, so delete outstanding reference to class. */
 			ao2_ref(class, -1);
@@ -735,7 +735,6 @@
 			ast_mutex_init(&obj->lock);
 			/* obj inherits the outstanding reference to class */
 			obj->parent = class;
-			class = NULL;
 			if (odbc_obj_connect(obj) == ODBC_FAIL) {
 				ast_log(LOG_WARNING, "Failed to connect to %s\n", name);
 				ao2_ref(obj, -1);
@@ -743,6 +742,7 @@
 			} else {
 				ao2_link(class->obj_container, obj);
 			}
+			class = NULL;
 		}
 	}
 




More information about the asterisk-commits mailing list