diff options
author | Christoph M. Becker <cmbecker69@gmx.de> | 2019-03-20 14:15:50 +0100 |
---|---|---|
committer | Christoph M. Becker <cmbecker69@gmx.de> | 2019-03-20 14:15:50 +0100 |
commit | 6bbb18a0b6bef11222caaa55c00abdbcbb55d54b (patch) | |
tree | e90c85b8fe9dcc5f389f9963148e104dc96c858e | |
parent | c8c86e76cf562008f29968c3bfc8c5f3fb8a7598 (diff) | |
download | php-git-6bbb18a0b6bef11222caaa55c00abdbcbb55d54b.tar.gz |
Unbundle ext/wddx
The extension is now available from <https://pecl.php.net/package/wddx>.
Cf. <https://wiki.php.net/rfc/deprecate-and-remove-ext-wddx>.
51 files changed, 2 insertions, 3778 deletions
diff --git a/EXTENSIONS b/EXTENSIONS index 387fde18f0..ce75f64f6b 100644 --- a/EXTENSIONS +++ b/EXTENSIONS @@ -201,11 +201,6 @@ PRIMARY MAINTAINER: Dmitry Stogov <dmitry@php.net> (2004 - 2018) MAINTENANCE: Maintained STATUS: Working ------------------------------------------------------------------------------- -EXTENSION: wddx -PRIMARY MAINTAINER: Andrei Zmievski <andrei@php.net> (1999 - 2003) -MAINTENANCE: Orphaned -STATUS: Working -------------------------------------------------------------------------------- EXTENSION: xml PRIMARY MAINTAINER: Thies C. Arntzen <thies@thieso.net> (1999 - 2002) Rob Richards <rrichards@php.net> (2003 - 2013) @@ -113,6 +113,6 @@ PHP NEWS tidy_get_root, and tidy_getopt) (tandre) - WDDX: - . Deprecated the WDDX extension. (cmb) + . Deprecated and unbundled the WDDX extension. (cmb) <<< NOTE: Insert NEWS from last stable release here prior to actual release! >>> @@ -287,7 +287,7 @@ PHP 7.4 UPGRADE NOTES . The @param notation can now also be used to denote SQL query parameters. - WDDX: - . The WDDX extension has been deprecated. + . The WDDX extension has been deprecated and moved to PECL. - Zip: . The bundled libzip library has been removed. A system libzip >= 0.11 is now diff --git a/ext/wddx/CREDITS b/ext/wddx/CREDITS deleted file mode 100644 index 4c98513048..0000000000 --- a/ext/wddx/CREDITS +++ /dev/null @@ -1,2 +0,0 @@ -WDDX -Andrei Zmievski diff --git a/ext/wddx/config.m4 b/ext/wddx/config.m4 deleted file mode 100644 index 548009ec14..0000000000 --- a/ext/wddx/config.m4 +++ /dev/null @@ -1,68 +0,0 @@ -dnl config.m4 for extension wddx - -PHP_ARG_ENABLE([wddx], - [whether to enable WDDX support], - [AS_HELP_STRING([--enable-wddx], - [Enable WDDX support])]) - -if test -z "$PHP_LIBXML_DIR"; then - PHP_ARG_WITH([libxml-dir], - [libxml2 install dir], - [AS_HELP_STRING([--with-libxml-dir=DIR], - [WDDX: libxml2 install prefix])], - [no], - [no]) -fi - -PHP_ARG_WITH([libexpat-dir], - [libexpat dir for WDDX], - [AS_HELP_STRING([--with-libexpat-dir=DIR], - [WDDX: libexpat dir for XMLRPC-EPI (deprecated)])], - [no], - [no]) - -if test "$PHP_WDDX" != "no"; then - - dnl - dnl Default to libxml2 if --with-libexpat-dir is not used - dnl - if test "$PHP_LIBEXPAT_DIR" = "no"; then - if test "$PHP_LIBXML" = "no"; then - AC_MSG_ERROR([WDDX extension requires LIBXML extension, add --enable-libxml]) - fi - - PHP_SETUP_LIBXML(WDDX_SHARED_LIBADD, [ - if test "$PHP_XML" = "no"; then - PHP_ADD_SOURCES(ext/xml, compat.c) - PHP_ADD_BUILD_DIR(ext/xml) - fi - ], [ - AC_MSG_ERROR([libxml2 not found. Use --with-libxml-dir=<DIR>]) - ]) - fi - - dnl - dnl Check for expat only if --with-libexpat-dir is used. - dnl - if test "$PHP_LIBEXPAT_DIR" != "no"; then - for i in $PHP_XML $PHP_LIBEXPAT_DIR /usr /usr/local; do - if test -f "$i/$PHP_LIBDIR/libexpat.a" || test -f "$i/$PHP_LIBDIR/libexpat.$SHLIB_SUFFIX_NAME"; then - EXPAT_DIR=$i - break - fi - done - - if test -z "$EXPAT_DIR"; then - AC_MSG_ERROR([not found. Please reinstall the expat distribution.]) - fi - - PHP_ADD_INCLUDE($EXPAT_DIR/include) - PHP_ADD_LIBRARY_WITH_PATH(expat, $EXPAT_DIR/$PHP_LIBDIR, WDDX_SHARED_LIBADD) - AC_DEFINE(HAVE_LIBEXPAT, 1, [ ]) - fi - - AC_DEFINE(HAVE_WDDX, 1, [ ]) - PHP_NEW_EXTENSION(wddx, wddx.c, $ext_shared) - PHP_ADD_EXTENSION_DEP(wddx, libxml) - PHP_SUBST(XMLRPC_SHARED_LIBADD) -fi diff --git a/ext/wddx/config.w32 b/ext/wddx/config.w32 deleted file mode 100644 index d5d4e80e5e..0000000000 --- a/ext/wddx/config.w32 +++ /dev/null @@ -1,23 +0,0 @@ -// vim:ft=javascript - -ARG_WITH("wddx", "WDDX support", "yes"); - -if (PHP_WDDX == "yes" && - PHP_LIBXML == "yes" && - CHECK_HEADER_ADD_INCLUDE("libxml/parser.h", "CFLAGS_WDDX", PHP_PHP_BUILD + "\\include\\libxml2") -) { - EXTENSION("wddx", "wddx.c"); - AC_DEFINE("HAVE_WDDX", 1, "WDDX support"); - - if (!PHP_WDDX_SHARED) { - ADD_FLAG("CFLAGS_WDDX", "/D LIBXML_STATIC"); - } else { - if (!CHECK_LIB("libxml2.lib", "wddx")) { - WARNING("wddx support can't be enabled, libxml is not found") - } - } - - ADD_EXTENSION_DEP('wddx', 'libxml'); - ADD_EXTENSION_DEP('wddx', 'xml') - CHECK_HEADER_ADD_INCLUDE("timelib_config.h", "CFLAGS_WDDX", "ext/date/lib"); -} diff --git a/ext/wddx/php_wddx.h b/ext/wddx/php_wddx.h deleted file mode 100644 index 457c50af2d..0000000000 --- a/ext/wddx/php_wddx.h +++ /dev/null @@ -1,45 +0,0 @@ -/* - +----------------------------------------------------------------------+ - | PHP Version 7 | - +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | - +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | http://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | - +----------------------------------------------------------------------+ - | Author: Andrei Zmievski <andrei@php.net> | - +----------------------------------------------------------------------+ - */ - -#ifndef PHP_WDDX_H -#define PHP_WDDX_H - -#if HAVE_WDDX - -extern zend_module_entry wddx_module_entry; -#define wddx_module_ptr &wddx_module_entry - -#include "php_version.h" -#define PHP_WDDX_VERSION PHP_VERSION - -PHP_FUNCTION(wddx_serialize_value); -PHP_FUNCTION(wddx_serialize_vars); -PHP_FUNCTION(wddx_packet_start); -PHP_FUNCTION(wddx_packet_end); -PHP_FUNCTION(wddx_add_vars); -PHP_FUNCTION(wddx_deserialize); - -#else - -#define wddx_module_ptr NULL - -#endif /* HAVE_WDDX */ - -#define phpext_wddx_ptr wddx_module_ptr - -#endif /* !PHP_WDDX_H */ diff --git a/ext/wddx/php_wddx_api.h b/ext/wddx/php_wddx_api.h deleted file mode 100644 index d980d7f645..0000000000 --- a/ext/wddx/php_wddx_api.h +++ /dev/null @@ -1,65 +0,0 @@ -/* - +----------------------------------------------------------------------+ - | PHP Version 7 | - +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | - +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | http://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | - +----------------------------------------------------------------------+ - | Author: Andrei Zmievski <andrei@ispi.net> | - +----------------------------------------------------------------------+ - */ - -#ifndef PHP_WDDX_API_H -#define PHP_WDDX_API_H - -#include "zend_smart_str_public.h" - -#define WDDX_ARRAY_S "<array length='%d'>" -#define WDDX_ARRAY_E "</array>" -#define WDDX_BINARY_S "<binary>" -#define WDDX_BINARY_E "</binary>" -#define WDDX_BOOLEAN_TRUE "<boolean value='true'/>" -#define WDDX_BOOLEAN_FALSE "<boolean value='false'/>" -#define WDDX_CHAR "<char code='%02X'/>" -#define WDDX_COMMENT_S "<comment>" -#define WDDX_COMMENT_E "</comment>" -#define WDDX_DATA_S "<data>" -#define WDDX_DATA_E "</data>" -#define WDDX_HEADER "<header/>" -#define WDDX_HEADER_S "<header>" -#define WDDX_HEADER_E "</header>" -#define WDDX_NULL "<null/>" -#define WDDX_NUMBER "<number>%s</number>" -#define WDDX_PACKET_S "<wddxPacket version='1.0'>" -#define WDDX_PACKET_E "</wddxPacket>" -#define WDDX_STRING_S "<string>" -#define WDDX_STRING_E "</string>" -#define WDDX_STRUCT_S "<struct>" -#define WDDX_STRUCT_E "</struct>" -#define WDDX_VAR_S "<var name='%s'>" -#define WDDX_VAR_E "</var>" - -#define php_wddx_add_chunk(packet, str) smart_str_appends(packet, str) -#define php_wddx_add_chunk_ex(packet, str, len) smart_str_appendl(packet, str, len) -#define php_wddx_add_chunk_static(packet, str) smart_str_appendl(packet, str, sizeof(str)-1) - -typedef smart_str wddx_packet; - -wddx_packet* php_wddx_constructor(void); -void php_wddx_destructor(wddx_packet *packet); - -void php_wddx_packet_start(wddx_packet *packet, char *comment, size_t comment_len); -void php_wddx_packet_end(wddx_packet *packet); - -void php_wddx_serialize_var(wddx_packet *packet, zval *var, zend_string *name); -int php_wddx_deserialize_ex(const char *, size_t, zval *return_value); -#define php_wddx_gather(packet) estrndup(packet->c, packet->len) - -#endif /* PHP_WDDX_API_H */ diff --git a/ext/wddx/tests/001-64bit.phpt b/ext/wddx/tests/001-64bit.phpt deleted file mode 100644 index c0cd49c835..0000000000 --- a/ext/wddx/tests/001-64bit.phpt +++ /dev/null @@ -1,63 +0,0 @@ ---TEST-- -wddx deserialization test (64-bit) ---SKIPIF-- -<?php if (!extension_loaded("wddx")) print "skip"; ?> -<?php echo PHP_INT_SIZE != 8 ? "skip 64-bit only" : "OK" ?> ---INI-- -precision=14 ---FILE-- -<?php - $path = __DIR__; - var_dump(wddx_deserialize(file_get_contents("{$path}/wddx.xml"))); -?> ---EXPECTF-- -Deprecated: Function wddx_deserialize() is deprecated in %s on line %d -array(11) { - ["aNull"]=> - NULL - ["aString"]=> - string(8) "a string" - ["aNumber"]=> - float(-12.456) - ["aDateTime"]=> - int(897625932) - ["aDateTime2"]=> - int(329632332) - ["aDateTime3"]=> - int(2223088332) - ["aBoolean"]=> - bool(true) - ["anArray"]=> - array(2) { - [0]=> - int(10) - [1]=> - string(14) "second element" - } - ["aBinary"]=> - string(11) "binary data" - ["anObject"]=> - array(2) { - ["s"]=> - string(8) "a string" - ["n"]=> - float(-12.456) - } - ["aRecordset"]=> - array(2) { - ["NAME"]=> - array(2) { - [0]=> - string(8) "John Doe" - [1]=> - string(8) "Jane Doe" - } - ["AGE"]=> - array(2) { - [0]=> - int(34) - [1]=> - int(31) - } - } -} diff --git a/ext/wddx/tests/001.phpt b/ext/wddx/tests/001.phpt deleted file mode 100644 index a38d7d12cb..0000000000 --- a/ext/wddx/tests/001.phpt +++ /dev/null @@ -1,63 +0,0 @@ ---TEST-- -wddx deserialization test (32-bit) ---SKIPIF-- -<?php if (!extension_loaded("wddx")) print "skip"; ?> -<?php echo PHP_INT_SIZE == 8 ? "skip 32-bit only" : "OK" ?> ---INI-- -precision=14 ---FILE-- -<?php - $path = __DIR__; - var_dump(wddx_deserialize(file_get_contents("{$path}/wddx.xml"))); -?> ---EXPECTF-- -Deprecated: Function wddx_deserialize() is deprecated in %s on line %d -array(11) { - ["aNull"]=> - NULL - ["aString"]=> - string(8) "a string" - ["aNumber"]=> - float(-12.456) - ["aDateTime"]=> - int(897625932) - ["aDateTime2"]=> - int(329632332) - ["aDateTime3"]=> - string(22) "2040-06-12T04:32:12+00" - ["aBoolean"]=> - bool(true) - ["anArray"]=> - array(2) { - [0]=> - int(10) - [1]=> - string(14) "second element" - } - ["aBinary"]=> - string(11) "binary data" - ["anObject"]=> - array(2) { - ["s"]=> - string(8) "a string" - ["n"]=> - float(-12.456) - } - ["aRecordset"]=> - array(2) { - ["NAME"]=> - array(2) { - [0]=> - string(8) "John Doe" - [1]=> - string(8) "Jane Doe" - } - ["AGE"]=> - array(2) { - [0]=> - int(34) - [1]=> - int(31) - } - } -} diff --git a/ext/wddx/tests/002.phpt b/ext/wddx/tests/002.phpt deleted file mode 100644 index 1783cbea7b..0000000000 --- a/ext/wddx/tests/002.phpt +++ /dev/null @@ -1,26 +0,0 @@ ---TEST-- -wddx packet construction using wddx ressource ---SKIPIF-- -<?php if (!extension_loaded("wddx")) print "skip"; ?> ---INI-- -precision=14 ---FILE-- -<?php - $pkt = wddx_packet_start('TEST comment'); - - $var1 = NULL; - $var2 = 'some string'; - $var3 = 756; - $var4 = true; - - // add vars to packet - wddx_add_vars($pkt, 'var1', 'var2', array('var3', 'var4')); - echo wddx_packet_end($pkt); -?> ---EXPECTF-- -Deprecated: Function wddx_packet_start() is deprecated in %s on line %d - -Deprecated: Function wddx_add_vars() is deprecated in %s on line %d - -Deprecated: Function wddx_packet_end() is deprecated in %s on line %d -<wddxPacket version='1.0'><header><comment>TEST comment</comment></header><data><struct><var name='var1'><null/></var><var name='var2'><string>some string</string></var><var name='var3'><number>756</number></var><var name='var4'><boolean value='true'/></var></struct></data></wddxPacket> diff --git a/ext/wddx/tests/003.phpt b/ext/wddx/tests/003.phpt deleted file mode 100644 index b9155b1ae1..0000000000 --- a/ext/wddx/tests/003.phpt +++ /dev/null @@ -1,27 +0,0 @@ ---TEST-- -wddx deserialize from ressource ---SKIPIF-- -<?php if (!extension_loaded("wddx")) print "skip"; ?> ---INI-- -precision=14 ---FILE-- -<?php - $path = __DIR__; - $fp = fopen("php://temp", 'w+'); - fputs($fp, "<wddxPacket version='1.0'><header><comment>TEST comment</comment></header><data><struct><var name='var1'><null/></var><var name='var2'><string>some string</string></var><var name='var3'><number>756</number></var><var name='var4'><boolean value='true'/></var></struct></data></wddxPacket>"); - rewind($fp); - var_dump(wddx_deserialize($fp)); - fclose($fp); -?> ---EXPECTF-- -Deprecated: Function wddx_deserialize() is deprecated in %s on line %d -array(4) { - ["var1"]=> - NULL - ["var2"]=> - string(11) "some string" - ["var3"]=> - int(756) - ["var4"]=> - bool(true) -} diff --git a/ext/wddx/tests/004.phpt b/ext/wddx/tests/004.phpt deleted file mode 100644 index ae5a6b4bd5..0000000000 --- a/ext/wddx/tests/004.phpt +++ /dev/null @@ -1,63 +0,0 @@ ---TEST-- -wddx session serializer handler (serialize) ---SKIPIF-- -<?php - if (!extension_loaded("wddx")) die("skip Wddx module not loaded"); - if (!extension_loaded('session')) die('skip Session module not enabled'); - - // following test code stolen from ext/session/skipif.inc - $save_path = ini_get("session.save_path"); - if ($save_path) { - if (!file_exists($save_path)) { - die("skip Session save_path doesn't exist"); - } - - if ($save_path && !@is_writable($save_path)) { - if (($p = strpos($save_path, ';')) !== false) { - $save_path = substr($save_path, ++$p); - } - if (!@is_writable($save_path)) { - die("skip\n"); - } - } - } -?> ---INI-- -precision=14 -session.serialize_handler=wddx -session.use_cookies=0 -session.cache_limiter= -session.save_handler=files ---FILE-- -<?php - class foo { - public $bar = "ok"; - public $invisible = 'you don\'t see me!'; - - function method() { $this->yes = "done"; } - - public function __sleep() { return array('bar', 'yes'); } - } - - session_start(); - - $_SESSION['data'] = array( - 'test1' => true, - 'test2' => 'some string', - 'test3' => 654321, - 'test4' => array( - 'some string', - true, - null - ), - ); - - $_SESSION['class'] = new foo(); - $_SESSION['class']->method(); - - var_dump(session_encode()); - - session_destroy(); -?> ---EXPECT-- -string(550) "<wddxPacket version='1.0'><header/><data><struct><var name='data'><struct><var name='test1'><boolean value='true'/></var><var name='test2'><string>some string</string></var><var name='test3'><number>654321</number></var><var name='test4'><array length='3'><string>some string</string><boolean value='true'/><null/></array></var></struct></var><var name='class'><struct><var name='php_class_name'><string>foo</string></var><var name='bar'><string>ok</string></var><var name='yes'><string>done</string></var></struct></var></struct></data></wddxPacket>" diff --git a/ext/wddx/tests/005.phpt b/ext/wddx/tests/005.phpt deleted file mode 100644 index 99e7a9e31f..0000000000 --- a/ext/wddx/tests/005.phpt +++ /dev/null @@ -1,74 +0,0 @@ ---TEST-- -wddx session serializer handler (deserialize) ---SKIPIF-- -<?php - if (!extension_loaded("wddx")) die("skip Wddx module not loaded"); - if (!extension_loaded('session')) die('skip Session module not enabled'); - - // following test code stolen from ext/session/skipif.inc - $save_path = ini_get("session.save_path"); - if ($save_path) { - if (!file_exists($save_path)) { - die("skip Session save_path doesn't exist"); - } - - if ($save_path && !@is_writable($save_path)) { - if (($p = strpos($save_path, ';')) !== false) { - $save_path = substr($save_path, ++$p); - } - if (!@is_writable($save_path)) { - die("skip\n"); - } - } - } -?> ---INI-- -precision=14 -session.serialize_handler=wddx -session.use_cookies=0 -session.cache_limiter= -session.save_handler=files ---FILE-- -<?php - class foo { - public $bar = "ok"; - - function method() { $this->yes = "done"; } - } - - session_start(); - - session_decode("<wddxPacket version='1.0'><header/><data><struct><var name='data'><struct><var name='test1'><boolean value='true'/></var><var name='test2'><string>some string</string></var><var name='test3'><number>654321</number></var><var name='test4'><array length='3'><string>some string</string><boolean value='true'/><null/></array></var></struct></var><var name='class'><struct><var name='php_class_name'><string>foo</string></var><var name='bar'><string>ok</string></var><var name='yes'><string>done</string></var></struct></var></struct></data></wddxPacket>"); - - var_dump($_SESSION); - - session_destroy(); -?> ---EXPECT-- -array(2) { - ["data"]=> - array(4) { - ["test1"]=> - bool(true) - ["test2"]=> - string(11) "some string" - ["test3"]=> - int(654321) - ["test4"]=> - array(3) { - [0]=> - string(11) "some string" - [1]=> - bool(true) - [2]=> - NULL - } - } - ["class"]=> - object(foo)#1 (2) { - ["bar"]=> - string(2) "ok" - ["yes"]=> - string(4) "done" - } -} diff --git a/ext/wddx/tests/bug27287.phpt b/ext/wddx/tests/bug27287.phpt deleted file mode 100644 index 823aa10f3d..0000000000 --- a/ext/wddx/tests/bug27287.phpt +++ /dev/null @@ -1,23 +0,0 @@ ---TEST-- -Bug #27287 (segfault with deserializing object data) ---SKIPIF-- -<?php if (!extension_loaded("wddx")) print "skip"; ?> ---FILE-- -<?php - - class foo { - } - $foo = new foo(); - $foo->abc = 'def'; - - $string = wddx_serialize_value($foo); - $bar = wddx_deserialize($string); - - echo "OK\n"; - -?> ---EXPECTF-- -Deprecated: Function wddx_serialize_value() is deprecated in %s on line %d - -Deprecated: Function wddx_deserialize() is deprecated in %s on line %d -OK diff --git a/ext/wddx/tests/bug34306.phpt b/ext/wddx/tests/bug34306.phpt deleted file mode 100644 index a7247d5c07..0000000000 --- a/ext/wddx/tests/bug34306.phpt +++ /dev/null @@ -1,15 +0,0 @@ ---TEST-- -#34306 (wddx_serialize_value() crashes with long array keys) ---SKIPIF-- -<?php if (!extension_loaded("wddx")) print "skip"; ?> ---FILE-- -<?php - -$var = array('aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa12345678901234567890123456789012345678901234567890ba12345678901234567890123456789012345678901234567890ba12345678901234567890123456789012345678901234567890ba12345678901234567890123456789012345678901234567890b12345678901234567891234567890123123121231211111' => 1); -$buf = wddx_serialize_value($var, 'name'); -echo "OK\n"; - -?> ---EXPECTF-- -Deprecated: Function wddx_serialize_value() is deprecated in %s on line %d -OK diff --git a/ext/wddx/tests/bug35410.phpt b/ext/wddx/tests/bug35410.phpt deleted file mode 100644 index 2100c8a38e..0000000000 --- a/ext/wddx/tests/bug35410.phpt +++ /dev/null @@ -1,77 +0,0 @@ ---TEST-- -#35410 (wddx_deserialize() doesn't handle large ints as keys properly) ---SKIPIF-- -<?php - if (!extension_loaded("wddx")) print "skip"; - if (PHP_INT_SIZE != 4) die("skip this test is for 32bit platform only"); -?> ---FILE-- -<?php -$wddx = <<<WDX -<wddxpacket version="1.0"> -<header> -<comment>Content Configuration File</comment> -</header> -<data> -<struct> -<var name="content_queries"> -<struct> -<var name="content_113300831086270200"> -<struct> -<var name="113301888545229100"> -<struct> -<var name="max"> -<number>10</number> -</var> -<var name="cache"> -<number>4</number> -</var> -<var name="order"> -<struct> -<var name="content_113300831086270200"> -<struct> -<var name="CMS_BUILD"> -<string>desc</string> -</var> -</struct> -</var> -</struct> -</var> -</struct> -</var> -</struct> -</var> -</struct> -</var> -</struct> -</data> -</wddxpacket> -WDX; - -var_dump(wddx_deserialize($wddx)); -?> ---EXPECTF-- -Deprecated: Function wddx_deserialize() is deprecated in %s on line %d -array(1) { - ["content_queries"]=> - array(1) { - ["content_113300831086270200"]=> - array(1) { - ["113301888545229100"]=> - array(3) { - ["max"]=> - int(10) - ["cache"]=> - int(4) - ["order"]=> - array(1) { - ["content_113300831086270200"]=> - array(1) { - ["CMS_BUILD"]=> - string(4) "desc" - } - } - } - } - } -} diff --git a/ext/wddx/tests/bug35410_64bit.phpt b/ext/wddx/tests/bug35410_64bit.phpt deleted file mode 100644 index ffe4e08188..0000000000 --- a/ext/wddx/tests/bug35410_64bit.phpt +++ /dev/null @@ -1,77 +0,0 @@ ---TEST-- -#35410 (wddx_deserialize() doesn't handle large ints as keys properly) ---SKIPIF-- -<?php - if (!extension_loaded("wddx")) print "skip"; - if (PHP_INT_SIZE != 8) die("skip this test is for 64bit platform only"); -?> ---FILE-- -<?php -$wddx = <<<WDX -<wddxpacket version="1.0"> -<header> -<comment>Content Configuration File</comment> -</header> -<data> -<struct> -<var name="content_queries"> -<struct> -<var name="content_113300831086270200"> -<struct> -<var name="113301888545229100"> -<struct> -<var name="max"> -<number>10</number> -</var> -<var name="cache"> -<number>4</number> -</var> -<var name="order"> -<struct> -<var name="content_113300831086270200"> -<struct> -<var name="CMS_BUILD"> -<string>desc</string> -</var> -</struct> -</var> -</struct> -</var> -</struct> -</var> -</struct> -</var> -</struct> -</var> -</struct> -</data> -</wddxpacket> -WDX; - -var_dump(wddx_deserialize($wddx)); -?> ---EXPECTF-- -Deprecated: Function wddx_deserialize() is deprecated in %s on line %d -array(1) { - ["content_queries"]=> - array(1) { - ["content_113300831086270200"]=> - array(1) { - [113301888545229100]=> - array(3) { - ["max"]=> - int(10) - ["cache"]=> - int(4) - ["order"]=> - array(1) { - ["content_113300831086270200"]=> - array(1) { - ["CMS_BUILD"]=> - string(4) "desc" - } - } - } - } - } -} diff --git a/ext/wddx/tests/bug37569.phpt b/ext/wddx/tests/bug37569.phpt deleted file mode 100644 index 7099f9669a..0000000000 --- a/ext/wddx/tests/bug37569.phpt +++ /dev/null @@ -1,786 +0,0 @@ ---TEST-- -Bug #37569 (WDDX incorrectly encodes high-ascii characters) ---SKIPIF-- -<?php if (!extension_loaded("wddx")) print "skip"; ?> ---INI-- -error_reporting=E_ALL & ~E_DEPRECATED ---FILE-- -<?php -for ($i = 65; $i < 256; $i++) { - if ($i >= 0xc0) { - $v = chr(0xc3) . chr($i - 64); - } elseif ($i >= 0x80) { - $v = chr(0xc2) . chr($i); - } else { - $v = chr($i); // make it UTF-8 - } - $ret = wddx_serialize_value($v); - echo $ret . "\n"; - var_dump(bin2hex($v), bin2hex(wddx_deserialize($ret)), $v == wddx_deserialize($ret)); -} -?> ---EXPECT-- -<wddxPacket version='1.0'><header/><data><string>A</string></data></wddxPacket> -string(2) "41" -string(2) "41" -bool(true) -<wddxPacket version='1.0'><header/><data><string>B</string></data></wddxPacket> -string(2) "42" -string(2) "42" -bool(true) -<wddxPacket version='1.0'><header/><data><string>C</string></data></wddxPacket> -string(2) "43" -string(2) "43" -bool(true) -<wddxPacket version='1.0'><header/><data><string>D</string></data></wddxPacket> -string(2) "44" -string(2) "44" -bool(true) -<wddxPacket version='1.0'><header/><data><string>E</string></data></wddxPacket> -string(2) "45" -string(2) "45" -bool(true) -<wddxPacket version='1.0'><header/><data><string>F</string></data></wddxPacket> -string(2) "46" -string(2) "46" -bool(true) -<wddxPacket version='1.0'><header/><data><string>G</string></data></wddxPacket> -string(2) "47" -string(2) "47" -bool(true) -<wddxPacket version='1.0'><header/><data><string>H</string></data></wddxPacket> -string(2) "48" -string(2) "48" -bool(true) -<wddxPacket version='1.0'><header/><data><string>I</string></data></wddxPacket> -string(2) "49" -string(2) "49" -bool(true) -<wddxPacket version='1.0'><header/><data><string>J</string></data></wddxPacket> -string(2) "4a" -string(2) "4a" -bool(true) -<wddxPacket version='1.0'><header/><data><string>K</string></data></wddxPacket> -string(2) "4b" -string(2) "4b" -bool(true) -<wddxPacket version='1.0'><header/><data><string>L</string></data></wddxPacket> -string(2) "4c" -string(2) "4c" -bool(true) -<wddxPacket version='1.0'><header/><data><string>M</string></data></wddxPacket> -string(2) "4d" -string(2) "4d" -bool(true) -<wddxPacket version='1.0'><header/><data><string>N</string></data></wddxPacket> -string(2) "4e" -string(2) "4e" -bool(true) -<wddxPacket version='1.0'><header/><data><string>O</string></data></wddxPacket> -string(2) "4f" -string(2) "4f" -bool(true) -<wddxPacket version='1.0'><header/><data><string>P</string></data></wddxPacket> -string(2) "50" -string(2) "50" -bool(true) -<wddxPacket version='1.0'><header/><data><string>Q</string></data></wddxPacket> -string(2) "51" -string(2) "51" -bool(true) -<wddxPacket version='1.0'><header/><data><string>R</string></data></wddxPacket> -string(2) "52" -string(2) "52" -bool(true) -<wddxPacket version='1.0'><header/><data><string>S</string></data></wddxPacket> -string(2) "53" -string(2) "53" -bool(true) -<wddxPacket version='1.0'><header/><data><string>T</string></data></wddxPacket> -string(2) "54" -string(2) "54" -bool(true) -<wddxPacket version='1.0'><header/><data><string>U</string></data></wddxPacket> -string(2) "55" -string(2) "55" -bool(true) -<wddxPacket version='1.0'><header/><data><string>V</string></data></wddxPacket> -string(2) "56" -string(2) "56" -bool(true) -<wddxPacket version='1.0'><header/><data><string>W</string></data></wddxPacket> -string(2) "57" -string(2) "57" -bool(true) -<wddxPacket version='1.0'><header/><data><string>X</string></data></wddxPacket> -string(2) "58" -string(2) "58" -bool(true) -<wddxPacket version='1.0'><header/><data><string>Y</string></data></wddxPacket> -string(2) "59" -string(2) "59" -bool(true) -<wddxPacket version='1.0'><header/><data><string>Z</string></data></wddxPacket> -string(2) "5a" -string(2) "5a" -bool(true) -<wddxPacket version='1.0'><header/><data><string>[</string></data></wddxPacket> -string(2) "5b" -string(2) "5b" -bool(true) -<wddxPacket version='1.0'><header/><data><string>\</string></data></wddxPacket> -string(2) "5c" -string(2) "5c" -bool(true) -<wddxPacket version='1.0'><header/><data><string>]</string></data></wddxPacket> -string(2) "5d" -string(2) "5d" -bool(true) -<wddxPacket version='1.0'><header/><data><string>^</string></data></wddxPacket> -string(2) "5e" -string(2) "5e" -bool(true) -<wddxPacket version='1.0'><header/><data><string>_</string></data></wddxPacket> -string(2) "5f" -string(2) "5f" -bool(true) -<wddxPacket version='1.0'><header/><data><string>`</string></data></wddxPacket> -string(2) "60" -string(2) "60" -bool(true) -<wddxPacket version='1.0'><header/><data><string>a</string></data></wddxPacket> -string(2) "61" -string(2) "61" -bool(true) -<wddxPacket version='1.0'><header/><data><string>b</string></data></wddxPacket> -string(2) "62" -string(2) "62" -bool(true) -<wddxPacket version='1.0'><header/><data><string>c</string></data></wddxPacket> -string(2) "63" -string(2) "63" -bool(true) -<wddxPacket version='1.0'><header/><data><string>d</string></data></wddxPacket> -string(2) "64" -string(2) "64" -bool(true) -<wddxPacket version='1.0'><header/><data><string>e</string></data></wddxPacket> -string(2) "65" -string(2) "65" -bool(true) -<wddxPacket version='1.0'><header/><data><string>f</string></data></wddxPacket> -string(2) "66" -string(2) "66" -bool(true) -<wddxPacket version='1.0'><header/><data><string>g</string></data></wddxPacket> -string(2) "67" -string(2) "67" -bool(true) -<wddxPacket version='1.0'><header/><data><string>h</string></data></wddxPacket> -string(2) "68" -string(2) "68" -bool(true) -<wddxPacket version='1.0'><header/><data><string>i</string></data></wddxPacket> -string(2) "69" -string(2) "69" -bool(true) -<wddxPacket version='1.0'><header/><data><string>j</string></data></wddxPacket> -string(2) "6a" -string(2) "6a" -bool(true) -<wddxPacket version='1.0'><header/><data><string>k</string></data></wddxPacket> -string(2) "6b" -string(2) "6b" -bool(true) -<wddxPacket version='1.0'><header/><data><string>l</string></data></wddxPacket> -string(2) "6c" -string(2) "6c" -bool(true) -<wddxPacket version='1.0'><header/><data><string>m</string></data></wddxPacket> -string(2) "6d" -string(2) "6d" -bool(true) -<wddxPacket version='1.0'><header/><data><string>n</string></data></wddxPacket> -string(2) "6e" -string(2) "6e" -bool(true) -<wddxPacket version='1.0'><header/><data><string>o</string></data></wddxPacket> -string(2) "6f" -string(2) "6f" -bool(true) -<wddxPacket version='1.0'><header/><data><string>p</string></data></wddxPacket> -string(2) "70" -string(2) "70" -bool(true) -<wddxPacket version='1.0'><header/><data><string>q</string></data></wddxPacket> -string(2) "71" -string(2) "71" -bool(true) -<wddxPacket version='1.0'><header/><data><string>r</string></data></wddxPacket> -string(2) "72" -string(2) "72" -bool(true) -<wddxPacket version='1.0'><header/><data><string>s</string></data></wddxPacket> -string(2) "73" -string(2) "73" -bool(true) -<wddxPacket version='1.0'><header/><data><string>t</string></data></wddxPacket> -string(2) "74" -string(2) "74" -bool(true) -<wddxPacket version='1.0'><header/><data><string>u</string></data></wddxPacket> -string(2) "75" -string(2) "75" -bool(true) -<wddxPacket version='1.0'><header/><data><string>v</string></data></wddxPacket> -string(2) "76" -string(2) "76" -bool(true) -<wddxPacket version='1.0'><header/><data><string>w</string></data></wddxPacket> -string(2) "77" -string(2) "77" -bool(true) -<wddxPacket version='1.0'><header/><data><string>x</string></data></wddxPacket> -string(2) "78" -string(2) "78" -bool(true) -<wddxPacket version='1.0'><header/><data><string>y</string></data></wddxPacket> -string(2) "79" -string(2) "79" -bool(true) -<wddxPacket version='1.0'><header/><data><string>z</string></data></wddxPacket> -string(2) "7a" -string(2) "7a" -bool(true) -<wddxPacket version='1.0'><header/><data><string>{</string></data></wddxPacket> -string(2) "7b" -string(2) "7b" -bool(true) -<wddxPacket version='1.0'><header/><data><string>|</string></data></wddxPacket> -string(2) "7c" -string(2) "7c" -bool(true) -<wddxPacket version='1.0'><header/><data><string>}</string></data></wddxPacket> -string(2) "7d" -string(2) "7d" -bool(true) -<wddxPacket version='1.0'><header/><data><string>~</string></data></wddxPacket> -string(2) "7e" -string(2) "7e" -bool(true) -<wddxPacket version='1.0'><header/><data><string></string></data></wddxPacket> -string(2) "7f" -string(2) "7f" -bool(true) -<wddxPacket version='1.0'><header/><data><string>€</string></data></wddxPacket> -string(4) "c280" -string(4) "c280" -bool(true) -<wddxPacket version='1.0'><header/><data><string>Â</string></data></wddxPacket> -string(4) "c281" -string(4) "c281" -bool(true) -<wddxPacket version='1.0'><header/><data><string>‚</string></data></wddxPacket> -string(4) "c282" -string(4) "c282" -bool(true) -<wddxPacket version='1.0'><header/><data><string>ƒ</string></data></wddxPacket> -string(4) "c283" -string(4) "c283" -bool(true) -<wddxPacket version='1.0'><header/><data><string>„</string></data></wddxPacket> -string(4) "c284" -string(4) "c284" -bool(true) -<wddxPacket version='1.0'><header/><data><string>Â…</string></data></wddxPacket> -string(4) "c285" -string(4) "c285" -bool(true) -<wddxPacket version='1.0'><header/><data><string>†</string></data></wddxPacket> -string(4) "c286" -string(4) "c286" -bool(true) -<wddxPacket version='1.0'><header/><data><string>‡</string></data></wddxPacket> -string(4) "c287" -string(4) "c287" -bool(true) -<wddxPacket version='1.0'><header/><data><string>ˆ</string></data></wddxPacket> -string(4) "c288" -string(4) "c288" -bool(true) -<wddxPacket version='1.0'><header/><data><string>‰</string></data></wddxPacket> -string(4) "c289" -string(4) "c289" -bool(true) -<wddxPacket version='1.0'><header/><data><string>Š</string></data></wddxPacket> -string(4) "c28a" -string(4) "c28a" -bool(true) -<wddxPacket version='1.0'><header/><data><string>‹</string></data></wddxPacket> -string(4) "c28b" -string(4) "c28b" -bool(true) -<wddxPacket version='1.0'><header/><data><string>ÂŒ</string></data></wddxPacket> -string(4) "c28c" -string(4) "c28c" -bool(true) -<wddxPacket version='1.0'><header/><data><string>Â</string></data></wddxPacket> -string(4) "c28d" -string(4) "c28d" -bool(true) -<wddxPacket version='1.0'><header/><data><string>ÂŽ</string></data></wddxPacket> -string(4) "c28e" -string(4) "c28e" -bool(true) -<wddxPacket version='1.0'><header/><data><string>Â</string></data></wddxPacket> -string(4) "c28f" -string(4) "c28f" -bool(true) -<wddxPacket version='1.0'><header/><data><string>Â</string></data></wddxPacket> -string(4) "c290" -string(4) "c290" -bool(true) -<wddxPacket version='1.0'><header/><data><string>‘</string></data></wddxPacket> -string(4) "c291" -string(4) "c291" -bool(true) -<wddxPacket version='1.0'><header/><data><string>Â’</string></data></wddxPacket> -string(4) "c292" -string(4) "c292" -bool(true) -<wddxPacket version='1.0'><header/><data><string>“</string></data></wddxPacket> -string(4) "c293" -string(4) "c293" -bool(true) -<wddxPacket version='1.0'><header/><data><string>”</string></data></wddxPacket> -string(4) "c294" -string(4) "c294" -bool(true) -<wddxPacket version='1.0'><header/><data><string>•</string></data></wddxPacket> -string(4) "c295" -string(4) "c295" -bool(true) -<wddxPacket version='1.0'><header/><data><string>–</string></data></wddxPacket> -string(4) "c296" -string(4) "c296" -bool(true) -<wddxPacket version='1.0'><header/><data><string>—</string></data></wddxPacket> -string(4) "c297" -string(4) "c297" -bool(true) -<wddxPacket version='1.0'><header/><data><string>˜</string></data></wddxPacket> -string(4) "c298" -string(4) "c298" -bool(true) -<wddxPacket version='1.0'><header/><data><string>™</string></data></wddxPacket> -string(4) "c299" -string(4) "c299" -bool(true) -<wddxPacket version='1.0'><header/><data><string>š</string></data></wddxPacket> -string(4) "c29a" -string(4) "c29a" -bool(true) -<wddxPacket version='1.0'><header/><data><string>›</string></data></wddxPacket> -string(4) "c29b" -string(4) "c29b" -bool(true) -<wddxPacket version='1.0'><header/><data><string>Âœ</string></data></wddxPacket> -string(4) "c29c" -string(4) "c29c" -bool(true) -<wddxPacket version='1.0'><header/><data><string>Â</string></data></wddxPacket> -string(4) "c29d" -string(4) "c29d" -bool(true) -<wddxPacket version='1.0'><header/><data><string>ž</string></data></wddxPacket> -string(4) "c29e" -string(4) "c29e" -bool(true) -<wddxPacket version='1.0'><header/><data><string>Ÿ</string></data></wddxPacket> -string(4) "c29f" -string(4) "c29f" -bool(true) -<wddxPacket version='1.0'><header/><data><string> </string></data></wddxPacket> -string(4) "c2a0" -string(4) "c2a0" -bool(true) -<wddxPacket version='1.0'><header/><data><string>¡</string></data></wddxPacket> -string(4) "c2a1" -string(4) "c2a1" -bool(true) -<wddxPacket version='1.0'><header/><data><string>¢</string></data></wddxPacket> -string(4) "c2a2" -string(4) "c2a2" -bool(true) -<wddxPacket version='1.0'><header/><data><string>£</string></data></wddxPacket> -string(4) "c2a3" -string(4) "c2a3" -bool(true) -<wddxPacket version='1.0'><header/><data><string>¤</string></data></wddxPacket> -string(4) "c2a4" -string(4) "c2a4" -bool(true) -<wddxPacket version='1.0'><header/><data><string>Â¥</string></data></wddxPacket> -string(4) "c2a5" -string(4) "c2a5" -bool(true) -<wddxPacket version='1.0'><header/><data><string>¦</string></data></wddxPacket> -string(4) "c2a6" -string(4) "c2a6" -bool(true) -<wddxPacket version='1.0'><header/><data><string>§</string></data></wddxPacket> -string(4) "c2a7" -string(4) "c2a7" -bool(true) -<wddxPacket version='1.0'><header/><data><string>¨</string></data></wddxPacket> -string(4) "c2a8" -string(4) "c2a8" -bool(true) -<wddxPacket version='1.0'><header/><data><string>©</string></data></wddxPacket> -string(4) "c2a9" -string(4) "c2a9" -bool(true) -<wddxPacket version='1.0'><header/><data><string>ª</string></data></wddxPacket> -string(4) "c2aa" -string(4) "c2aa" -bool(true) -<wddxPacket version='1.0'><header/><data><string>«</string></data></wddxPacket> -string(4) "c2ab" -string(4) "c2ab" -bool(true) -<wddxPacket version='1.0'><header/><data><string>¬</string></data></wddxPacket> -string(4) "c2ac" -string(4) "c2ac" -bool(true) -<wddxPacket version='1.0'><header/><data><string>Â</string></data></wddxPacket> -string(4) "c2ad" -string(4) "c2ad" -bool(true) -<wddxPacket version='1.0'><header/><data><string>®</string></data></wddxPacket> -string(4) "c2ae" -string(4) "c2ae" -bool(true) -<wddxPacket version='1.0'><header/><data><string>¯</string></data></wddxPacket> -string(4) "c2af" -string(4) "c2af" -bool(true) -<wddxPacket version='1.0'><header/><data><string>°</string></data></wddxPacket> -string(4) "c2b0" -string(4) "c2b0" -bool(true) -<wddxPacket version='1.0'><header/><data><string>±</string></data></wddxPacket> -string(4) "c2b1" -string(4) "c2b1" -bool(true) -<wddxPacket version='1.0'><header/><data><string>²</string></data></wddxPacket> -string(4) "c2b2" -string(4) "c2b2" -bool(true) -<wddxPacket version='1.0'><header/><data><string>³</string></data></wddxPacket> -string(4) "c2b3" -string(4) "c2b3" -bool(true) -<wddxPacket version='1.0'><header/><data><string>´</string></data></wddxPacket> -string(4) "c2b4" -string(4) "c2b4" -bool(true) -<wddxPacket version='1.0'><header/><data><string>µ</string></data></wddxPacket> -string(4) "c2b5" -string(4) "c2b5" -bool(true) -<wddxPacket version='1.0'><header/><data><string>¶</string></data></wddxPacket> -string(4) "c2b6" -string(4) "c2b6" -bool(true) -<wddxPacket version='1.0'><header/><data><string>·</string></data></wddxPacket> -string(4) "c2b7" -string(4) "c2b7" -bool(true) -<wddxPacket version='1.0'><header/><data><string>¸</string></data></wddxPacket> -string(4) "c2b8" -string(4) "c2b8" -bool(true) -<wddxPacket version='1.0'><header/><data><string>¹</string></data></wddxPacket> -string(4) "c2b9" -string(4) "c2b9" -bool(true) -<wddxPacket version='1.0'><header/><data><string>º</string></data></wddxPacket> -string(4) "c2ba" -string(4) "c2ba" -bool(true) -<wddxPacket version='1.0'><header/><data><string>»</string></data></wddxPacket> -string(4) "c2bb" -string(4) "c2bb" -bool(true) -<wddxPacket version='1.0'><header/><data><string>¼</string></data></wddxPacket> -string(4) "c2bc" -string(4) "c2bc" -bool(true) -<wddxPacket version='1.0'><header/><data><string>½</string></data></wddxPacket> -string(4) "c2bd" -string(4) "c2bd" -bool(true) -<wddxPacket version='1.0'><header/><data><string>¾</string></data></wddxPacket> -string(4) "c2be" -string(4) "c2be" -bool(true) -<wddxPacket version='1.0'><header/><data><string>¿</string></data></wddxPacket> -string(4) "c2bf" -string(4) "c2bf" -bool(true) -<wddxPacket version='1.0'><header/><data><string>À</string></data></wddxPacket> -string(4) "c380" -string(4) "c380" -bool(true) -<wddxPacket version='1.0'><header/><data><string>Ã</string></data></wddxPacket> -string(4) "c381" -string(4) "c381" -bool(true) -<wddxPacket version='1.0'><header/><data><string>Â</string></data></wddxPacket> -string(4) "c382" -string(4) "c382" -bool(true) -<wddxPacket version='1.0'><header/><data><string>Ã</string></data></wddxPacket> -string(4) "c383" -string(4) "c383" -bool(true) -<wddxPacket version='1.0'><header/><data><string>Ä</string></data></wddxPacket> -string(4) "c384" -string(4) "c384" -bool(true) -<wddxPacket version='1.0'><header/><data><string>Ã…</string></data></wddxPacket> -string(4) "c385" -string(4) "c385" -bool(true) -<wddxPacket version='1.0'><header/><data><string>Æ</string></data></wddxPacket> -string(4) "c386" -string(4) "c386" -bool(true) -<wddxPacket version='1.0'><header/><data><string>Ç</string></data></wddxPacket> -string(4) "c387" -string(4) "c387" -bool(true) -<wddxPacket version='1.0'><header/><data><string>È</string></data></wddxPacket> -string(4) "c388" -string(4) "c388" -bool(true) -<wddxPacket version='1.0'><header/><data><string>É</string></data></wddxPacket> -string(4) "c389" -string(4) "c389" -bool(true) -<wddxPacket version='1.0'><header/><data><string>Ê</string></data></wddxPacket> -string(4) "c38a" -string(4) "c38a" -bool(true) -<wddxPacket version='1.0'><header/><data><string>Ë</string></data></wddxPacket> -string(4) "c38b" -string(4) "c38b" -bool(true) -<wddxPacket version='1.0'><header/><data><string>ÃŒ</string></data></wddxPacket> -string(4) "c38c" -string(4) "c38c" -bool(true) -<wddxPacket version='1.0'><header/><data><string>Ã</string></data></wddxPacket> -string(4) "c38d" -string(4) "c38d" -bool(true) -<wddxPacket version='1.0'><header/><data><string>ÃŽ</string></data></wddxPacket> -string(4) "c38e" -string(4) "c38e" -bool(true) -<wddxPacket version='1.0'><header/><data><string>Ã</string></data></wddxPacket> -string(4) "c38f" -string(4) "c38f" -bool(true) -<wddxPacket version='1.0'><header/><data><string>Ã</string></data></wddxPacket> -string(4) "c390" -string(4) "c390" -bool(true) -<wddxPacket version='1.0'><header/><data><string>Ñ</string></data></wddxPacket> -string(4) "c391" -string(4) "c391" -bool(true) -<wddxPacket version='1.0'><header/><data><string>Ã’</string></data></wddxPacket> -string(4) "c392" -string(4) "c392" -bool(true) -<wddxPacket version='1.0'><header/><data><string>Ó</string></data></wddxPacket> -string(4) "c393" -string(4) "c393" -bool(true) -<wddxPacket version='1.0'><header/><data><string>Ô</string></data></wddxPacket> -string(4) "c394" -string(4) "c394" -bool(true) -<wddxPacket version='1.0'><header/><data><string>Õ</string></data></wddxPacket> -string(4) "c395" -string(4) "c395" -bool(true) -<wddxPacket version='1.0'><header/><data><string>Ö</string></data></wddxPacket> -string(4) "c396" -string(4) "c396" -bool(true) -<wddxPacket version='1.0'><header/><data><string>×</string></data></wddxPacket> -string(4) "c397" -string(4) "c397" -bool(true) -<wddxPacket version='1.0'><header/><data><string>Ø</string></data></wddxPacket> -string(4) "c398" -string(4) "c398" -bool(true) -<wddxPacket version='1.0'><header/><data><string>Ù</string></data></wddxPacket> -string(4) "c399" -string(4) "c399" -bool(true) -<wddxPacket version='1.0'><header/><data><string>Ú</string></data></wddxPacket> -string(4) "c39a" -string(4) "c39a" -bool(true) -<wddxPacket version='1.0'><header/><data><string>Û</string></data></wddxPacket> -string(4) "c39b" -string(4) "c39b" -bool(true) -<wddxPacket version='1.0'><header/><data><string>Ãœ</string></data></wddxPacket> -string(4) "c39c" -string(4) "c39c" -bool(true) -<wddxPacket version='1.0'><header/><data><string>Ã</string></data></wddxPacket> -string(4) "c39d" -string(4) "c39d" -bool(true) -<wddxPacket version='1.0'><header/><data><string>Þ</string></data></wddxPacket> -string(4) "c39e" -string(4) "c39e" -bool(true) -<wddxPacket version='1.0'><header/><data><string>ß</string></data></wddxPacket> -string(4) "c39f" -string(4) "c39f" -bool(true) -<wddxPacket version='1.0'><header/><data><string>à </string></data></wddxPacket> -string(4) "c3a0" -string(4) "c3a0" -bool(true) -<wddxPacket version='1.0'><header/><data><string>á</string></data></wddxPacket> -string(4) "c3a1" -string(4) "c3a1" -bool(true) -<wddxPacket version='1.0'><header/><data><string>â</string></data></wddxPacket> -string(4) "c3a2" -string(4) "c3a2" -bool(true) -<wddxPacket version='1.0'><header/><data><string>ã</string></data></wddxPacket> -string(4) "c3a3" -string(4) "c3a3" -bool(true) -<wddxPacket version='1.0'><header/><data><string>ä</string></data></wddxPacket> -string(4) "c3a4" -string(4) "c3a4" -bool(true) -<wddxPacket version='1.0'><header/><data><string>Ã¥</string></data></wddxPacket> -string(4) "c3a5" -string(4) "c3a5" -bool(true) -<wddxPacket version='1.0'><header/><data><string>æ</string></data></wddxPacket> -string(4) "c3a6" -string(4) "c3a6" -bool(true) -<wddxPacket version='1.0'><header/><data><string>ç</string></data></wddxPacket> -string(4) "c3a7" -string(4) "c3a7" -bool(true) -<wddxPacket version='1.0'><header/><data><string>è</string></data></wddxPacket> -string(4) "c3a8" -string(4) "c3a8" -bool(true) -<wddxPacket version='1.0'><header/><data><string>é</string></data></wddxPacket> -string(4) "c3a9" -string(4) "c3a9" -bool(true) -<wddxPacket version='1.0'><header/><data><string>ê</string></data></wddxPacket> -string(4) "c3aa" -string(4) "c3aa" -bool(true) -<wddxPacket version='1.0'><header/><data><string>ë</string></data></wddxPacket> -string(4) "c3ab" -string(4) "c3ab" -bool(true) -<wddxPacket version='1.0'><header/><data><string>ì</string></data></wddxPacket> -string(4) "c3ac" -string(4) "c3ac" -bool(true) -<wddxPacket version='1.0'><header/><data><string>Ã</string></data></wddxPacket> -string(4) "c3ad" -string(4) "c3ad" -bool(true) -<wddxPacket version='1.0'><header/><data><string>î</string></data></wddxPacket> -string(4) "c3ae" -string(4) "c3ae" -bool(true) -<wddxPacket version='1.0'><header/><data><string>ï</string></data></wddxPacket> -string(4) "c3af" -string(4) "c3af" -bool(true) -<wddxPacket version='1.0'><header/><data><string>ð</string></data></wddxPacket> -string(4) "c3b0" -string(4) "c3b0" -bool(true) -<wddxPacket version='1.0'><header/><data><string>ñ</string></data></wddxPacket> -string(4) "c3b1" -string(4) "c3b1" -bool(true) -<wddxPacket version='1.0'><header/><data><string>ò</string></data></wddxPacket> -string(4) "c3b2" -string(4) "c3b2" -bool(true) -<wddxPacket version='1.0'><header/><data><string>ó</string></data></wddxPacket> -string(4) "c3b3" -string(4) "c3b3" -bool(true) -<wddxPacket version='1.0'><header/><data><string>ô</string></data></wddxPacket> -string(4) "c3b4" -string(4) "c3b4" -bool(true) -<wddxPacket version='1.0'><header/><data><string>õ</string></data></wddxPacket> -string(4) "c3b5" -string(4) "c3b5" -bool(true) -<wddxPacket version='1.0'><header/><data><string>ö</string></data></wddxPacket> -string(4) "c3b6" -string(4) "c3b6" -bool(true) -<wddxPacket version='1.0'><header/><data><string>÷</string></data></wddxPacket> -string(4) "c3b7" -string(4) "c3b7" -bool(true) -<wddxPacket version='1.0'><header/><data><string>ø</string></data></wddxPacket> -string(4) "c3b8" -string(4) "c3b8" -bool(true) -<wddxPacket version='1.0'><header/><data><string>ù</string></data></wddxPacket> -string(4) "c3b9" -string(4) "c3b9" -bool(true) -<wddxPacket version='1.0'><header/><data><string>ú</string></data></wddxPacket> -string(4) "c3ba" -string(4) "c3ba" -bool(true) -<wddxPacket version='1.0'><header/><data><string>û</string></data></wddxPacket> -string(4) "c3bb" -string(4) "c3bb" -bool(true) -<wddxPacket version='1.0'><header/><data><string>ü</string></data></wddxPacket> -string(4) "c3bc" -string(4) "c3bc" -bool(true) -<wddxPacket version='1.0'><header/><data><string>ý</string></data></wddxPacket> -string(4) "c3bd" -string(4) "c3bd" -bool(true) -<wddxPacket version='1.0'><header/><data><string>þ</string></data></wddxPacket> -string(4) "c3be" -string(4) "c3be" -bool(true) -<wddxPacket version='1.0'><header/><data><string>ÿ</string></data></wddxPacket> -string(4) "c3bf" -string(4) "c3bf" -bool(true) diff --git a/ext/wddx/tests/bug37587.phpt b/ext/wddx/tests/bug37587.phpt deleted file mode 100644 index e91e451238..0000000000 --- a/ext/wddx/tests/bug37587.phpt +++ /dev/null @@ -1,35 +0,0 @@ ---TEST-- -Bug #37587 (var without attribute causes segfault) ---SKIPIF-- -<?php if (!extension_loaded("wddx")) print "skip"; ?> ---FILE-- -<?php - -var_dump(wddx_deserialize(<<<EOF -<wddxPacket version='1.0'> -<header/> -<data> - <array length='1'> - <var> - <struct> - <var name='test'><string>Hello World</string></var> - </struct> - </var> - </array> -</data> -</wddxPacket> -EOF -)); - -?> -===DONE=== ---EXPECTF-- -Deprecated: Function wddx_deserialize() is deprecated in %s on line %d -array(1) { - [0]=> - array(1) { - ["test"]=> - string(11) "Hello World" - } -} -===DONE=== diff --git a/ext/wddx/tests/bug41283.phpt b/ext/wddx/tests/bug41283.phpt deleted file mode 100644 index 4a1f92b991..0000000000 --- a/ext/wddx/tests/bug41283.phpt +++ /dev/null @@ -1,30 +0,0 @@ ---TEST-- -Bug #41283 (Bug with serializing array key that are doubles or floats) ---SKIPIF-- -<?php if (!extension_loaded("wddx")) print "skip"; ?> ---FILE-- -<?php -$data = array( - 'somearray' => array('1.1' => 'One 1','1.2' => 'One 2', '1.0' => 'Three') -); - -var_dump(wddx_deserialize(wddx_serialize_vars('data'))); -?> ---EXPECTF-- -Deprecated: Function wddx_serialize_vars() is deprecated in %s on line %d - -Deprecated: Function wddx_deserialize() is deprecated in %s on line %d -array(1) { - ["data"]=> - array(1) { - ["somearray"]=> - array(3) { - ["1.1"]=> - string(5) "One 1" - ["1.2"]=> - string(5) "One 2" - ["1.0"]=> - string(5) "Three" - } - } -} diff --git a/ext/wddx/tests/bug41527.phpt b/ext/wddx/tests/bug41527.phpt deleted file mode 100644 index 329f732a19..0000000000 --- a/ext/wddx/tests/bug41527.phpt +++ /dev/null @@ -1,25 +0,0 @@ ---TEST-- -Bug #41527 (WDDX deserialize numeric string array keys) ---SKIPIF-- -<?php if (!extension_loaded("wddx")) print "skip"; ?> ---FILE-- -<?php -$data = array('01' => 'Zero', '+1' => 'Plus sign', ' 1' => 'Space'); - -var_dump(wddx_deserialize(wddx_serialize_vars('data'))); -?> ---EXPECTF-- -Deprecated: Function wddx_serialize_vars() is deprecated in %s on line %d - -Deprecated: Function wddx_deserialize() is deprecated in %s on line %d -array(1) { - ["data"]=> - array(3) { - ["01"]=> - string(4) "Zero" - ["+1"]=> - string(9) "Plus sign" - [" 1"]=> - string(5) "Space" - } -} diff --git a/ext/wddx/tests/bug45901.phpt b/ext/wddx/tests/bug45901.phpt deleted file mode 100644 index c89b230eb9..0000000000 --- a/ext/wddx/tests/bug45901.phpt +++ /dev/null @@ -1,21 +0,0 @@ ---TEST-- -Bug #45901 (wddx_serialize_value crash with SimpleXMLElement object) ---SKIPIF-- -<?php -if (!extension_loaded("wddx")) print "skip"; -if (!extension_loaded("simplexml")) print "skip SimpleXML not present"; -?> ---FILE-- -<?php - -$xml = new SimpleXMLElement('<data></data>'); -$xml->addChild('test'); -echo wddx_serialize_value($xml, 'Variables') . "\n"; -echo "DONE"; -?> ---EXPECTF-- -Deprecated: Function wddx_serialize_value() is deprecated in %sbug45901.php on line %d - -Warning: wddx_serialize_value(): Class SimpleXMLElement can not be serialized in %sbug45901.php on line %d -<wddxPacket version='1.0'><header><comment>Variables</comment></header><data></data></wddxPacket> -DONE diff --git a/ext/wddx/tests/bug48562.phpt b/ext/wddx/tests/bug48562.phpt deleted file mode 100644 index 10a2b65660..0000000000 --- a/ext/wddx/tests/bug48562.phpt +++ /dev/null @@ -1,38 +0,0 @@ ---TEST-- -Bug #48562 (Reference recursion causes segfault when used in wddx_serialize_vars()) ---SKIPIF-- -<?php -if (!extension_loaded('wddx')) { - die('skip. wddx not available'); -} -?> ---FILE-- -<?php - -$foo = 'bar'; - -$a['x'] = 'foo'; -$a['x'] = &$a; - -var_dump(wddx_serialize_vars($a)); - -// replace $a - the recursion detection seems to be causing $a to be not an array here, maybe its internally a pointer -// replacing $a with a new array() allows this test to still check for 2 things -// 1. recursion detection in &$a; -// 2. recursion detection in adding $a to itself and then serializing $a -// the one thing the test won't check is using $a as an array after doing &$a; which isn't really a wddx problem. -$a = array(); -$a['x'] = 'foo'; -$a['x'] = $a; - -var_dump(wddx_serialize_vars($a)); - -?> ---EXPECTF-- -Deprecated: Function wddx_serialize_vars() is deprecated in %s on line %d - -Warning: wddx_serialize_vars(): recursion detected in %s on line %d -string(78) "<wddxPacket version='1.0'><header/><data><struct></struct></data></wddxPacket>" - -Deprecated: Function wddx_serialize_vars() is deprecated in %s on line %d -string(120) "<wddxPacket version='1.0'><header/><data><struct><var name='foo'><string>bar</string></var></struct></data></wddxPacket>" diff --git a/ext/wddx/tests/bug52468.phpt b/ext/wddx/tests/bug52468.phpt deleted file mode 100644 index 1fd3df9e4a..0000000000 --- a/ext/wddx/tests/bug52468.phpt +++ /dev/null @@ -1,29 +0,0 @@ ---TEST-- -Bug #52468 (wddx_deserialize corrupts integer field value when left empty) ---SKIPIF-- -<?php -if (!extension_loaded('wddx')) { - die('skip. wddx not available'); -} -?> ---FILE-- -<?php - -$message = "<wddxPacket version='1.0'><header><comment>my_command</comment></header><data><struct><var name='handle'><number></number></var></struct></data></wddxPacket>"; - -print_r(wddx_deserialize($message)); -print_r(wddx_deserialize($message)); - -?> ---EXPECTF-- -Deprecated: Function wddx_deserialize() is deprecated in %s on line %d -Array -( - [handle] => 0 -) - -Deprecated: Function wddx_deserialize() is deprecated in %s on line %d -Array -( - [handle] => 0 -) diff --git a/ext/wddx/tests/bug68996.phpt b/ext/wddx/tests/bug68996.phpt deleted file mode 100644 index cba4b3f194..0000000000 --- a/ext/wddx/tests/bug68996.phpt +++ /dev/null @@ -1,15 +0,0 @@ ---TEST-- -Bug #68996 (Invalid free of CG(interned_empty_string)) ---SKIPIF-- -<?php -if (getenv("USE_ZEND_ALLOC") !== "0") - print "skip Need Zend MM disabled"; -?> ---FILE-- -<?php -echo wddx_serialize_value("\xfc\x63") . "\n"; -echo wddx_serialize_value([ "\xfc\x63" => "foo" ]) . "\n"; -?> ---EXPECT-- -<wddxPacket version='1.0'><header/><data><string></string></data></wddxPacket> -<wddxPacket version='1.0'><header/><data><struct><var name=''><string>foo</string></var></struct></data></wddxPacket> diff --git a/ext/wddx/tests/bug70661.phpt b/ext/wddx/tests/bug70661.phpt deleted file mode 100644 index 60683d5719..0000000000 --- a/ext/wddx/tests/bug70661.phpt +++ /dev/null @@ -1,70 +0,0 @@ ---TEST-- -Bug #70661 (Use After Free Vulnerability in WDDX Packet Deserialization) ---SKIPIF-- -<?php -if (!extension_loaded("wddx")) print "skip"; -?> ---FILE-- -<?php -$fakezval = ptr2str(1122334455); -$fakezval .= ptr2str(0); -$fakezval .= "\x00\x00\x00\x00"; -$fakezval .= "\x01"; -$fakezval .= "\x00"; -$fakezval .= "\x00\x00"; - -$x = <<<EOT -<?xml version='1.0'?> -<wddxPacket version='1.0'> -<header/> - <data> - <struct> - <recordset rowCount='1' fieldNames='ryat'> - <field name='ryat'> - <var name='php_class_name'> - <string>stdClass</string> - </var> - <null/> - </field> - </recordset> - </struct> - </data> -</wddxPacket> -EOT; - -$y = wddx_deserialize($x); - -for ($i = 0; $i < 5; $i++) { - $v[$i] = $fakezval.$i; -} - -var_dump($y); - -function ptr2str($ptr) -{ - $out = ''; - - for ($i = 0; $i < 8; $i++) { - $out .= chr($ptr & 0xff); - $ptr >>= 8; - } - - return $out; -} -?> -DONE ---EXPECTF-- -Deprecated: Function wddx_deserialize() is deprecated in %s on line %d -array(1) { - [0]=> - array(1) { - ["ryat"]=> - array(2) { - ["php_class_name"]=> - string(8) "stdClass" - [0]=> - NULL - } - } -} -DONE diff --git a/ext/wddx/tests/bug70741.phpt b/ext/wddx/tests/bug70741.phpt deleted file mode 100644 index 061fa65ef8..0000000000 --- a/ext/wddx/tests/bug70741.phpt +++ /dev/null @@ -1,26 +0,0 @@ ---TEST-- -Bug #70741 (Session WDDX Packet Deserialization Type Confusion Vulnerability) ---SKIPIF-- -<?php -if (!extension_loaded("wddx")) print "skip"; -if (!extension_loaded("session")) print "skip session extension not available"; -?> ---FILE-- -<?php -ini_set('session.serialize_handler', 'wddx'); -session_start(); - -$hashtable = str_repeat('A', 66); -$wddx = "<?xml version='1.0'?> -<wddxPacket version='1.0'> -<header/> - <data> - <string>$hashtable</string> - </data> -</wddxPacket>"; -session_decode($wddx); -?> -DONE ---EXPECTF-- -Warning: session_decode(): Failed to decode session object. Session has been destroyed in %s on line %d -DONE diff --git a/ext/wddx/tests/bug71335.phpt b/ext/wddx/tests/bug71335.phpt deleted file mode 100644 index 9fdbb25822..0000000000 --- a/ext/wddx/tests/bug71335.phpt +++ /dev/null @@ -1,34 +0,0 @@ ---TEST-- -Bug #71335 (Type Confusion in WDDX Packet Deserialization) ---SKIPIF-- -<?php -if (!extension_loaded("wddx")) print "skip"; -?> ---FILE-- -<?php -$x = "<?xml version='1.0'?> -<wddxPacket version='1.0'> -<header/> - <data> - <struct> - <var name='php_class_name'> - <string>stdClass</string> - </var> - <var name='php_class_name'> - <string>stdClass</string> - </var> - </struct> - </data> -</wddxPacket>"; - -$d = wddx_deserialize($x); -var_dump($d); -?> -DONE ---EXPECTF-- -Deprecated: Function wddx_deserialize() is deprecated in %s on line %d -object(stdClass)#%d (1) { - ["php_class_name"]=> - string(8) "stdClass" -} -DONE diff --git a/ext/wddx/tests/bug71587.phpt b/ext/wddx/tests/bug71587.phpt deleted file mode 100644 index bb7c00b586..0000000000 --- a/ext/wddx/tests/bug71587.phpt +++ /dev/null @@ -1,44 +0,0 @@ ---TEST-- -Bug #71587 (Use-After-Free / Double-Free in WDDX Deserialize) ---SKIPIF-- -<?php -if (!extension_loaded("wddx")) print "skip"; -?> ---FILE-- -<?php - -$xml = <<<EOF -<?xml version='1.0' ?> -<!DOCTYPE wddxPacket SYSTEM 'wddx_0100.dtd'> -<wddxPacket version='1.0'> - <array> - <var name='ML'></var> - <string>manhluat</string> - <var name='ML2'></var> - <boolean value='a'/> - <boolean value='true'/> - </array> -</wddxPacket> -EOF; - -$wddx = wddx_deserialize($xml); -var_dump($wddx); -// Print mem leak -foreach($wddx as $k=>$v) - printf("Key: %s\nValue: %s\n",bin2hex($k),bin2hex($v)); - -?> -DONE ---EXPECTF-- -Deprecated: Function wddx_deserialize() is deprecated in %s on line %d -array(2) { - [0]=> - string(8) "manhluat" - [1]=> - bool(true) -} -Key: 30 -Value: 6d616e686c756174 -Key: 31 -Value: 31 -DONE diff --git a/ext/wddx/tests/bug72142.phpt b/ext/wddx/tests/bug72142.phpt deleted file mode 100644 index 955af38131..0000000000 --- a/ext/wddx/tests/bug72142.phpt +++ /dev/null @@ -1,18 +0,0 @@ ---TEST-- -Bug #72142: WDDX Packet Injection Vulnerability in wddx_serialize_value() ---SKIPIF-- -<?php if (!extension_loaded("wddx")) print "skip"; ?> ---FILE-- -<?php - -$wddx = wddx_serialize_value('', '</comment></header><data><struct><var name="php_class_name"><string>stdClass</string></var></struct></data></wddxPacket>'); -var_dump($wddx); -var_dump(wddx_deserialize($wddx)); - -?> ---EXPECTF-- -Deprecated: Function wddx_serialize_value() is deprecated in %s on line %d -string(301) "<wddxPacket version='1.0'><header><comment></comment></header><data><struct><var name="php_class_name"><string>stdClass</string></var></struct></data></wddxPacket></comment></header><data><string></string></data></wddxPacket>" - -Deprecated: Function wddx_deserialize() is deprecated in %s on line %d -string(0) "" diff --git a/ext/wddx/tests/bug72340.phpt b/ext/wddx/tests/bug72340.phpt deleted file mode 100644 index 7597a2f479..0000000000 --- a/ext/wddx/tests/bug72340.phpt +++ /dev/null @@ -1,25 +0,0 @@ ---TEST-- -Bug #72340: Double Free Courruption in wddx_deserialize ---SKIPIF-- -<?php -if (!extension_loaded("wddx")) print "skip"; -?> ---FILE-- -<?php -$xml = <<<EOF -<?xml version='1.0' ?> -<!DOCTYPE wddxPacket SYSTEM 'wddx_0100.dtd'> -<wddxPacket version='1.0'> - <array><var name="XXXXXXXX"><boolean value="none">TEST</boolean></var> - <var name="YYYYYYYY"><var name="ZZZZZZZZ"><var name="EZEZEZEZ"> - </var></var></var> - </array> -</wddxPacket> -EOF; -$array = wddx_deserialize($xml); -var_dump($array); -?> ---EXPECTF-- -Deprecated: Function wddx_deserialize() is deprecated in %s on line %d -array(0) { -} diff --git a/ext/wddx/tests/bug72564.phpt b/ext/wddx/tests/bug72564.phpt deleted file mode 100644 index a1037a8662..0000000000 --- a/ext/wddx/tests/bug72564.phpt +++ /dev/null @@ -1,31 +0,0 @@ ---TEST-- -Bug #72564: wddx deserialization of boolean ---SKIPIF-- -<?php if (!extension_loaded("wddx")) print "skip"; ?> ---FILE-- -<?php - foreach([true, false, NULL] as $v) { - $x = wddx_serialize_value($v); - var_dump($x, wddx_deserialize($x)); - } -?> -Done ---EXPECTF-- -Deprecated: Function wddx_serialize_value() is deprecated in %s on line %d - -Deprecated: Function wddx_deserialize() is deprecated in %s on line %d -string(84) "<wddxPacket version='1.0'><header/><data><boolean value='true'/></data></wddxPacket>" -bool(true) - -Deprecated: Function wddx_serialize_value() is deprecated in %s on line %d - -Deprecated: Function wddx_deserialize() is deprecated in %s on line %d -string(85) "<wddxPacket version='1.0'><header/><data><boolean value='false'/></data></wddxPacket>" -bool(false) - -Deprecated: Function wddx_serialize_value() is deprecated in %s on line %d - -Deprecated: Function wddx_deserialize() is deprecated in %s on line %d -string(68) "<wddxPacket version='1.0'><header/><data><null/></data></wddxPacket>" -NULL -Done diff --git a/ext/wddx/tests/bug72749.phpt b/ext/wddx/tests/bug72749.phpt deleted file mode 100644 index 49a7af9c73..0000000000 --- a/ext/wddx/tests/bug72749.phpt +++ /dev/null @@ -1,35 +0,0 @@ ---TEST-- -Bug #72749: wddx_deserialize allows illegal memory access ---SKIPIF-- -<?php -if (!extension_loaded('wddx')) { - die('skip. wddx not available'); -} -?> ---FILE-- -<?php -$xml = <<<XML -<?xml version='1.0'?> -<!DOCTYPE wddxPacket SYSTEM 'wddx_0100.dtd'> -<wddxPacket version='1.0'> -<header/> - <data> - <struct> - <var name='aDateTime3'> - <dateTime>2\r2004-09-10T05:52:49+00</dateTime> - </var> - </struct> - </data> -</wddxPacket> -XML; - -$array = wddx_deserialize($xml); -var_dump($array); -?> ---EXPECTF-- -Deprecated: Function wddx_deserialize() is deprecated in %s on line %d -array(1) { - ["aDateTime3"]=> - string(24) "2 -2004-09-10T05:52:49+00" -} diff --git a/ext/wddx/tests/bug72750.phpt b/ext/wddx/tests/bug72750.phpt deleted file mode 100644 index a789900a60..0000000000 --- a/ext/wddx/tests/bug72750.phpt +++ /dev/null @@ -1,35 +0,0 @@ ---TEST-- -Bug #72750: wddx_deserialize null dereference ---SKIPIF-- -<?php -if (!extension_loaded('wddx')) { - die('skip. wddx not available'); -} -?> ---FILE-- -<?php - -$xml = <<< XML -<?xml version='1.0'?> -<!DOCTYPE wddxPacket SYSTEM 'wddx_0100.dtd'> -<wddxPacket version='1.0'> -<header/> - <data> - <struct> - <var name='aBinary'> - <binary length='11'>\\tYmluYXJRhdGE=</binary> - </var> - </struct> - </data> -</wddxPacket> -XML; - -$array = wddx_deserialize($xml); -var_dump($array); -?> ---EXPECTF-- -Deprecated: Function wddx_deserialize() is deprecated in %s on line %d -array(1) { - ["aBinary"]=> - string(9) "µ‰¥¹…ÉFF" -} diff --git a/ext/wddx/tests/bug72790.phpt b/ext/wddx/tests/bug72790.phpt deleted file mode 100644 index 335cee0d83..0000000000 --- a/ext/wddx/tests/bug72790.phpt +++ /dev/null @@ -1,36 +0,0 @@ ---TEST-- -Bug #72790: wddx_deserialize null dereference with invalid xml ---SKIPIF-- -<?php -if (!extension_loaded('wddx')) { - die('skip. wddx not available'); -} -?> ---FILE-- -<?php - -$xml = <<< XML -<?xml version='1.0' ?> -<!DOCTYPE wddxPacket SYSTEM 'wddx_0100.dtd'> -<wddxPacket version='1.0'> - |array> - <var name="XXXX"> - <boolean value="this"> - </boolean> - </var> - <var name="YYYY"> - <var name="UUUU"> - <var name="EZEZ"> - </var> - </var> - </var> - </array> -</wddxPacket> -XML; - -$array = wddx_deserialize($xml); -var_dump($array); -?> ---EXPECTF-- -Deprecated: Function wddx_deserialize() is deprecated in %s on line %d -NULL diff --git a/ext/wddx/tests/bug72799.phpt b/ext/wddx/tests/bug72799.phpt deleted file mode 100644 index a5fea7a4da..0000000000 --- a/ext/wddx/tests/bug72799.phpt +++ /dev/null @@ -1,29 +0,0 @@ ---TEST-- -Bug #72799: wddx_deserialize null dereference in php_wddx_pop_element ---SKIPIF-- -<?php -if (!extension_loaded('wddx')) { - die('skip. wddx not available'); -} -?> ---FILE-- -<?php - -$xml = <<<XML -<?xml version='1.0'?> -<!DOCTYPE wddxPacket SYSTEM 'wddx_0100.dtd'> -<wddxPacket version="1.0"> - <var name="XXXX"> - <boolean value="1"> - <dateTime>1998-06-12T04:32:12+00</dateTime> - </boolean> - </var> -</wddxPacket> -XML; - -$array = wddx_deserialize($xml); -var_dump($array); -?> ---EXPECTF-- -Deprecated: Function wddx_deserialize() is deprecated in %s on line %d -NULL diff --git a/ext/wddx/tests/bug72860.phpt b/ext/wddx/tests/bug72860.phpt deleted file mode 100644 index 831811b842..0000000000 --- a/ext/wddx/tests/bug72860.phpt +++ /dev/null @@ -1,28 +0,0 @@ ---TEST-- -Bug #72860: wddx_deserialize use-after-free ---SKIPIF-- -<?php -if (!extension_loaded('wddx')) { - die('skip. wddx not available'); -} -?> ---FILE-- -<?php - -$xml=<<<XML -<?xml version='1.0'?> -<!DOCTYPE wddxPacket SYSTEM 'wddx_0100.dtd'> -<wddxPacket version='1.0'> - <recordset fieldNames='F'> - <field name='F'> - </recordset> -</wddxPacket> -XML; - -var_dump(wddx_deserialize($xml)); -?> -DONE ---EXPECTF-- -Deprecated: Function wddx_deserialize() is deprecated in %s on line %d -NULL -DONE diff --git a/ext/wddx/tests/bug73065.phpt b/ext/wddx/tests/bug73065.phpt deleted file mode 100644 index 5481b88fd6..0000000000 --- a/ext/wddx/tests/bug73065.phpt +++ /dev/null @@ -1,107 +0,0 @@ ---TEST-- -Bug #73065: Out-Of-Bounds Read in php_wddx_push_element of wddx.c ---SKIPIF-- -<?php -if (!extension_loaded('wddx')) { - die('skip. wddx not available'); -} -?> ---FILE-- -<?php - -$xml1 = <<<XML -<?xml version='1.0' ?> - <!DOCTYPE et SYSTEM 'w'> - <wddxPacket ven='1.0'> - <array> - <var Name="name"> - <boolean value="keliu"></boolean> - </var> - <var name="1111"> - <var name="2222"> - <var name="3333"></var> - </var> - </var> - </array> - </wddxPacket> -XML; - -$xml2 = <<<XML -<?xml version='1.0' ?> - <!DOCTYPE et SYSTEM 'w'> - <wddxPacket ven='1.0'> - <array> - <char Name="code"> - <boolean value="keliu"></boolean> - </char> - </array> - </wddxPacket> -XML; - -$xml3 = <<<XML -<?xml version='1.0' ?> - <!DOCTYPE et SYSTEM 'w'> - <wddxPacket ven='1.0'> - <array> - <boolean Name="value"> - <boolean value="keliu"></boolean> - </boolean> - </array> - </wddxPacket> -XML; - -$xml4 = <<<XML -<?xml version='1.0' ?> - <!DOCTYPE et SYSTEM 'w'> - <wddxPacket ven='1.0'> - <array> - <recordset Name="fieldNames"> - <boolean value="keliu"></boolean> - </recordset> - </array> - </wddxPacket> -XML; - -$xml5 = <<<XML -<?xml version='1.0' ?> - <!DOCTYPE et SYSTEM 'w'> - <wddxPacket ven='1.0'> - <array> - <field Name="name"> - <boolean value="keliu"></boolean> - </field> - </array> - </wddxPacket> -XML; - -for($i=1;$i<=5;$i++) { - $xmlvar = "xml$i"; - $array = wddx_deserialize($$xmlvar); - var_dump($array); -} -?> -DONE ---EXPECTF-- -Deprecated: Function wddx_deserialize() is deprecated in %s on line %d -array(0) { -} - -Deprecated: Function wddx_deserialize() is deprecated in %s on line %d -array(0) { -} - -Deprecated: Function wddx_deserialize() is deprecated in %s on line %d -array(0) { -} - -Deprecated: Function wddx_deserialize() is deprecated in %s on line %d -array(1) { - [0]=> - array(0) { - } -} - -Deprecated: Function wddx_deserialize() is deprecated in %s on line %d -array(0) { -} -DONE diff --git a/ext/wddx/tests/bug73173.phpt b/ext/wddx/tests/bug73173.phpt deleted file mode 100644 index d9e6644b8b..0000000000 --- a/ext/wddx/tests/bug73173.phpt +++ /dev/null @@ -1,26 +0,0 @@ ---TEST-- -Bug #73173: huge memleak when wddx_unserialize ---SKIPIF-- -<?php if (!extension_loaded("wddx")) print "skip"; ?> ---FILE-- -<?php - -$xml=<<<XML -<?xml version='1.0'?> -<!DOCTYPE wddxPacket SYSTEM 'wddx_0100.dtd'> -<wddxPacket> -<var name=" -XML; - -$xml .= str_repeat('F',0x80000); - -$xml .= <<<XML -"> -</wddxPacket> -XML; -var_dump(wddx_deserialize($xml)); - -?> ---EXPECTF-- -Deprecated: Function wddx_deserialize() is deprecated in %s on line %d -NULL diff --git a/ext/wddx/tests/bug73331.phpt b/ext/wddx/tests/bug73331.phpt deleted file mode 100644 index 3ee2e596ef..0000000000 --- a/ext/wddx/tests/bug73331.phpt +++ /dev/null @@ -1,15 +0,0 @@ ---TEST-- -Bug #73331 (NULL Pointer Dereference in WDDX Packet Deserialization with PDORow) ---SKIPIF-- -<?php if (!extension_loaded("wddx") || !extension_loaded("pdo")) print "skip"; ?> ---FILE-- -<?php - -$wddx = "<wddxPacket version='1.0'><header/><data><struct><var name='php_class_name'><string>PDORow</string></var></struct></data></wddxPacket>"; -var_dump(wddx_deserialize($wddx)); -?> ---EXPECTF-- -Deprecated: Function wddx_deserialize() is deprecated in %s on line %d - -Warning: wddx_deserialize(): Class pdorow can not be unserialized in %s73331.php on line %d -NULL diff --git a/ext/wddx/tests/bug73631.phpt b/ext/wddx/tests/bug73631.phpt deleted file mode 100644 index 061932e732..0000000000 --- a/ext/wddx/tests/bug73631.phpt +++ /dev/null @@ -1,21 +0,0 @@ ---TEST-- -Bug #73631 (Memory leak due to invalid wddx stack processing) ---SKIPIF-- -<?php if (!extension_loaded("wddx")) print "skip"; ?> ----XFAIL-- -Still has memory leaks in debug build. ---FILE-- -<?php -$xml = <<<EOF -<?xml version="1.0" ?> -<wddxPacket version="1.0"> -<number>1234</number> -<binary><boolean/></binary> -</wddxPacket> -EOF; -$wddx = wddx_deserialize($xml); -var_dump($wddx); -?> ---EXPECTF-- -Deprecated: Function wddx_deserialize() is deprecated in %s on line %d -int(1234) diff --git a/ext/wddx/tests/bug73793.phpt b/ext/wddx/tests/bug73793.phpt deleted file mode 100644 index dad2f35ed0..0000000000 --- a/ext/wddx/tests/bug73793.phpt +++ /dev/null @@ -1,19 +0,0 @@ ---TEST-- -Bug #73793 (WDDX uses wrong decimal separator) ---SKIPIF-- -<?php -if (!extension_loaded('wddx')) print 'skip wddx extension not available'; -if (setlocale(LC_NUMERIC, ['de_DE', 'de_DE.UTF-8', 'de-DE']) === false) { - print 'skip German locale not available'; -} -?> ---FILE-- -<?php -setlocale(LC_NUMERIC , ['de_DE', 'de_DE.UTF-8', 'de-DE']); -var_dump(wddx_serialize_value(['foo' => 5.1])); -?> -===DONE=== ---EXPECTF-- -Deprecated: Function wddx_serialize_value() is deprecated in %s on line %d -string(120) "<wddxPacket version='1.0'><header/><data><struct><var name='foo'><number>5.1</number></var></struct></data></wddxPacket>" -===DONE=== diff --git a/ext/wddx/tests/bug73831.phpt b/ext/wddx/tests/bug73831.phpt deleted file mode 100644 index dc25f3c092..0000000000 --- a/ext/wddx/tests/bug73831.phpt +++ /dev/null @@ -1,25 +0,0 @@ ---TEST-- -Bug #73831 (NULL Pointer Dereference while unserialize php object) ---SKIPIF-- -<?php if (!extension_loaded("wddx")) print "skip"; ?> ---FILE-- -<?php -$xml = <<<EOF -<?xml version="1.0" ?> -<wddxPacket version="1.0"> - <struct> - <var name="php_class_name"> - <string>Throwable</string> - </var> - </struct> -</wddxPacket> -EOF; -try { - $wddx = wddx_deserialize($xml); -} catch(Error $e) { echo $e->getMessage(); } -?> ---EXPECTF-- -Deprecated: Function wddx_deserialize() is deprecated in %s on line %d - -Warning: wddx_deserialize(): Class throwable can not be instantiated in %sbug73831.php on line %d -Cannot instantiate interface Throwable diff --git a/ext/wddx/tests/bug74145.phpt b/ext/wddx/tests/bug74145.phpt deleted file mode 100644 index 1daa189acc..0000000000 --- a/ext/wddx/tests/bug74145.phpt +++ /dev/null @@ -1,17 +0,0 @@ ---TEST-- -Bug #74145 (wddx parsing empty boolean tag leads to SIGSEGV) ---SKIPIF-- -<?php -if (!extension_loaded("wddx")) print "skip"; -?> ---FILE-- -<?php -$data = file_get_contents(__DIR__ . '/bug74145.xml'); -$wddx = wddx_deserialize($data); -var_dump($wddx); -?> -DONE ---EXPECTF-- -Deprecated: Function wddx_deserialize() is deprecated in %s on line %d -NULL -DONE diff --git a/ext/wddx/tests/bug74145.xml b/ext/wddx/tests/bug74145.xml deleted file mode 100644 index e5d35fb0a4..0000000000 --- a/ext/wddx/tests/bug74145.xml +++ /dev/null @@ -1,9 +0,0 @@ -<?xml version='1.0' ?> - <!DOCTYPE et SYSTEM 'w'> - <wddxPacket ven='1.0'> - <array> - <var Name="name"> - <boolean ></boolean> - </var> - </array> - </wddxPacket> diff --git a/ext/wddx/tests/bug75055.phpt b/ext/wddx/tests/bug75055.phpt deleted file mode 100644 index cd84c9b8fa..0000000000 --- a/ext/wddx/tests/bug75055.phpt +++ /dev/null @@ -1,22 +0,0 @@ ---TEST-- -Bug #75055 Out-Of-Bounds Read in timelib_meridian() ---SKIPIF-- -<?php if (!extension_loaded("wddx")) print "skip"; ?> ---FILE-- -<?php - -$file_str = __DIR__ . "/bug75055.wddx"; - -$wddx_str = file_get_contents($file_str); -print strlen($wddx_str) . " bytes read.\n"; - -var_dump(wddx_deserialize($wddx_str)); -?> ---EXPECTF-- -323 bytes read. - -Deprecated: Function wddx_deserialize() is deprecated in %s on line %d -array(1) { - ["aDateTime"]=> - string(12) "frONt of 0 0" -} diff --git a/ext/wddx/tests/bug75055.wddx b/ext/wddx/tests/bug75055.wddx deleted file mode 100644 index 6493352469..0000000000 --- a/ext/wddx/tests/bug75055.wddx +++ /dev/null @@ -1,13 +0,0 @@ -<?xml version='1.0'?>
-<!DOCTYPE wddxPacket SYSTEM 'wddx_0100.dtd'>
-<wddxPacket version='1.0'>
-<header/>
- <data>
- <struct>
- <var name='aDateTime'>
- <dateTime>frONt of 0 0</dateTime>
- </var>
- </struct>
- </data>
-</wddxPacket>
-
diff --git a/ext/wddx/tests/wddx.xml b/ext/wddx/tests/wddx.xml deleted file mode 100644 index 00857095c9..0000000000 --- a/ext/wddx/tests/wddx.xml +++ /dev/null @@ -1,60 +0,0 @@ -<?xml version='1.0'?> -<!DOCTYPE wddxPacket SYSTEM 'wddx_0100.dtd'> -<wddxPacket version='1.0'> -<header/> - <data> - <struct> - <var name='aNull'> - <null/> - </var> - <var name='aString'> - <string>a string</string> - </var> - <var name='aNumber'> - <number>-12.456</number> - </var> - <var name='aDateTime'> - <dateTime>1998-06-12T04:32:12+00</dateTime> - </var> - <var name='aDateTime2'> - <dateTime>1980-06-12T04:32:12+00</dateTime> - </var> - <var name='aDateTime3'> - <dateTime>2040-06-12T04:32:12+00</dateTime> - </var> - <var name='aBoolean'> - <boolean value='true'/> - </var> - <var name='anArray'> - <array length='2'> - <number>10</number> - <string>second element</string> - </array> - </var> - <var name='aBinary'> - <binary length='11'>YmluYXJ5IGRhdGE=</binary> - </var> - <var name='anObject'> - <struct> - <var name='s'> - <string>a string</string> - </var> - <var name='n'> - <number>-12.456</number> - </var> - </struct> - </var> - <var name='aRecordset'> - <recordset rowCount='2' fieldNames='NAME,AGE'> - <field name='NAME'> - <string>John Doe</string> - <string>Jane Doe</string> - </field> - <field name='AGE'> - <number>34</number> - <number>31</number> - </field> - </recordset> - </struct> - </data> -</wddxPacket> diff --git a/ext/wddx/wddx.c b/ext/wddx/wddx.c deleted file mode 100644 index b32623f3d8..0000000000 --- a/ext/wddx/wddx.c +++ /dev/null @@ -1,1330 +0,0 @@ -/* - +----------------------------------------------------------------------+ - | PHP Version 7 | - +----------------------------------------------------------------------+ - | Copyright (c) The PHP Group | - +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | http://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | - +----------------------------------------------------------------------+ - | Author: Andrei Zmievski <andrei@php.net> | - +----------------------------------------------------------------------+ - */ - -#ifdef HAVE_CONFIG_H -#include "config.h" -#endif - -#include "php.h" - -#if HAVE_WDDX - -#include "ext/xml/expat_compat.h" -#include "php_wddx.h" -#include "php_wddx_api.h" - -#include "ext/xml/php_xml.h" -#include "ext/standard/php_incomplete_class.h" -#include "ext/standard/base64.h" -#include "ext/standard/info.h" -#include "zend_smart_str.h" -#include "ext/standard/html.h" -#include "ext/standard/php_string.h" -#include "ext/date/php_date.h" -#include "zend_globals.h" - -#define WDDX_BUF_LEN 256 -#define PHP_CLASS_NAME_VAR "php_class_name" - -#define EL_ARRAY "array" -#define EL_BINARY "binary" -#define EL_BOOLEAN "boolean" -#define EL_CHAR "char" -#define EL_CHAR_CODE "code" -#define EL_NULL "null" -#define EL_NUMBER "number" -#define EL_PACKET "wddxPacket" -#define EL_STRING "string" -#define EL_STRUCT "struct" -#define EL_VALUE "value" -#define EL_VAR "var" -#define EL_NAME "name" -#define EL_VERSION "version" -#define EL_RECORDSET "recordset" -#define EL_FIELD "field" -#define EL_DATETIME "dateTime" - -#define php_wddx_deserialize(a,b) \ - php_wddx_deserialize_ex(Z_STRVAL_P(a), Z_STRLEN_P(a), (b)) - -#define SET_STACK_VARNAME \ - if (stack->varname) { \ - ent.varname = estrdup(stack->varname); \ - efree(stack->varname); \ - stack->varname = NULL; \ - } else \ - ent.varname = NULL; \ - -static int le_wddx; - -typedef struct { - zval data; - enum { - ST_ARRAY, - ST_BOOLEAN, - ST_NULL, - ST_NUMBER, - ST_STRING, - ST_BINARY, - ST_STRUCT, - ST_RECORDSET, - ST_FIELD, - ST_DATETIME - } type; - char *varname; -} st_entry; - -typedef struct { - int top, max; - char *varname; - zend_bool done; - void **elements; -} wddx_stack; - - -static void php_wddx_process_data(void *user_data, const XML_Char *s, int len); - -/* {{{ arginfo */ -ZEND_BEGIN_ARG_INFO_EX(arginfo_wddx_serialize_value, 0, 0, 1) - ZEND_ARG_INFO(0, var) - ZEND_ARG_INFO(0, comment) -ZEND_END_ARG_INFO() - -ZEND_BEGIN_ARG_INFO_EX(arginfo_wddx_serialize_vars, 0, 0, 1) - ZEND_ARG_VARIADIC_INFO(0, var_names) -ZEND_END_ARG_INFO() - -ZEND_BEGIN_ARG_INFO_EX(arginfo_wddx_serialize_start, 0, 0, 0) - ZEND_ARG_INFO(0, comment) -ZEND_END_ARG_INFO() - -ZEND_BEGIN_ARG_INFO_EX(arginfo_wddx_packet_end, 0, 0, 1) - ZEND_ARG_INFO(0, packet_id) -ZEND_END_ARG_INFO() - -ZEND_BEGIN_ARG_INFO_EX(arginfo_wddx_add_vars, 0, 0, 2) - ZEND_ARG_INFO(0, packet_id) - ZEND_ARG_VARIADIC_INFO(0, var_names) -ZEND_END_ARG_INFO() - -ZEND_BEGIN_ARG_INFO_EX(arginfo_wddx_deserialize, 0, 0, 1) - ZEND_ARG_INFO(0, packet) -ZEND_END_ARG_INFO() -/* }}} */ - -/* {{{ wddx_functions[] - */ -static const zend_function_entry wddx_functions[] = { - PHP_DEP_FE(wddx_serialize_value, arginfo_wddx_serialize_value) - PHP_DEP_FE(wddx_serialize_vars, arginfo_wddx_serialize_vars) - PHP_DEP_FE(wddx_packet_start, arginfo_wddx_serialize_start) - PHP_DEP_FE(wddx_packet_end, arginfo_wddx_packet_end) - PHP_DEP_FE(wddx_add_vars, arginfo_wddx_add_vars) - PHP_DEP_FE(wddx_deserialize, arginfo_wddx_deserialize) - PHP_FE_END -}; -/* }}} */ - -PHP_MINIT_FUNCTION(wddx); -PHP_MINFO_FUNCTION(wddx); - -/* {{{ dynamically loadable module stuff */ -#ifdef COMPILE_DL_WDDX -ZEND_GET_MODULE(wddx) -#endif /* COMPILE_DL_WDDX */ -/* }}} */ - -/* {{{ wddx_module_entry - */ -zend_module_entry wddx_module_entry = { - STANDARD_MODULE_HEADER, - "wddx", - wddx_functions, - PHP_MINIT(wddx), - NULL, - NULL, - NULL, - PHP_MINFO(wddx), - PHP_WDDX_VERSION, - STANDARD_MODULE_PROPERTIES -}; -/* }}} */ - -/* {{{ wddx_stack_init - */ -static int wddx_stack_init(wddx_stack *stack) -{ - stack->top = 0; - stack->elements = (void **) safe_emalloc(sizeof(void **), STACK_BLOCK_SIZE, 0); - stack->max = STACK_BLOCK_SIZE; - stack->varname = NULL; - stack->done = 0; - - return SUCCESS; -} -/* }}} */ - -/* {{{ wddx_stack_push - */ -static int wddx_stack_push(wddx_stack *stack, void *element, int size) -{ - if (stack->top >= stack->max) { /* we need to allocate more memory */ - stack->elements = (void **) erealloc(stack->elements, - (sizeof(void **) * (stack->max += STACK_BLOCK_SIZE))); - } - stack->elements[stack->top] = (void *) emalloc(size); - memcpy(stack->elements[stack->top], element, size); - return stack->top++; -} -/* }}} */ - -/* {{{ wddx_stack_top - */ -static int wddx_stack_top(wddx_stack *stack, void **element) -{ - if (stack->top > 0) { - *element = stack->elements[stack->top - 1]; - return SUCCESS; - } else { - *element = NULL; - return FAILURE; - } -} -/* }}} */ - -/* {{{ wddx_stack_is_empty - */ -static int wddx_stack_is_empty(wddx_stack *stack) -{ - if (stack->top == 0) { - return 1; - } else { - return 0; - } -} -/* }}} */ - -/* {{{ wddx_stack_destroy - */ -static int wddx_stack_destroy(wddx_stack *stack) -{ - register int i; - - if (stack->elements) { - for (i = 0; i < stack->top; i++) { - if (Z_TYPE(((st_entry *)stack->elements[i])->data) != IS_UNDEF - && ((st_entry *)stack->elements[i])->type != ST_FIELD) { - zval_ptr_dtor(&((st_entry *)stack->elements[i])->data); - } - if (((st_entry *)stack->elements[i])->varname) { - efree(((st_entry *)stack->elements[i])->varname); - } - efree(stack->elements[i]); - } - efree(stack->elements); - } - if (stack->varname) { - efree(stack->varname); - } - return SUCCESS; -} -/* }}} */ - -/* {{{ release_wddx_packet_rsrc - */ -static void release_wddx_packet_rsrc(zend_resource *rsrc) -{ - smart_str *str = (smart_str *)rsrc->ptr; - smart_str_free(str); - efree(str); -} -/* }}} */ - -#include "ext/session/php_session.h" - -#if HAVE_PHP_SESSION && !defined(COMPILE_DL_SESSION) -/* {{{ PS_SERIALIZER_ENCODE_FUNC - */ -PS_SERIALIZER_ENCODE_FUNC(wddx) -{ - wddx_packet *packet; - zend_string *str; - PS_ENCODE_VARS; - - packet = php_wddx_constructor(); - - php_wddx_packet_start(packet, NULL, 0); - php_wddx_add_chunk_static(packet, WDDX_STRUCT_S); - - PS_ENCODE_LOOP( - php_wddx_serialize_var(packet, struc, key); - ); - - php_wddx_add_chunk_static(packet, WDDX_STRUCT_E); - php_wddx_packet_end(packet); - smart_str_0(packet); - str = zend_string_copy(packet->s); - php_wddx_destructor(packet); - - return str; -} -/* }}} */ - -/* {{{ PS_SERIALIZER_DECODE_FUNC - */ -PS_SERIALIZER_DECODE_FUNC(wddx) -{ - zval retval; - zval *ent; - zend_string *key; - zend_ulong idx; - int ret; - - if (vallen == 0) { - return SUCCESS; - } - - ZVAL_UNDEF(&retval); - if ((ret = php_wddx_deserialize_ex(val, vallen, &retval)) == SUCCESS) { - if (Z_TYPE(retval) != IS_ARRAY) { - zval_ptr_dtor_nogc(&retval); - return FAILURE; - } - ZEND_HASH_FOREACH_KEY_VAL(Z_ARRVAL(retval), idx, key, ent) { - if (key == NULL) { - key = zend_long_to_str(idx); - } else { - zend_string_addref(key); - } - if (php_set_session_var(key, ent, NULL)) { - Z_TRY_ADDREF_P(ent); - } - PS_ADD_VAR(key); - zend_string_release_ex(key, 0); - } ZEND_HASH_FOREACH_END(); - } - - zval_ptr_dtor(&retval); - - return ret; -} -/* }}} */ -#endif - -/* {{{ PHP_MINIT_FUNCTION - */ -PHP_MINIT_FUNCTION(wddx) -{ - le_wddx = zend_register_list_destructors_ex(release_wddx_packet_rsrc, NULL, "wddx", module_number); - -#if HAVE_PHP_SESSION && !defined(COMPILE_DL_SESSION) - php_session_register_serializer("wddx", - PS_SERIALIZER_ENCODE_NAME(wddx), - PS_SERIALIZER_DECODE_NAME(wddx)); -#endif - - return SUCCESS; -} -/* }}} */ - -/* {{{ PHP_MINFO_FUNCTION - */ -PHP_MINFO_FUNCTION(wddx) -{ - php_info_print_table_start(); -#if HAVE_PHP_SESSION && !defined(COMPILE_DL_SESSION) - php_info_print_table_header(2, "WDDX Support", "enabled" ); - php_info_print_table_row(2, "WDDX Session Serializer", "enabled" ); -#else - php_info_print_table_row(2, "WDDX Support", "enabled" ); -#endif - php_info_print_table_end(); -} -/* }}} */ - -/* {{{ php_wddx_packet_start - */ -void php_wddx_packet_start(wddx_packet *packet, char *comment, size_t comment_len) -{ - php_wddx_add_chunk_static(packet, WDDX_PACKET_S); - if (comment) { - zend_string *escaped = php_escape_html_entities( - comment, comment_len, 0, ENT_QUOTES, NULL); - - php_wddx_add_chunk_static(packet, WDDX_HEADER_S); - php_wddx_add_chunk_static(packet, WDDX_COMMENT_S); - php_wddx_add_chunk_ex(packet, ZSTR_VAL(escaped), ZSTR_LEN(escaped)); - php_wddx_add_chunk_static(packet, WDDX_COMMENT_E); - php_wddx_add_chunk_static(packet, WDDX_HEADER_E); - - zend_string_release_ex(escaped, 0); - } else { - php_wddx_add_chunk_static(packet, WDDX_HEADER); - } - php_wddx_add_chunk_static(packet, WDDX_DATA_S); -} -/* }}} */ - -/* {{{ php_wddx_packet_end - */ -void php_wddx_packet_end(wddx_packet *packet) -{ - php_wddx_add_chunk_static(packet, WDDX_DATA_E); - php_wddx_add_chunk_static(packet, WDDX_PACKET_E); -} -/* }}} */ - -#define FLUSH_BUF() \ - if (l > 0) { \ - php_wddx_add_chunk_ex(packet, buf, l); \ - l = 0; \ - } - -/* {{{ php_wddx_serialize_string - */ -static void php_wddx_serialize_string(wddx_packet *packet, zval *var) -{ - php_wddx_add_chunk_static(packet, WDDX_STRING_S); - - if (Z_STRLEN_P(var) > 0) { - zend_string *buf = php_escape_html_entities( - (unsigned char *) Z_STRVAL_P(var), Z_STRLEN_P(var), 0, ENT_QUOTES, NULL); - - php_wddx_add_chunk_ex(packet, ZSTR_VAL(buf), ZSTR_LEN(buf)); - - zend_string_release_ex(buf, 0); - } - php_wddx_add_chunk_static(packet, WDDX_STRING_E); -} -/* }}} */ - -/* {{{ php_wddx_serialize_number - */ -static void php_wddx_serialize_number(wddx_packet *packet, zval *var) -{ - char tmp_buf[WDDX_BUF_LEN], *dec_point; - zend_string *str = zval_get_string_func(var); - snprintf(tmp_buf, sizeof(tmp_buf), WDDX_NUMBER, ZSTR_VAL(str)); - zend_string_release_ex(str, 0); - - dec_point = strchr(tmp_buf, ','); - if (dec_point) { - *dec_point = '.'; - } - php_wddx_add_chunk(packet, tmp_buf); -} -/* }}} */ - -/* {{{ php_wddx_serialize_boolean - */ -static void php_wddx_serialize_boolean(wddx_packet *packet, zval *var) -{ - php_wddx_add_chunk(packet, Z_TYPE_P(var) == IS_TRUE ? WDDX_BOOLEAN_TRUE : WDDX_BOOLEAN_FALSE); -} -/* }}} */ - -/* {{{ php_wddx_serialize_unset - */ -static void php_wddx_serialize_unset(wddx_packet *packet) -{ - php_wddx_add_chunk_static(packet, WDDX_NULL); -} -/* }}} */ - -/* {{{ php_wddx_serialize_object - */ -static void php_wddx_serialize_object(wddx_packet *packet, zval *obj) -{ -/* OBJECTS_FIXME */ - zval *ent, fname, *varname; - zval retval; - zend_string *key; - zend_ulong idx; - char tmp_buf[WDDX_BUF_LEN]; - HashTable *objhash, *sleephash; - zend_class_entry *ce; - PHP_CLASS_ATTRIBUTES; - - PHP_SET_CLASS_ATTRIBUTES(obj); - ce = Z_OBJCE_P(obj); - if (!ce || ce->serialize || ce->unserialize) { - php_error_docref(NULL, E_WARNING, "Class %s can not be serialized", ZSTR_VAL(class_name)); - PHP_CLEANUP_CLASS_ATTRIBUTES(); - return; - } - - ZVAL_STRING(&fname, "__sleep"); - /* - * We try to call __sleep() method on object. It's supposed to return an - * array of property names to be serialized. - */ - if (call_user_function(CG(function_table), obj, &fname, &retval, 0, 0) == SUCCESS) { - if (!Z_ISUNDEF(retval) && (sleephash = HASH_OF(&retval))) { - php_wddx_add_chunk_static(packet, WDDX_STRUCT_S); - snprintf(tmp_buf, WDDX_BUF_LEN, WDDX_VAR_S, PHP_CLASS_NAME_VAR); - php_wddx_add_chunk(packet, tmp_buf); - php_wddx_add_chunk_static(packet, WDDX_STRING_S); - php_wddx_add_chunk_ex(packet, ZSTR_VAL(class_name), ZSTR_LEN(class_name)); - php_wddx_add_chunk_static(packet, WDDX_STRING_E); - php_wddx_add_chunk_static(packet, WDDX_VAR_E); - - objhash = Z_OBJPROP_P(obj); - - ZEND_HASH_FOREACH_VAL(sleephash, varname) { - if (Z_TYPE_P(varname) != IS_STRING) { - php_error_docref(NULL, E_NOTICE, "__sleep should return an array only containing the names of instance-variables to serialize."); - continue; - } - - if ((ent = zend_hash_find(objhash, Z_STR_P(varname))) != NULL) { - php_wddx_serialize_var(packet, ent, Z_STR_P(varname)); - } - } ZEND_HASH_FOREACH_END(); - - php_wddx_add_chunk_static(packet, WDDX_STRUCT_E); - } - } else { - php_wddx_add_chunk_static(packet, WDDX_STRUCT_S); - snprintf(tmp_buf, WDDX_BUF_LEN, WDDX_VAR_S, PHP_CLASS_NAME_VAR); - php_wddx_add_chunk(packet, tmp_buf); - php_wddx_add_chunk_static(packet, WDDX_STRING_S); - php_wddx_add_chunk_ex(packet, ZSTR_VAL(class_name), ZSTR_LEN(class_name)); - php_wddx_add_chunk_static(packet, WDDX_STRING_E); - php_wddx_add_chunk_static(packet, WDDX_VAR_E); - - objhash = Z_OBJPROP_P(obj); - ZEND_HASH_FOREACH_KEY_VAL(objhash, idx, key, ent) { - if (ent == obj) { - continue; - } - if (key) { - const char *class_name, *prop_name; - size_t prop_name_len; - zend_string *tmp; - - zend_unmangle_property_name_ex(key, &class_name, &prop_name, &prop_name_len); - tmp = zend_string_init(prop_name, prop_name_len, 0); - php_wddx_serialize_var(packet, ent, tmp); - zend_string_release_ex(tmp, 0); - } else { - key = zend_long_to_str(idx); - php_wddx_serialize_var(packet, ent, key); - zend_string_release_ex(key, 0); - } - } ZEND_HASH_FOREACH_END(); - php_wddx_add_chunk_static(packet, WDDX_STRUCT_E); - } - - PHP_CLEANUP_CLASS_ATTRIBUTES(); - - zval_ptr_dtor(&fname); - zval_ptr_dtor(&retval); -} -/* }}} */ - -/* {{{ php_wddx_serialize_array - */ -static void php_wddx_serialize_array(wddx_packet *packet, zval *arr) -{ - zval *ent; - zend_string *key; - int is_struct = 0; - zend_ulong idx; - HashTable *target_hash; - char tmp_buf[WDDX_BUF_LEN]; - zend_ulong ind = 0; - - target_hash = Z_ARRVAL_P(arr); - ZEND_HASH_FOREACH_KEY(target_hash, idx, key) { - if (key) { - is_struct = 1; - break; - } - - if (idx != ind) { - is_struct = 1; - break; - } - ind++; - } ZEND_HASH_FOREACH_END(); - - if (is_struct) { - php_wddx_add_chunk_static(packet, WDDX_STRUCT_S); - } else { - snprintf(tmp_buf, sizeof(tmp_buf), WDDX_ARRAY_S, zend_hash_num_elements(target_hash)); - php_wddx_add_chunk(packet, tmp_buf); - } - - ZEND_HASH_FOREACH_KEY_VAL(target_hash, idx, key, ent) { - if (ent == arr) { - continue; - } - - if (is_struct) { - if (key) { - php_wddx_serialize_var(packet, ent, key); - } else { - key = zend_long_to_str(idx); - php_wddx_serialize_var(packet, ent, key); - zend_string_release_ex(key, 0); - } - } else { - php_wddx_serialize_var(packet, ent, NULL); - } - } ZEND_HASH_FOREACH_END(); - - if (is_struct) { - php_wddx_add_chunk_static(packet, WDDX_STRUCT_E); - } else { - php_wddx_add_chunk_static(packet, WDDX_ARRAY_E); - } -} -/* }}} */ - -/* {{{ php_wddx_serialize_var - */ -void php_wddx_serialize_var(wddx_packet *packet, zval *var, zend_string *name) -{ - HashTable *ht; - - if (name) { - char *tmp_buf; - zend_string *name_esc = php_escape_html_entities((unsigned char *) ZSTR_VAL(name), ZSTR_LEN(name), 0, ENT_QUOTES, NULL); - tmp_buf = emalloc(ZSTR_LEN(name_esc) + sizeof(WDDX_VAR_S)); - snprintf(tmp_buf, ZSTR_LEN(name_esc) + sizeof(WDDX_VAR_S), WDDX_VAR_S, ZSTR_VAL(name_esc)); - php_wddx_add_chunk(packet, tmp_buf); - efree(tmp_buf); - zend_string_release_ex(name_esc, 0); - } - - if (Z_TYPE_P(var) == IS_INDIRECT) { - var = Z_INDIRECT_P(var); - } - ZVAL_DEREF(var); - switch (Z_TYPE_P(var)) { - case IS_STRING: - php_wddx_serialize_string(packet, var); - break; - - case IS_LONG: - case IS_DOUBLE: - php_wddx_serialize_number(packet, var); - break; - - case IS_TRUE: - case IS_FALSE: - php_wddx_serialize_boolean(packet, var); - break; - - case IS_NULL: - php_wddx_serialize_unset(packet); - break; - - case IS_ARRAY: - ht = Z_ARRVAL_P(var); - if (Z_REFCOUNTED_P(var)) { - if (GC_IS_RECURSIVE(ht)) { - zend_throw_error(NULL, "WDDX doesn't support circular references"); - return; - } - GC_PROTECT_RECURSION(ht); - } - php_wddx_serialize_array(packet, var); - if (Z_REFCOUNTED_P(var)) { - GC_UNPROTECT_RECURSION(ht); - } - break; - - case IS_OBJECT: - ht = Z_OBJPROP_P(var); - if (GC_IS_RECURSIVE(ht)) { - zend_throw_error(NULL, "WDDX doesn't support circular references"); - return; - } - GC_PROTECT_RECURSION(ht); - php_wddx_serialize_object(packet, var); - GC_UNPROTECT_RECURSION(ht); - break; - } - - if (name) { - php_wddx_add_chunk_static(packet, WDDX_VAR_E); - } -} -/* }}} */ - -/* {{{ php_wddx_add_var - */ -static void php_wddx_add_var(wddx_packet *packet, zval *name_var) -{ - zval *val; - HashTable *target_hash; - - if (Z_TYPE_P(name_var) == IS_STRING) { - zend_array *symbol_table = zend_rebuild_symbol_table(); - if ((val = zend_hash_find(symbol_table, Z_STR_P(name_var))) != NULL) { - if (Z_TYPE_P(val) == IS_INDIRECT) { - val = Z_INDIRECT_P(val); - } - php_wddx_serialize_var(packet, val, Z_STR_P(name_var)); - } - } else if (Z_TYPE_P(name_var) == IS_ARRAY || Z_TYPE_P(name_var) == IS_OBJECT) { - int is_array = Z_TYPE_P(name_var) == IS_ARRAY; - - target_hash = HASH_OF(name_var); - - if (!Z_REFCOUNTED_P(name_var)) { - ZEND_HASH_FOREACH_VAL(target_hash, val) { - php_wddx_add_var(packet, val); - } ZEND_HASH_FOREACH_END(); - } else { - if (is_array) { - if (GC_IS_RECURSIVE(target_hash)) { - php_error_docref(NULL, E_WARNING, "recursion detected"); - return; - } - GC_PROTECT_RECURSION(target_hash); - } - ZEND_HASH_FOREACH_VAL(target_hash, val) { - ZVAL_DEREF(val); - php_wddx_add_var(packet, val); - - } ZEND_HASH_FOREACH_END(); - if (is_array) { - GC_UNPROTECT_RECURSION(target_hash); - } - } - } -} -/* }}} */ - -/* {{{ php_wddx_push_element - */ -static void php_wddx_push_element(void *user_data, const XML_Char *name, const XML_Char **atts) -{ - st_entry ent; - wddx_stack *stack = (wddx_stack *)user_data; - if (!strcmp((char *)name, EL_PACKET)) { - int i; - - if (atts) for (i=0; atts[i]; i++) { - if (!strcmp((char *)atts[i], EL_VERSION)) { - /* nothing for now */ - } - } - } else if (!strcmp((char *)name, EL_STRING)) { - ent.type = ST_STRING; - SET_STACK_VARNAME; - - ZVAL_STR(&ent.data, ZSTR_EMPTY_ALLOC()); - wddx_stack_push((wddx_stack *)stack, &ent, sizeof(st_entry)); - } else if (!strcmp((char *)name, EL_BINARY)) { - ent.type = ST_BINARY; - SET_STACK_VARNAME; - - ZVAL_STR(&ent.data, ZSTR_EMPTY_ALLOC()); - wddx_stack_push((wddx_stack *)stack, &ent, sizeof(st_entry)); - } else if (!strcmp((char *)name, EL_CHAR)) { - int i; - - if (atts) for (i = 0; atts[i]; i++) { - if (!strcmp((char *)atts[i], EL_CHAR_CODE) && atts[i+1] && atts[i+1][0]) { - char tmp_buf[2]; - - snprintf(tmp_buf, sizeof(tmp_buf), "%c", (char)strtol((char *)atts[i+1], NULL, 16)); - php_wddx_process_data(user_data, (XML_Char *) tmp_buf, strlen(tmp_buf)); - break; - } - } - } else if (!strcmp((char *)name, EL_NUMBER)) { - ent.type = ST_NUMBER; - SET_STACK_VARNAME; - - ZVAL_LONG(&ent.data, 0); - wddx_stack_push((wddx_stack *)stack, &ent, sizeof(st_entry)); - } else if (!strcmp((char *)name, EL_BOOLEAN)) { - int i; - - ent.type = ST_BOOLEAN; - SET_STACK_VARNAME; - if (atts) for (i = 0; atts[i]; i++) { - if (!strcmp((char *)atts[i], EL_VALUE) && atts[i+1] && atts[i+1][0]) { - ZVAL_TRUE(&ent.data); - wddx_stack_push((wddx_stack *)stack, &ent, sizeof(st_entry)); - php_wddx_process_data(user_data, atts[i+1], strlen((char *)atts[i+1])); - break; - } - } else { - ZVAL_FALSE(&ent.data); - wddx_stack_push((wddx_stack *)stack, &ent, sizeof(st_entry)); - } - } else if (!strcmp((char *)name, EL_NULL)) { - ent.type = ST_NULL; - SET_STACK_VARNAME; - - ZVAL_NULL(&ent.data); - - wddx_stack_push((wddx_stack *)stack, &ent, sizeof(st_entry)); - } else if (!strcmp((char *)name, EL_ARRAY)) { - ent.type = ST_ARRAY; - SET_STACK_VARNAME; - - array_init(&ent.data); - wddx_stack_push((wddx_stack *)stack, &ent, sizeof(st_entry)); - } else if (!strcmp((char *)name, EL_STRUCT)) { - ent.type = ST_STRUCT; - SET_STACK_VARNAME; - array_init(&ent.data); - wddx_stack_push((wddx_stack *)stack, &ent, sizeof(st_entry)); - } else if (!strcmp((char *)name, EL_VAR)) { - int i; - - if (atts) for (i = 0; atts[i]; i++) { - if (!strcmp((char *)atts[i], EL_NAME) && atts[i+1] && atts[i+1][0]) { - if (stack->varname) efree(stack->varname); - stack->varname = estrdup((char *)atts[i+1]); - break; - } - } - } else if (!strcmp((char *)name, EL_RECORDSET)) { - int i; - - ent.type = ST_RECORDSET; - SET_STACK_VARNAME; - array_init(&ent.data); - - if (atts) for (i = 0; atts[i]; i++) { - if (!strcmp((char *)atts[i], "fieldNames") && atts[i+1] && atts[i+1][0]) { - zval tmp; - char *key; - const char *p1, *p2, *endp; - - i++; - endp = (char *)atts[i] + strlen((char *)atts[i]); - p1 = (char *)atts[i]; - while ((p2 = php_memnstr(p1, ",", sizeof(",")-1, endp)) != NULL) { - key = estrndup(p1, p2 - p1); - array_init(&tmp); - add_assoc_zval_ex(&ent.data, key, p2 - p1, &tmp); - p1 = p2 + sizeof(",")-1; - efree(key); - } - - if (p1 <= endp) { - array_init(&tmp); - add_assoc_zval_ex(&ent.data, p1, endp - p1, &tmp); - } - - break; - } - } - - wddx_stack_push((wddx_stack *)stack, &ent, sizeof(st_entry)); - } else if (!strcmp((char *)name, EL_FIELD)) { - int i; - st_entry ent; - - ent.type = ST_FIELD; - ent.varname = NULL; - ZVAL_UNDEF(&ent.data); - - if (atts) for (i = 0; atts[i]; i++) { - if (!strcmp((char *)atts[i], EL_NAME) && atts[i+1] && atts[i+1][0]) { - st_entry *recordset; - zval *field; - - if (wddx_stack_top(stack, (void**)&recordset) == SUCCESS && - recordset->type == ST_RECORDSET && - (field = zend_hash_str_find(Z_ARRVAL(recordset->data), (char*)atts[i+1], strlen((char *)atts[i+1]))) != NULL) { - ZVAL_COPY_VALUE(&ent.data, field); - } - - break; - } - } - - wddx_stack_push((wddx_stack *)stack, &ent, sizeof(st_entry)); - } else if (!strcmp((char *)name, EL_DATETIME)) { - ent.type = ST_DATETIME; - SET_STACK_VARNAME; - - ZVAL_LONG(&ent.data, 0); - wddx_stack_push((wddx_stack *)stack, &ent, sizeof(st_entry)); - } -} -/* }}} */ - -/* {{{ php_wddx_pop_element - */ -static void php_wddx_pop_element(void *user_data, const XML_Char *name) -{ - st_entry *ent1, *ent2; - wddx_stack *stack = (wddx_stack *)user_data; - HashTable *target_hash; - zend_class_entry *pce; - zval obj; - -/* OBJECTS_FIXME */ - if (stack->top == 0) { - return; - } - - if (!strcmp((char *)name, EL_STRING) || !strcmp((char *)name, EL_NUMBER) || - !strcmp((char *)name, EL_BOOLEAN) || !strcmp((char *)name, EL_NULL) || - !strcmp((char *)name, EL_ARRAY) || !strcmp((char *)name, EL_STRUCT) || - !strcmp((char *)name, EL_RECORDSET) || !strcmp((char *)name, EL_BINARY) || - !strcmp((char *)name, EL_DATETIME)) { - wddx_stack_top(stack, (void**)&ent1); - - if (Z_TYPE(ent1->data) == IS_UNDEF) { - if (stack->top > 1) { - stack->top--; - efree(ent1); - } else { - stack->done = 1; - } - return; - } - - if (!strcmp((char *)name, EL_BINARY)) { - zend_string *new_str = NULL; - - if (ZSTR_EMPTY_ALLOC() != Z_STR(ent1->data)) { - new_str = php_base64_decode( - (unsigned char *)Z_STRVAL(ent1->data), Z_STRLEN(ent1->data)); - } - - zval_ptr_dtor(&ent1->data); - if (new_str) { - ZVAL_STR(&ent1->data, new_str); - } else { - ZVAL_EMPTY_STRING(&ent1->data); - } - } - - /* Call __wakeup() method on the object. */ - if (Z_TYPE(ent1->data) == IS_OBJECT) { - zval fname, retval; - - ZVAL_STRING(&fname, "__wakeup"); - - call_user_function(NULL, &ent1->data, &fname, &retval, 0, 0); - - zval_ptr_dtor(&fname); - zval_ptr_dtor(&retval); - } - - if (stack->top > 1) { - stack->top--; - wddx_stack_top(stack, (void**)&ent2); - - /* if non-existent field */ - if (Z_ISUNDEF(ent2->data)) { - zval_ptr_dtor(&ent1->data); - efree(ent1); - return; - } - - if (Z_TYPE(ent2->data) == IS_ARRAY || Z_TYPE(ent2->data) == IS_OBJECT) { - target_hash = HASH_OF(&ent2->data); - - if (ent1->varname) { - if (!strcmp(ent1->varname, PHP_CLASS_NAME_VAR) && - Z_TYPE(ent1->data) == IS_STRING && Z_STRLEN(ent1->data) && - ent2->type == ST_STRUCT && Z_TYPE(ent2->data) == IS_ARRAY) { - zend_bool incomplete_class = 0; - - zend_str_tolower(Z_STRVAL(ent1->data), Z_STRLEN(ent1->data)); - zend_string_forget_hash_val(Z_STR(ent1->data)); - if ((pce = zend_hash_find_ptr(EG(class_table), Z_STR(ent1->data))) == NULL) { - incomplete_class = 1; - pce = PHP_IC_ENTRY; - } - - if (pce != PHP_IC_ENTRY && (pce->serialize || pce->unserialize)) { - zval_ptr_dtor(&ent2->data); - ZVAL_UNDEF(&ent2->data); - php_error_docref(NULL, E_WARNING, "Class %s can not be unserialized", Z_STRVAL(ent1->data)); - } else { - /* Initialize target object */ - if (object_init_ex(&obj, pce) != SUCCESS || EG(exception)) { - zval_ptr_dtor(&ent2->data); - ZVAL_UNDEF(&ent2->data); - php_error_docref(NULL, E_WARNING, "Class %s can not be instantiated", Z_STRVAL(ent1->data)); - } else { - /* Merge current hashtable with object's default properties */ - zend_hash_merge(Z_OBJPROP(obj), - Z_ARRVAL(ent2->data), - zval_add_ref, 0); - - if (incomplete_class) { - php_store_class_name(&obj, Z_STRVAL(ent1->data), Z_STRLEN(ent1->data)); - } - - /* Clean up old array entry */ - zval_ptr_dtor(&ent2->data); - - /* Set stack entry to point to the newly created object */ - ZVAL_COPY_VALUE(&ent2->data, &obj); - } - } - - /* Clean up class name var entry */ - zval_ptr_dtor(&ent1->data); - } else if (Z_TYPE(ent2->data) == IS_OBJECT) { - zend_update_property(Z_OBJCE(ent2->data), &ent2->data, ent1->varname, strlen(ent1->varname), &ent1->data); - Z_TRY_DELREF(ent1->data); - } else { - zend_symtable_str_update(target_hash, ent1->varname, strlen(ent1->varname), &ent1->data); - } - efree(ent1->varname); - } else { - zend_hash_next_index_insert(target_hash, &ent1->data); - } - } - efree(ent1); - } else { - stack->done = 1; - } - } else if (!strcmp((char *)name, EL_VAR) && stack->varname) { - efree(stack->varname); - stack->varname = NULL; - } else if (!strcmp((char *)name, EL_FIELD)) { - st_entry *ent; - wddx_stack_top(stack, (void **)&ent); - efree(ent); - stack->top--; - } -} -/* }}} */ - -/* {{{ php_wddx_process_data - */ -static void php_wddx_process_data(void *user_data, const XML_Char *s, int len) -{ - st_entry *ent; - wddx_stack *stack = (wddx_stack *)user_data; - - if (!wddx_stack_is_empty(stack) && !stack->done) { - wddx_stack_top(stack, (void**)&ent); - switch (ent->type) { - case ST_BINARY: - case ST_STRING: - if (Z_STRLEN(ent->data) == 0) { - zval_ptr_dtor(&ent->data); - ZVAL_STRINGL(&ent->data, (char *)s, len); - } else { - Z_STR(ent->data) = zend_string_extend(Z_STR(ent->data), Z_STRLEN(ent->data) + len, 0); - memcpy(Z_STRVAL(ent->data) + Z_STRLEN(ent->data) - len, (char *)s, len); - Z_STRVAL(ent->data)[Z_STRLEN(ent->data)] = '\0'; - } - break; - case ST_NUMBER: - ZVAL_STRINGL(&ent->data, (char *)s, len); - convert_scalar_to_number(&ent->data); - break; - - case ST_BOOLEAN: - if (!strcmp((char *)s, "true")) { - ZVAL_TRUE(&ent->data); - } else if (!strcmp((char *)s, "false")) { - ZVAL_FALSE(&ent->data); - } else { - zval_ptr_dtor(&ent->data); - if (ent->varname) { - efree(ent->varname); - ent->varname = NULL; - } - ZVAL_UNDEF(&ent->data); - } - break; - - case ST_DATETIME: { - zend_string *str; - - if (Z_TYPE(ent->data) == IS_STRING) { - str = zend_string_safe_alloc(Z_STRLEN(ent->data), 1, len, 0); - memcpy(ZSTR_VAL(str), Z_STRVAL(ent->data), Z_STRLEN(ent->data)); - memcpy(ZSTR_VAL(str) + Z_STRLEN(ent->data), s, len); - ZSTR_VAL(str)[ZSTR_LEN(str)] = '\0'; - zval_ptr_dtor_str(&ent->data); - } else { - str = zend_string_init((char *)s, len, 0); - } - - ZVAL_LONG(&ent->data, php_parse_date(ZSTR_VAL(str), NULL)); - /* date out of range < 1969 or > 2038 */ - if (Z_LVAL(ent->data) == -1) { - ZVAL_STR_COPY(&ent->data, str); - } - - zend_string_release_ex(str, 0); - } - break; - - default: - break; - } - } -} -/* }}} */ - -/* {{{ php_wddx_deserialize_ex - */ -int php_wddx_deserialize_ex(const char *value, size_t vallen, zval *return_value) -{ - wddx_stack stack; - XML_Parser parser; - st_entry *ent; - int retval; - - wddx_stack_init(&stack); - parser = XML_ParserCreate((XML_Char *) "UTF-8"); - - XML_SetUserData(parser, &stack); - XML_SetElementHandler(parser, php_wddx_push_element, php_wddx_pop_element); - XML_SetCharacterDataHandler(parser, php_wddx_process_data); - - /* XXX value should be parsed in the loop to exhaust size_t */ - XML_Parse(parser, (const XML_Char *) value, (int)vallen, 1); - - XML_ParserFree(parser); - - if (stack.top == 1) { - wddx_stack_top(&stack, (void**)&ent); - if (Z_ISUNDEF(ent->data)) { - retval = FAILURE; - } else { - ZVAL_COPY(return_value, &ent->data); - retval = SUCCESS; - } - } else { - retval = FAILURE; - } - - wddx_stack_destroy(&stack); - - return retval; -} -/* }}} */ - -/* {{{ proto string wddx_serialize_value(mixed var [, string comment]) - Creates a new packet and serializes the given value */ -PHP_FUNCTION(wddx_serialize_value) -{ - zval *var; - char *comment = NULL; - size_t comment_len = 0; - wddx_packet *packet; - - if (zend_parse_parameters(ZEND_NUM_ARGS(), "z|s", &var, &comment, &comment_len) == FAILURE) { - return; - } - - packet = php_wddx_constructor(); - - php_wddx_packet_start(packet, comment, comment_len); - php_wddx_serialize_var(packet, var, NULL); - php_wddx_packet_end(packet); - smart_str_0(packet); - - RETVAL_STR_COPY(packet->s); - php_wddx_destructor(packet); -} -/* }}} */ - -/* {{{ proto string wddx_serialize_vars(mixed var_name [, mixed ...]) - Creates a new packet and serializes given variables into a struct */ -PHP_FUNCTION(wddx_serialize_vars) -{ - int num_args, i; - wddx_packet *packet; - zval *args = NULL; - - if (zend_parse_parameters(ZEND_NUM_ARGS(), "+", &args, &num_args) == FAILURE) { - return; - } - - packet = php_wddx_constructor(); - - php_wddx_packet_start(packet, NULL, 0); - php_wddx_add_chunk_static(packet, WDDX_STRUCT_S); - - for (i=0; i<num_args; i++) { - zval *arg; - if (!Z_ISREF(args[i])) { - arg = &args[i]; - } else { - arg = Z_REFVAL(args[i]); - } - if (Z_TYPE_P(arg) != IS_ARRAY && Z_TYPE_P(arg) != IS_OBJECT) { - convert_to_string_ex(arg); - } - php_wddx_add_var(packet, arg); - } - - php_wddx_add_chunk_static(packet, WDDX_STRUCT_E); - php_wddx_packet_end(packet); - smart_str_0(packet); - - RETVAL_STR_COPY(packet->s); - php_wddx_destructor(packet); -} -/* }}} */ - -/* {{{ php_wddx_constructor - */ -wddx_packet *php_wddx_constructor(void) -{ - smart_str *packet; - - packet = ecalloc(1, sizeof(smart_str)); - - return packet; -} -/* }}} */ - -/* {{{ php_wddx_destructor - */ -void php_wddx_destructor(wddx_packet *packet) -{ - smart_str_free(packet); - efree(packet); -} -/* }}} */ - -/* {{{ proto resource wddx_packet_start([string comment]) - Starts a WDDX packet with optional comment and returns the packet id */ -PHP_FUNCTION(wddx_packet_start) -{ - char *comment = NULL; - size_t comment_len = 0; - wddx_packet *packet; - - comment = NULL; - - if (zend_parse_parameters(ZEND_NUM_ARGS(), "|s", &comment, &comment_len) == FAILURE) { - return; - } - - packet = php_wddx_constructor(); - - php_wddx_packet_start(packet, comment, comment_len); - php_wddx_add_chunk_static(packet, WDDX_STRUCT_S); - - RETURN_RES(zend_register_resource(packet, le_wddx)); -} -/* }}} */ - -/* {{{ proto string wddx_packet_end(resource packet_id) - Ends specified WDDX packet and returns the string containing the packet */ -PHP_FUNCTION(wddx_packet_end) -{ - zval *packet_id; - wddx_packet *packet = NULL; - - if (zend_parse_parameters(ZEND_NUM_ARGS(), "r", &packet_id) == FAILURE) { - return; - } - - if ((packet = (wddx_packet *)zend_fetch_resource(Z_RES_P(packet_id), "WDDX packet ID", le_wddx)) == NULL) { - RETURN_FALSE; - } - - php_wddx_add_chunk_static(packet, WDDX_STRUCT_E); - - php_wddx_packet_end(packet); - smart_str_0(packet); - - RETVAL_STR_COPY(packet->s); - - zend_list_close(Z_RES_P(packet_id)); -} -/* }}} */ - -/* {{{ proto bool wddx_add_vars(resource packet_id, mixed var_names [, mixed ...]) - Serializes given variables and adds them to packet given by packet_id */ -PHP_FUNCTION(wddx_add_vars) -{ - int num_args, i; - zval *args = NULL; - zval *packet_id; - wddx_packet *packet = NULL; - - if (zend_parse_parameters(ZEND_NUM_ARGS(), "r+", &packet_id, &args, &num_args) == FAILURE) { - return; - } - - if ((packet = (wddx_packet *)zend_fetch_resource(Z_RES_P(packet_id), "WDDX packet ID", le_wddx)) == NULL) { - RETURN_FALSE; - } - - for (i=0; i<num_args; i++) { - zval *arg; - if (!Z_ISREF(args[i])) { - arg = &args[i]; - } else { - arg = Z_REFVAL(args[i]); - } - if (Z_TYPE_P(arg) != IS_ARRAY && Z_TYPE_P(arg) != IS_OBJECT) { - convert_to_string_ex(arg); - } - php_wddx_add_var(packet, arg); - } - - RETURN_TRUE; -} -/* }}} */ - -/* {{{ proto mixed wddx_deserialize(mixed packet) - Deserializes given packet and returns a PHP value */ -PHP_FUNCTION(wddx_deserialize) -{ - zval *packet; - php_stream *stream = NULL; - zend_string *payload = NULL; - - if (zend_parse_parameters(ZEND_NUM_ARGS(), "z", &packet) == FAILURE) { - return; - } - - if (Z_TYPE_P(packet) == IS_STRING) { - payload = Z_STR_P(packet); - } else if (Z_TYPE_P(packet) == IS_RESOURCE) { - php_stream_from_zval(stream, packet); - if (stream) { - payload = php_stream_copy_to_mem(stream, PHP_STREAM_COPY_ALL, 0); - } - } else { - php_error_docref(NULL, E_WARNING, "Expecting parameter 1 to be a string or a stream"); - return; - } - - if (payload == NULL) { - return; - } - - php_wddx_deserialize_ex(ZSTR_VAL(payload), ZSTR_LEN(payload), return_value); - - if (stream) { - efree(payload); - } -} -/* }}} */ - -#endif /* HAVE_LIBEXPAT */ diff --git a/main/internal_functions_win32.c b/main/internal_functions_win32.c index 45093ec739..c67b6ae0b5 100644 --- a/main/internal_functions_win32.c +++ b/main/internal_functions_win32.c @@ -92,9 +92,6 @@ #if HAVE_XML #include "ext/xml/php_xml.h" #endif -#if HAVE_XML && HAVE_WDDX -#include "ext/wddx/php_wddx.h" -#endif #include "ext/com_dotnet/php_com_dotnet.h" #ifdef HAVE_SPL #include "ext/spl/php_spl.h" @@ -164,9 +161,6 @@ static zend_module_entry * const php_builtin_extensions[] = { #if HAVE_XML ,phpext_xml_ptr #endif -#if HAVE_XML && HAVE_WDDX - ,phpext_wddx_ptr -#endif #if HAVE_SPL ,phpext_spl_ptr #endif |