]> granicus.if.org Git - php/commitdiff
- Disable direct serializing for PHP 5.0
authorMarcus Boerger <helly@php.net>
Sun, 27 Feb 2005 22:58:08 +0000 (22:58 +0000)
committerMarcus Boerger <helly@php.net>
Sun, 27 Feb 2005 22:58:08 +0000 (22:58 +0000)
ext/pdo/pdo.c
ext/pdo/pdo_stmt.c

index 05e1886ef2398e0e8655e005b9a27c0950f8b564..748c08d9ff9d6c29ed0d970ad529df94fc6a1129 100755 (executable)
@@ -282,7 +282,9 @@ PHP_MINIT_FUNCTION(pdo)
        REGISTER_LONG_CONSTANT("PDO_FETCH_GROUP",(long)PDO_FETCH_GROUP, CONST_CS|CONST_PERSISTENT);
        REGISTER_LONG_CONSTANT("PDO_FETCH_UNIQUE",(long)PDO_FETCH_UNIQUE, CONST_CS|CONST_PERSISTENT);
        REGISTER_LONG_CONSTANT("PDO_FETCH_CLASSTYPE",(long)PDO_FETCH_CLASSTYPE, CONST_CS|CONST_PERSISTENT);
+#if PHP_MAJOR_VERSION == 5 && PHP_MINOR_VERSION < 1
        REGISTER_LONG_CONSTANT("PDO_FETCH_SERIALIZE",(long)PDO_FETCH_SERIALIZE, CONST_CS|CONST_PERSISTENT);
+#endif
 
        REGISTER_LONG_CONSTANT("PDO_ATTR_AUTOCOMMIT",   (long)PDO_ATTR_AUTOCOMMIT,      CONST_CS|CONST_PERSISTENT);
        REGISTER_LONG_CONSTANT("PDO_ATTR_PREFETCH",             (long)PDO_ATTR_PREFETCH,        CONST_CS|CONST_PERSISTENT);
index ed8c8e1f1cd4da96e62731bf3c0bd3e70717d332..ab8afd37dd5888fc0bce774d12bfdc8020cc4c0c 100755 (executable)
@@ -865,7 +865,8 @@ static int do_fetch(pdo_stmt_t *stmt, int do_bind, zval *return_value,
                                                        return 0;
                                                }
                                                PHP_VAR_UNSERIALIZE_DESTROY(var_hash);
-#else
+#endif
+#if PHP_MAJOR_VERSION == 5 && PHP_MINOR_VERSION < 1
                                                if (!ce->unserialize) {
                                                        zend_throw_exception_ex(pdo_exception_ce, 0 TSRMLS_CC, "Class %s cannot be unserialized", ce->name);
                                                        return 0;
@@ -971,6 +972,13 @@ static int pdo_stmt_verify_mode(pdo_stmt_t *stmt, int mode, int fetch_all TSRMLS
                mode = stmt->default_fetch_type & ~PDO_FETCH_FLAGS;
        }
 
+#if PHP_MAJOR_VERSION == 5 && PHP_MINOR_VERSION < 1
+       if ((flags & PDO_FETCH_SERIALIZE) == PDO_FETCH_SERIALIZE) {
+               zend_throw_exception(pdo_exception_ce, "Fetch flag PDO_FETCH_SERIALIZE only allowed in PHP version 5.1 and higher", 0 TSRMLS_CC);
+               return 0;
+       }
+#endif
+
        switch(mode) {
        case PDO_FETCH_FUNC:
                if (!fetch_all) {