dmitry Wed Oct 17 12:09:14 2007 UTC Modified files: /php-src/ext/soap php_encoding.c /php-src/ext/soap/tests classmap004.phpt Log: Fixed possible crash because of uninitialized value (Zdash Urf) http://cvs.php.net/viewvc.cgi/php-src/ext/soap/php_encoding.c?r1=1.164&r2=1.165&diff_format=u Index: php-src/ext/soap/php_encoding.c diff -u php-src/ext/soap/php_encoding.c:1.164 php-src/ext/soap/php_encoding.c:1.165 --- php-src/ext/soap/php_encoding.c:1.164 Sun Oct 7 05:15:05 2007 +++ php-src/ext/soap/php_encoding.c Wed Oct 17 12:09:14 2007 @@ -17,7 +17,7 @@ | Dmitry Stogov <[EMAIL PROTECTED]> | +----------------------------------------------------------------------+ */ -/* $Id: php_encoding.c,v 1.164 2007/10/07 05:15:05 davidw Exp $ */ +/* $Id: php_encoding.c,v 1.165 2007/10/17 12:09:14 dmitry Exp $ */ #include <time.h> @@ -1135,6 +1135,7 @@ zval *data; zend_class_entry *old_scope; + INIT_PZVAL(&member); ZVAL_STRING(&member, name, 0); old_scope = EG(scope); EG(scope) = Z_OBJCE_P(object); @@ -1169,6 +1170,7 @@ zval member; zend_class_entry *old_scope; + INIT_PZVAL(&member); ZVAL_STRING(&member, name, 0); old_scope = EG(scope); EG(scope) = Z_OBJCE_P(object); http://cvs.php.net/viewvc.cgi/php-src/ext/soap/tests/classmap004.phpt?r1=1.1&r2=1.2&diff_format=u Index: php-src/ext/soap/tests/classmap004.phpt diff -u /dev/null php-src/ext/soap/tests/classmap004.phpt:1.2 --- /dev/null Wed Oct 17 12:09:14 2007 +++ php-src/ext/soap/tests/classmap004.phpt Wed Oct 17 12:09:14 2007 @@ -0,0 +1,66 @@ +--TEST-- +SOAP Classmap 4: encoding of objects with __get() +--SKIPIF-- +<?php require_once('skipif.inc'); ?> +--FILE-- +<?php +ini_set("soap.wsdl_cache_enabled",0); + +class A { + public $a; + function __construct($a){ + $this->x = $a; + } + function __get($name) { + return @$this->a[$name]; + } + function __set($name, $val) { + $this->a[$name] = $val; + } + function __unset($name) { + unset($this->a[$name]); + } +} + +class B extends A { + function __construct($a){ + parent::__construct($a); + $this->y = $a + 1; + } +} + +function f(){ + return new B(5); +} + +class LocalSoapClient extends SoapClient { + + function __construct($wsdl, $options) { + parent::__construct($wsdl, $options); + $this->server = new SoapServer($wsdl, $options); + $this->server->addFunction("f"); + } + + function __doRequest($request, $location, $action, $version) { + ob_start(); + $this->server->handle($request); + $response = ob_get_contents(); + ob_end_clean(); + return $response; + } +} + +$client = new LocalSoapClient(dirname(__FILE__)."/classmap003.wsdl", + array('classmap'=>array('A'=>'A','B'=>'B'))); +print_r($client->f()); +?> +--EXPECT-- +B Object +( + [a] => Array + ( + [x] => 5 + [y] => 6 + ) + +)
-- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php