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!", &param.paramno, &param.parameter, 
&param.param_type, &param.max_value_len,
+                       "lz|llz!", &param.paramno, &param.parameter, 
&param_type, &param.max_value_len,
                        &param.driver_params)) {
                if (FAILURE == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, 
"sz|llz!", &param.name,
-                               &param.namelen, &param.parameter, 
&param.param_type, &param.max_value_len,
+                               &param.namelen, &param.parameter, &param_type, 
&param.max_value_len,
                                &param.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!", &param.paramno, &param.parameter, 
&param.param_type, &param.max_value_len,
+                       "lz|llz!", &param.paramno, &param.parameter, 
&param_type, &param.max_value_len,
                        &param.driver_params)) {
                if (FAILURE == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, 
"sz|llz!", &param.name,
-                               &param.namelen, &param.parameter, 
&param.param_type, &param.max_value_len,
+                               &param.namelen, &param.parameter, &param_type, 
&param.max_value_len,
                                &param.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!", &param.paramno, &param.parameter, 
&param.param_type, &param.max_value_len,
+                       "lz|llz!", &param.paramno, &param.parameter, 
&param_type, &param.max_value_len,
                        &param.driver_params)) {
                if (FAILURE == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, 
"sz|llz!", &param.name,
-                               &param.namelen, &param.parameter, 
&param.param_type, &param.max_value_len,
+                               &param.namelen, &param.parameter, &param_type, 
&param.max_value_len,
                                &param.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

Reply via email to