Skip to content

Commit

Permalink
Fixed bug #68964 Allowed memory size exhausted with odbc_exec
Browse files Browse the repository at this point in the history
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.
  • Loading branch information
weltling committed Feb 6, 2015
1 parent 9ef0c39 commit a41aa46
Show file tree
Hide file tree
Showing 4 changed files with 20 additions and 8 deletions.
13 changes: 13 additions & 0 deletions ext/odbc/config.m4
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
8 changes: 7 additions & 1 deletion ext/odbc/config.w32
Original file line number Diff line number Diff line change
Expand Up @@ -2,15 +2,21 @@
// 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")
&& CHECK_HEADER_ADD_INCLUDE("sql.h", "CFLAGS_ODBC")
&& 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"
}
}
}
1 change: 0 additions & 1 deletion ext/odbc/php_odbc.h
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,6 @@
#define PHP_ODBC_H

#if HAVE_UODBC
#define ODBCVER 0x0250

#ifdef ZTS
#include "TSRM.h"
Expand Down
6 changes: 0 additions & 6 deletions ext/odbc/php_odbc_includes.h
Original file line number Diff line number Diff line change
Expand Up @@ -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 */
Expand Down

0 comments on commit a41aa46

Please sign in to comment.