tony2001 Thu Dec 1 14:59:59 2005 EDT Modified files: (Branch: PHP_5_1) /php-src/ext/pdo pdo_stmt.c Log: MFH: fix #35508 (PDO fails when unknown fetch mode specified) http://cvs.php.net/diff.php/php-src/ext/pdo/pdo_stmt.c?r1=1.118.2.23&r2=1.118.2.24&ty=u Index: php-src/ext/pdo/pdo_stmt.c diff -u php-src/ext/pdo/pdo_stmt.c:1.118.2.23 php-src/ext/pdo/pdo_stmt.c:1.118.2.24 --- php-src/ext/pdo/pdo_stmt.c:1.118.2.23 Sun Nov 27 16:01:58 2005 +++ php-src/ext/pdo/pdo_stmt.c Thu Dec 1 14:59:58 2005 @@ -18,7 +18,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: pdo_stmt.c,v 1.118.2.23 2005/11/27 21:01:58 wez Exp $ */ +/* $Id: pdo_stmt.c,v 1.118.2.24 2005/12/01 19:59:58 tony2001 Exp $ */ /* The PDO Statement Handle Class */ @@ -1116,6 +1116,11 @@ static int pdo_stmt_verify_mode(pdo_stmt_t *stmt, int mode, int fetch_all TSRMLS_DC) /* {{{ */ { int flags = mode & PDO_FETCH_FLAGS; + + if (mode < 0 || mode > PDO_FETCH__MAX) { + pdo_raise_impl_error(stmt->dbh, stmt, "HY000", "invalid fetch mode" TSRMLS_CC); + return 0; + } mode = mode & ~PDO_FETCH_FLAGS; @@ -1713,10 +1718,12 @@ mode = Z_LVAL_PP(args[skip]); if (!pdo_stmt_verify_mode(stmt, mode, 0 TSRMLS_CC)) { + efree(args); return FAILURE; } switch (mode & ~PDO_FETCH_FLAGS) { + case PDO_FETCH_USE_DEFAULT: case PDO_FETCH_LAZY: case PDO_FETCH_ASSOC: case PDO_FETCH_NUM: @@ -1796,6 +1803,7 @@ } else { pdo_raise_impl_error(stmt->dbh, stmt, "22003", "mode is out of range" TSRMLS_CC); } + efree(args); return FAILURE; }
-- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php