wez Sat Sep 10 13:48:45 2005 EDT
Added files: (Branch: PHP_5_1)
/php-src/ext/pdo/tests pecl_bug_5217.phpt
Modified files:
/php-src/ext/pdo pdo_dbh.c pdo_stmt.c
Log:
add __sleep and __wakeup functions to prevent serialize/deserialize from
being used on PDO objects. Refs PECL #5217
http://cvs.php.net/diff.php/php-src/ext/pdo/pdo_dbh.c?r1=1.82&r2=1.82.2.1&ty=u
Index: php-src/ext/pdo/pdo_dbh.c
diff -u php-src/ext/pdo/pdo_dbh.c:1.82 php-src/ext/pdo/pdo_dbh.c:1.82.2.1
--- php-src/ext/pdo/pdo_dbh.c:1.82 Mon Jul 11 22:40:59 2005
+++ php-src/ext/pdo/pdo_dbh.c Sat Sep 10 13:48:43 2005
@@ -18,7 +18,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: pdo_dbh.c,v 1.82 2005/07/12 02:40:59 wez Exp $ */
+/* $Id: pdo_dbh.c,v 1.82.2.1 2005/09/10 17:48:43 wez Exp $ */
/* The PDO Database Handle Class */
@@ -960,6 +960,22 @@
}
/* }}} */
+/* {{{ proto int PDO::__wakeup()
+ Prevents use of a PDO instance that has been unserialized */
+static PHP_METHOD(PDO, __wakeup)
+{
+ zend_throw_exception_ex(php_pdo_get_exception(), 0 TSRMLS_CC, "You
cannot serialize or unserialize PDO instances");
+}
+/* }}} */
+
+/* {{{ proto int PDO::__sleep()
+ Prevents serialization of a PDO instance */
+static PHP_METHOD(PDO, __sleep)
+{
+ zend_throw_exception_ex(php_pdo_get_exception(), 0 TSRMLS_CC, "You
cannot serialize or unserialize PDO instances");
+}
+/* }}} */
+
function_entry pdo_dbh_functions[] = {
PHP_ME_MAPPING(__construct, dbh_constructor, NULL)
@@ -975,6 +991,8 @@
PHP_ME(PDO, errorInfo, NULL,
ZEND_ACC_PUBLIC)
PHP_ME(PDO, getAttribute, NULL,
ZEND_ACC_PUBLIC)
PHP_ME(PDO, quote, NULL,
ZEND_ACC_PUBLIC)
+ PHP_ME(PDO, __wakeup, NULL,
ZEND_ACC_PUBLIC|ZEND_ACC_FINAL)
+ PHP_ME(PDO, __sleep, NULL,
ZEND_ACC_PUBLIC|ZEND_ACC_FINAL)
{NULL, NULL, NULL}
};
http://cvs.php.net/diff.php/php-src/ext/pdo/pdo_stmt.c?r1=1.118.2.2&r2=1.118.2.3&ty=u
Index: php-src/ext/pdo/pdo_stmt.c
diff -u php-src/ext/pdo/pdo_stmt.c:1.118.2.2
php-src/ext/pdo/pdo_stmt.c:1.118.2.3
--- php-src/ext/pdo/pdo_stmt.c:1.118.2.2 Sat Sep 10 11:32:04 2005
+++ php-src/ext/pdo/pdo_stmt.c Sat Sep 10 13:48:44 2005
@@ -18,7 +18,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: pdo_stmt.c,v 1.118.2.2 2005/09/10 15:32:04 wez Exp $ */
+/* $Id: pdo_stmt.c,v 1.118.2.3 2005/09/10 17:48:44 wez Exp $ */
/* The PDO Statement Handle Class */
@@ -1859,6 +1859,21 @@
}
/* }}} */
+/* {{{ proto int PDOStatement::__wakeup()
+ Prevents use of a PDOStatement instance that has been unserialized */
+static PHP_METHOD(PDOStatement, __wakeup)
+{
+ zend_throw_exception_ex(php_pdo_get_exception(), 0 TSRMLS_CC, "You
cannot serialize or unserialize PDOStatement instances");
+}
+/* }}} */
+
+/* {{{ proto int PDOStatement::__sleep()
+ Prevents serialization of a PDOStatement instance */
+static PHP_METHOD(PDOStatement, __sleep)
+{
+ zend_throw_exception_ex(php_pdo_get_exception(), 0 TSRMLS_CC, "You
cannot serialize or unserialize PDOStatement instances");
+}
+/* }}} */
function_entry pdo_dbstmt_functions[] = {
PHP_ME(PDOStatement, execute, NULL,
ZEND_ACC_PUBLIC)
@@ -1880,6 +1895,8 @@
PHP_ME(PDOStatement, nextRowset, NULL,
ZEND_ACC_PUBLIC)
PHP_ME(PDOStatement, closeCursor, NULL,
ZEND_ACC_PUBLIC)
PHP_ME(PDOStatement, debugDumpParams, NULL,
ZEND_ACC_PUBLIC)
+ PHP_ME(PDOStatement, __wakeup, NULL,
ZEND_ACC_PUBLIC|ZEND_ACC_FINAL)
+ PHP_ME(PDOStatement, __sleep, NULL,
ZEND_ACC_PUBLIC|ZEND_ACC_FINAL)
{NULL, NULL, NULL}
};
http://cvs.php.net/co.php/php-src/ext/pdo/tests/pecl_bug_5217.phpt?r=1.1&p=1
Index: php-src/ext/pdo/tests/pecl_bug_5217.phpt
+++ php-src/ext/pdo/tests/pecl_bug_5217.phpt
--
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php