felipe Fri, 11 Dec 2009 22:30:46 +0000 Revision: http://svn.php.net/viewvc?view=revision&revision=292003
Log: - Fixed bug #50445 (PDO-ODBC stored procedure call from Solaris 64-bit causes seg fault). (Original patch by davbrown4 at yahoo dot com) Bug: http://bugs.php.net/50445 (Open) PDO-ODBC stored procedure call from Solaris 64-bit causes seg fault Changed paths: U php/php-src/branches/PHP_5_2/NEWS U php/php-src/branches/PHP_5_2/ext/pdo/pdo_stmt.c U php/php-src/branches/PHP_5_3/NEWS U php/php-src/branches/PHP_5_3/ext/pdo/pdo_stmt.c U php/php-src/trunk/ext/pdo/pdo_stmt.c Modified: php/php-src/branches/PHP_5_2/NEWS =================================================================== --- php/php-src/branches/PHP_5_2/NEWS 2009-12-11 21:53:45 UTC (rev 292002) +++ php/php-src/branches/PHP_5_2/NEWS 2009-12-11 22:30:46 UTC (rev 292003) @@ -1,6 +1,8 @@ PHP NEWS ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| ?? Dec 2009, PHP 5.2.12RC5 +- Fixed bug #50445 (PDO-ODBC stored procedure call from Solaris 64-bit causes + seg fault). (davbrown4 at yahoo dot com, Felipe) 10 Dec 2009, PHP 5.2.12RC4 - Added LIBXML_PARSEHUGE constant to overrides the maximum text size of a Modified: php/php-src/branches/PHP_5_2/ext/pdo/pdo_stmt.c =================================================================== --- php/php-src/branches/PHP_5_2/ext/pdo/pdo_stmt.c 2009-12-11 21:53:45 UTC (rev 292002) +++ php/php-src/branches/PHP_5_2/ext/pdo/pdo_stmt.c 2009-12-11 22:30:46 UTC (rev 292003) @@ -1659,19 +1659,21 @@ static int register_bound_param(INTERNAL_FUNCTION_PARAMETERS, pdo_stmt_t *stmt, int is_param) /* {{{ */ { struct pdo_bound_param_data param = {0}; + long param_type = PDO_PARAM_STR; param.paramno = -1; - param.param_type = PDO_PARAM_STR; if (FAILURE == zend_parse_parameters_ex(ZEND_PARSE_PARAMS_QUIET, ZEND_NUM_ARGS() TSRMLS_CC, - "lz|llz!", ¶m.paramno, ¶m.parameter, ¶m.param_type, ¶m.max_value_len, + "lz|llz!", ¶m.paramno, ¶m.parameter, ¶m_type, ¶m.max_value_len, ¶m.driver_params)) { if (FAILURE == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "sz|llz!", ¶m.name, - ¶m.namelen, ¶m.parameter, ¶m.param_type, ¶m.max_value_len, + ¶m.namelen, ¶m.parameter, ¶m_type, ¶m.max_value_len, ¶m.driver_params)) { return 0; } } + + param.param_type = (int) param_type; if (param.paramno > 0) { --param.paramno; /* make it zero-based internally */ Modified: php/php-src/branches/PHP_5_3/NEWS =================================================================== --- php/php-src/branches/PHP_5_3/NEWS 2009-12-11 21:53:45 UTC (rev 292002) +++ php/php-src/branches/PHP_5_3/NEWS 2009-12-11 22:30:46 UTC (rev 292003) @@ -33,6 +33,8 @@ - Fixed memory leak in extension loading when an error occurs on Windows. (Pierre) +- Fixed bug #50445 (PDO-ODBC stored procedure call from Solaris 64-bit causes + seg fault). (davbrown4 at yahoo dot com, Felipe) - Fixed bug #50351 (performance regression handling objects, ten times slower in 5.3 than in 5.2). (Dmitry) - Fixed bug #50345 (nanosleep not detected properly on some solaris versions). Modified: php/php-src/branches/PHP_5_3/ext/pdo/pdo_stmt.c =================================================================== --- php/php-src/branches/PHP_5_3/ext/pdo/pdo_stmt.c 2009-12-11 21:53:45 UTC (rev 292002) +++ php/php-src/branches/PHP_5_3/ext/pdo/pdo_stmt.c 2009-12-11 22:30:46 UTC (rev 292003) @@ -1659,20 +1659,22 @@ static int register_bound_param(INTERNAL_FUNCTION_PARAMETERS, pdo_stmt_t *stmt, int is_param) /* {{{ */ { struct pdo_bound_param_data param = {0}; + long param_type = PDO_PARAM_STR; param.paramno = -1; - param.param_type = PDO_PARAM_STR; if (FAILURE == zend_parse_parameters_ex(ZEND_PARSE_PARAMS_QUIET, ZEND_NUM_ARGS() TSRMLS_CC, - "lz|llz!", ¶m.paramno, ¶m.parameter, ¶m.param_type, ¶m.max_value_len, + "lz|llz!", ¶m.paramno, ¶m.parameter, ¶m_type, ¶m.max_value_len, ¶m.driver_params)) { if (FAILURE == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "sz|llz!", ¶m.name, - ¶m.namelen, ¶m.parameter, ¶m.param_type, ¶m.max_value_len, + ¶m.namelen, ¶m.parameter, ¶m_type, ¶m.max_value_len, ¶m.driver_params)) { return 0; } } - + + param.param_type = (int) param_type; + if (param.paramno > 0) { --param.paramno; /* make it zero-based internally */ } else if (!param.name) { Modified: php/php-src/trunk/ext/pdo/pdo_stmt.c =================================================================== --- php/php-src/trunk/ext/pdo/pdo_stmt.c 2009-12-11 21:53:45 UTC (rev 292002) +++ php/php-src/trunk/ext/pdo/pdo_stmt.c 2009-12-11 22:30:46 UTC (rev 292003) @@ -1665,20 +1665,22 @@ static int register_bound_param(INTERNAL_FUNCTION_PARAMETERS, pdo_stmt_t *stmt, int is_param) /* {{{ */ { struct pdo_bound_param_data param = {0}; + long param_type = PDO_PARAM_STR; param.paramno = -1; - param.param_type = PDO_PARAM_STR; if (FAILURE == zend_parse_parameters_ex(ZEND_PARSE_PARAMS_QUIET, ZEND_NUM_ARGS() TSRMLS_CC, - "lz|llz!", ¶m.paramno, ¶m.parameter, ¶m.param_type, ¶m.max_value_len, + "lz|llz!", ¶m.paramno, ¶m.parameter, ¶m_type, ¶m.max_value_len, ¶m.driver_params)) { if (FAILURE == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "sz|llz!", ¶m.name, - ¶m.namelen, ¶m.parameter, ¶m.param_type, ¶m.max_value_len, + ¶m.namelen, ¶m.parameter, ¶m_type, ¶m.max_value_len, ¶m.driver_params)) { return 0; } } - + + param.param_type = (int) param_type; + if (param.paramno > 0) { --param.paramno; /* make it zero-based internally */ } else if (!param.name) {
-- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php