From 67c91388dbcec406a3957c8c629c19a18322b072 Mon Sep 17 00:00:00 2001
From: Tilghman Lesher <tilghman@meg.abyt.es>
Date: Thu, 10 Mar 2011 05:54:53 +0000
Subject: [PATCH] Merged revisions 310142 via svnmerge from
 https://origsvn.digium.com/svn/asterisk/branches/1.8

................
  r310142 | tilghman | 2011-03-09 23:53:29 -0600 (Wed, 09 Mar 2011) | 19 lines

  Merged revisions 310141 via svnmerge from
  https://origsvn.digium.com/svn/asterisk/branches/1.6.2

  ................
    r310141 | tilghman | 2011-03-09 23:51:37 -0600 (Wed, 09 Mar 2011) | 12 lines

    Merged revisions 310140 via svnmerge from
    https://origsvn.digium.com/svn/asterisk/branches/1.4

    ........
      r310140 | tilghman | 2011-03-09 23:38:44 -0600 (Wed, 09 Mar 2011) | 5 lines

      Initialize column size to 0 to deal with a potential UnixODBC bug on 64-bit systems.

      (closes issue #18295)
       Reported by: pruiz
    ........
  ................
................


git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@310143 65c4cc65-6c06-0410-ace0-fbb531ad65f3
---
 apps/app_voicemail.c  | 1 +
 funcs/func_odbc.c     | 4 +++-
 res/res_config_odbc.c | 2 ++
 3 files changed, 6 insertions(+), 1 deletion(-)

diff --git a/apps/app_voicemail.c b/apps/app_voicemail.c
index e4fa608859..783463c43a 100644
--- a/apps/app_voicemail.c
+++ b/apps/app_voicemail.c
@@ -3336,6 +3336,7 @@ static int retrieve_file(char *dir, int msgnum)
 			fprintf(f, "[message]\n");
 		for (x = 0; x < colcount; x++) {
 			rowdata[0] = '\0';
+			colsize = 0;
 			collen = sizeof(coltitle);
 			res = SQLDescribeCol(stmt, x + 1, (unsigned char *) coltitle, sizeof(coltitle), &collen, 
 						&datatype, &colsize, &decimaldigits, &nullable);
diff --git a/funcs/func_odbc.c b/funcs/func_odbc.c
index 8ba91da1b4..10cf50e832 100644
--- a/funcs/func_odbc.c
+++ b/funcs/func_odbc.c
@@ -589,7 +589,7 @@ static int acf_odbc_read(struct ast_channel *chan, const char *cmd, char *s, cha
 
 			if (y == 0) {
 				char colname[256];
-				SQLULEN maxcol;
+				SQLULEN maxcol = 0;
 
 				res = SQLDescribeCol(stmt, x + 1, (unsigned char *)colname, sizeof(colname), &collength, NULL, &maxcol, NULL, NULL);
 				ast_debug(3, "Got collength of %d and maxcol of %d for column '%s' (offset %d)\n", (int)collength, (int)maxcol, colname, x);
@@ -1197,6 +1197,8 @@ static char *cli_odbc_read(struct ast_cli_entry *e, int cmd, struct ast_cli_args
 			}
 			for (;;) {
 				for (x = 0; x < colcount; x++) {
+					maxcol = 0;
+
 					res = SQLDescribeCol(stmt, x + 1, (unsigned char *)colname, sizeof(colname), &collength, NULL, &maxcol, NULL, NULL);
 					if (((res != SQL_SUCCESS) && (res != SQL_SUCCESS_WITH_INFO)) || collength == 0) {
 						snprintf(colname, sizeof(colname), "field%d", x);
diff --git a/res/res_config_odbc.c b/res/res_config_odbc.c
index c076555fa3..b31241235e 100644
--- a/res/res_config_odbc.c
+++ b/res/res_config_odbc.c
@@ -238,6 +238,7 @@ static struct ast_variable *realtime_odbc(const char *database, const char *tabl
 	}
 	for (x = 0; x < colcount; x++) {
 		rowdata[0] = '\0';
+		colsize = 0;
 		collen = sizeof(coltitle);
 		res = SQLDescribeCol(stmt, x + 1, (unsigned char *)coltitle, sizeof(coltitle), &collen, 
 					&datatype, &colsize, &decimaldigits, &nullable);
@@ -410,6 +411,7 @@ static struct ast_config *realtime_multi_odbc(const char *database, const char *
 		}
 		for (x=0;x<colcount;x++) {
 			rowdata[0] = '\0';
+			colsize = 0;
 			collen = sizeof(coltitle);
 			res = SQLDescribeCol(stmt, x + 1, (unsigned char *)coltitle, sizeof(coltitle), &collen, 
 						&datatype, &colsize, &decimaldigits, &nullable);
-- 
GitLab