summaryrefslogtreecommitdiff
path: root/ext/odbc
diff options
context:
space:
mode:
authorAnatol Belski <ab@php.net>2015-02-06 19:00:27 +0100
committerAnatol Belski <ab@php.net>2015-02-06 19:00:27 +0100
commita41aa46759d20e23af92df00b917ca66c6102412 (patch)
tree42362ef936b056a2ad7493a531a67ff2b29f469e /ext/odbc
parent9ef0c39b2b9e1a8212a953aee9deee26f0978ce8 (diff)
downloadphp-git-a41aa46759d20e23af92df00b917ca66c6102412.tar.gz
Fixed bug #68964 Allowed memory size exhausted with odbc_exec
This is done in two steps: - the ODBCVER has to be rased to 0x0300 which corresponds to Sql Server 9, otherwise the client will not recognize several SQL datatypes - additionally the config scripts was tweaked so then ODBCVER can be overridden, that still allows enabling compatibility with lower versions Bug #67437 might be fixed by this as well.
Diffstat (limited to 'ext/odbc')
-rw-r--r--ext/odbc/config.m413
-rw-r--r--ext/odbc/config.w328
-rw-r--r--ext/odbc/php_odbc.h1
-rw-r--r--ext/odbc/php_odbc_includes.h6
4 files changed, 20 insertions, 8 deletions
diff --git a/ext/odbc/config.m4 b/ext/odbc/config.m4
index eaed212cd7..f79c4616db 100644
--- a/ext/odbc/config.m4
+++ b/ext/odbc/config.m4
@@ -490,6 +490,19 @@ PHP_ARG_WITH(dbmaker,,
fi
fi
+PHP_ARG_WITH(odbcver,,
+[ --with-odbcver[=HEX] Force support for the passed ODBC version. A hex number is expected, default 0x0300.
+ Use the special value of 0 to prevent an explicit ODBCVER to be defined. ], 0x0300)
+
+if test "no" != "$PHP_ODBCVER"; then
+ if test "$PHP_ODBCVER" != "0"; then
+ AC_DEFINE_UNQUOTED(ODBCVER, $PHP_ODBCVER, [ The highest supported ODBC version ])
+ fi
+else
+ AC_DEFINE(ODBCVER, 0x300, [ The highest supported ODBC version ])
+fi
+
+
dnl
dnl Extension setup
dnl
diff --git a/ext/odbc/config.w32 b/ext/odbc/config.w32
index 2395ddcb76..70a541f83b 100644
--- a/ext/odbc/config.w32
+++ b/ext/odbc/config.w32
@@ -2,6 +2,7 @@
// vim:ft=javascript
ARG_ENABLE("odbc", "ODBC support", "yes");
+ARG_WITH("odbcver", "Force support for the passed ODBC version. A hex number is expected, default 0x0300. Use the special value of 0 to prevent an explicit ODBCVER to be defined.");
if (PHP_ODBC == "yes") {
if (CHECK_LIB("odbc32.lib", "odbc") && CHECK_LIB("odbccp32.lib", "odbc")
@@ -9,8 +10,13 @@ if (PHP_ODBC == "yes") {
&& CHECK_HEADER_ADD_INCLUDE("sqlext.h", "CFLAGS_ODBC")) {
EXTENSION("odbc", "php_odbc.c");
AC_DEFINE("HAVE_UODBC", 1, "ODBC support");
+ if ("no" == PHP_ODBCVER) {
+ AC_DEFINE("ODBCVER", "0x0300", "The highest supported ODBC version", false);
+ } else if ("0" != PHP_ODBCVER) {
+ AC_DEFINE("ODBCVER", PHP_ODBCVER, "The highest supported ODBC version", false);
+ }
} else {
WARNING("odbc support can't be enabled, libraries or header are missing (SDK)")
PHP_ODBC = "no"
}
-} \ No newline at end of file
+}
diff --git a/ext/odbc/php_odbc.h b/ext/odbc/php_odbc.h
index b4d279c20c..dca14966f7 100644
--- a/ext/odbc/php_odbc.h
+++ b/ext/odbc/php_odbc.h
@@ -24,7 +24,6 @@
#define PHP_ODBC_H
#if HAVE_UODBC
-#define ODBCVER 0x0250
#ifdef ZTS
#include "TSRM.h"
diff --git a/ext/odbc/php_odbc_includes.h b/ext/odbc/php_odbc_includes.h
index 84c4afc2b6..15bb737a8b 100644
--- a/ext/odbc/php_odbc_includes.h
+++ b/ext/odbc/php_odbc_includes.h
@@ -25,12 +25,6 @@
#if HAVE_UODBC
-#define ODBCVER 0x0250
-/*#ifndef MSVC5
-#define FAR
-#endif
-*/
-
/* checking in the same order as in configure.in */
#if defined(HAVE_SOLID) || defined(HAVE_SOLID_30) || defined(HAVE_SOLID_35) /* Solid Server */