[asterisk-commits] tilghman: branch 1.6.2 r267670 - in /branches/1.6.2: ./ funcs/func_odbc.c

SVN commits to the Asterisk project asterisk-commits at lists.digium.com
Thu Jun 3 14:51:11 CDT 2010


Author: tilghman
Date: Thu Jun  3 14:51:06 2010
New Revision: 267670

URL: http://svnview.digium.com/svn/asterisk?view=rev&rev=267670
Log:
Merged revisions 267669 via svnmerge from 
https://origsvn.digium.com/svn/asterisk/trunk

........
  r267669 | tilghman | 2010-06-03 14:46:42 -0500 (Thu, 03 Jun 2010) | 8 lines
  
  Handle OOM errors more gracefully.
  
  (closes issue #17084)
   Reported by: falves11
   Patches: 
         issue17084_162_A.diff uploaded by falves11 (license 374)
   Tested by: falves11
........

Modified:
    branches/1.6.2/   (props changed)
    branches/1.6.2/funcs/func_odbc.c

Propchange: branches/1.6.2/
------------------------------------------------------------------------------
Binary property 'trunk-merged' - no diff available.

Modified: branches/1.6.2/funcs/func_odbc.c
URL: http://svnview.digium.com/svn/asterisk/branches/1.6.2/funcs/func_odbc.c?view=diff&rev=267670&r1=267669&r2=267670
==============================================================================
--- branches/1.6.2/funcs/func_odbc.c (original)
+++ branches/1.6.2/funcs/func_odbc.c Thu Jun  3 14:51:06 2010
@@ -219,7 +219,7 @@
 	struct ast_str *insertbuf = ast_str_thread_get(&sql2_buf, 16);
 	const char *status = "FAILURE";
 
-	if (!buf) {
+	if (!buf || !insertbuf) {
 		return -1;
 	}
 
@@ -396,7 +396,7 @@
 	struct ast_str *sql = ast_str_thread_get(&sql_buf, 16);
 	const char *status = "FAILURE";
 
-	if (!sql) {
+	if (!sql || !colnames) {
 		pbx_builtin_setvar_helper(chan, "ODBCSTATUS", status);
 		return -1;
 	}
@@ -538,6 +538,21 @@
 			int i;
 			struct ast_str *coldata = ast_str_thread_get(&coldata_buf, 16);
 			char *ptrcoldata;
+
+			if (!coldata) {
+				ast_free(resultset);
+				SQLCloseCursor(stmt);
+				SQLFreeHandle(SQL_HANDLE_STMT, stmt);
+				ast_odbc_release_obj(obj);
+				obj = NULL;
+				pbx_builtin_setvar_helper(chan, "ODBCSTATUS", "MEMERROR");
+				if (chan)
+					ast_autoservice_stop(chan);
+				if (bogus_chan) {
+					ast_channel_free(chan);
+				}
+				return -1;
+			}
 
 			if (y == 0) {
 				char colname[256];
@@ -1083,6 +1098,11 @@
 		char colname[256];
 		SQLULEN maxcol;
 
+		if (!coldata) {
+			AST_RWLIST_UNLOCK(&queries);
+			return CLI_SUCCESS;
+		}
+
 		for (dsn = 0; dsn < 5; dsn++) {
 			if (ast_strlen_zero(query->readhandle[dsn])) {
 				continue;




More information about the asterisk-commits mailing list