[svn-commits] mmichelson: trunk r165724 - /trunk/res/res_odbc.c
    SVN commits to the Digium repositories 
    svn-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 svn-commits
mailing list