mirror of
https://github.com/php/php-src.git
synced 2024-10-02 15:26:06 +00:00
Merge branch 'PHP-5.4' of git.php.net:/php-src into PHP-5.4
This commit is contained in:
commit
fa014e07bf
@ -2,11 +2,11 @@
|
||||
PHP Coding Standards
|
||||
========================
|
||||
|
||||
This file lists several standards that any programmer, adding or changing
|
||||
code in PHP, should follow. Since this file was added at a very late
|
||||
This file lists several standards that any programmer adding or changing
|
||||
code in PHP should follow. Since this file was added at a very late
|
||||
stage of the development of PHP v3.0, the code base does not (yet) fully
|
||||
follow it, but it's going in that general direction. Since we are now
|
||||
well into the version 4 releases, many sections have been recoded to use
|
||||
well into version 5 releases, many sections have been recoded to use
|
||||
these rules.
|
||||
|
||||
Code Implementation
|
||||
|
33
NEWS
33
NEWS
@ -2,6 +2,35 @@ PHP NEWS
|
||||
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||
?? ??? 2012, PHP 5.4.8
|
||||
|
||||
- Core:
|
||||
. Added optional second argument for assert() to specify custom message. Patch
|
||||
by Lonny Kapelushnik (lonny@lonnylot.com). (Lars)
|
||||
. Fixed bug #62976 (Notice: could not be converted to int when comparing
|
||||
some builtin classes). (Laruence)
|
||||
. Fixed bug #62955 (Only one directive is loaded from "Per Directory Values"
|
||||
Windows registry). (aserbulov at parallels dot com)
|
||||
. Fixed bug #62907 (Double free when use traits). (Dmitry)
|
||||
. Fixed bug #61767 (Shutdown functions not called in certain error
|
||||
situation). (Dmitry)
|
||||
. Fixed bug #60909 (custom error handler throwing Exception + fatal error
|
||||
= no shutdown function). (Dmitry)
|
||||
|
||||
- SOAP
|
||||
. Fixed bug #50997 (SOAP Error when trying to submit 2nd Element of a choice).
|
||||
(Dmitry)
|
||||
|
||||
- SPL:
|
||||
. Bug #62987 (Assigning to ArrayObject[null][something] overrides all
|
||||
undefined variables). (Laruence)
|
||||
|
||||
- mbstring:
|
||||
. Allow passing null as a default value to mb_substr() and mb_strcut(). Patch
|
||||
by Alexander Moskaliov via GitHub PR #133. (Lars)
|
||||
|
||||
- Filter extension:
|
||||
. Bug #49510: Boolean validation fails with FILTER_NULL_ON_FAILURE with empty
|
||||
string or false. (Lars)
|
||||
|
||||
?? ??? 2012, PHP 5.4.7
|
||||
|
||||
- Core:
|
||||
@ -59,6 +88,10 @@ PHP NEWS
|
||||
. Fixed bug (segfault due to PS(mod_user_implemented) not be reseted
|
||||
when close handler call exit). (Laruence)
|
||||
|
||||
- SOAP
|
||||
. Fixed bug #50997 (SOAP Error when trying to submit 2nd Element of a choice).
|
||||
(Dmitry)
|
||||
|
||||
- SPL:
|
||||
. Fixed bug #62904 (Crash when cloning an object which inherits SplFixedArray)
|
||||
(Laruence)
|
||||
|
@ -13,4 +13,10 @@ function eh()
|
||||
set_error_handler("eh");
|
||||
$a = $empty($b);
|
||||
--EXPECTF--
|
||||
Warning: Uncaught exception 'Exception' with message 'error!' in %sbug51394.php:4
|
||||
Stack trace:
|
||||
#0 %sbug51394.php(9): eh(8, 'Undefined varia...', '%s', 9, Array)
|
||||
#1 {main}
|
||||
thrown in %sbug51394.php on line 4
|
||||
|
||||
Fatal error: Function name must be a string in %sbug51394.php on line 9
|
24
Zend/tests/bug60909_1.phpt
Normal file
24
Zend/tests/bug60909_1.phpt
Normal file
@ -0,0 +1,24 @@
|
||||
--TEST--
|
||||
Bug #60909 (custom error handler throwing Exception + fatal error = no shutdown function).
|
||||
--FILE--
|
||||
<?php
|
||||
register_shutdown_function(function(){echo("\n\n!!!shutdown!!!\n\n");});
|
||||
set_error_handler(function($errno, $errstr, $errfile, $errline){
|
||||
echo "error($errstr)";
|
||||
throw new Exception("Foo");
|
||||
});
|
||||
|
||||
require 'notfound.php';
|
||||
--EXPECTF--
|
||||
error(require(notfound.php): failed to open stream: No such file or directory)
|
||||
Warning: Uncaught exception 'Exception' with message 'Foo' in %sbug60909_1.php:5
|
||||
Stack trace:
|
||||
#0 %sbug60909_1.php(8): {closure}(2, 'require(notfoun...', '%s', 8, Array)
|
||||
#1 %sbug60909_1.php(8): require()
|
||||
#2 {main}
|
||||
thrown in %sbug60909_1.php on line 5
|
||||
|
||||
Fatal error: main(): Failed opening required 'notfound.php' (include_path='%s') in %sbug60909_1.php on line 8
|
||||
|
||||
|
||||
!!!shutdown!!!
|
20
Zend/tests/bug60909_2.phpt
Normal file
20
Zend/tests/bug60909_2.phpt
Normal file
@ -0,0 +1,20 @@
|
||||
--TEST--
|
||||
Bug #60909 (custom error handler throwing Exception + fatal error = no shutdown function).
|
||||
--FILE--
|
||||
<?php
|
||||
register_shutdown_function(function(){echo("\n\n!!!shutdown!!!\n\n");});
|
||||
set_error_handler(function($errno, $errstr, $errfile, $errline){throw new Exception("Foo");});
|
||||
|
||||
class Bad {
|
||||
public function __toString() {
|
||||
throw new Exception('Oops, I cannot do this');
|
||||
}
|
||||
}
|
||||
|
||||
$bad = new Bad();
|
||||
echo "$bad";
|
||||
--EXPECTF--
|
||||
Fatal error: Method Bad::__toString() must not throw an exception in %sbug60909_2.php on line 0
|
||||
|
||||
|
||||
!!!shutdown!!!
|
34
Zend/tests/bug61767.phpt
Normal file
34
Zend/tests/bug61767.phpt
Normal file
@ -0,0 +1,34 @@
|
||||
--TEST--
|
||||
Bug #61767 (Shutdown functions not called in certain error situation)
|
||||
--FILE--
|
||||
<?php
|
||||
set_error_handler(function($code, $msg, $file = null, $line = null) {
|
||||
echo "Error handler called ($msg)\n";
|
||||
throw new \ErrorException($msg, $code, 0, $file, $line);
|
||||
});
|
||||
|
||||
register_shutdown_function(function(){
|
||||
echo "Shutting down\n";
|
||||
print_r(error_get_last());
|
||||
});
|
||||
|
||||
//$undefined = null; // defined variable does not cause problems
|
||||
$undefined->foo();
|
||||
--EXPECTF--
|
||||
Error handler called (Undefined variable: undefined)
|
||||
|
||||
Warning: Uncaught exception 'ErrorException' with message 'Undefined variable: undefined' in %sbug61767.php:13
|
||||
Stack trace:
|
||||
#0 %sbug61767.php(13): {closure}(8, 'Undefined varia...', '%s', 13, Array)
|
||||
#1 {main}
|
||||
thrown in %sbug61767.php on line 13
|
||||
|
||||
Fatal error: Call to a member function foo() on a non-object in %sbug61767.php on line 13
|
||||
Shutting down
|
||||
Array
|
||||
(
|
||||
[type] => 1
|
||||
[message] => Call to a member function foo() on a non-object
|
||||
[file] => %sbug61767.php
|
||||
[line] => 13
|
||||
)
|
@ -1,7 +1,5 @@
|
||||
--TEST--
|
||||
Bug #62907 (Double free when use traits)
|
||||
--XFAIL--
|
||||
bug is not fixed yet
|
||||
--FILE--
|
||||
<?php
|
||||
function __autoload($name) {
|
||||
|
23
Zend/zend.c
23
Zend/zend.c
@ -1028,6 +1028,29 @@ ZEND_API void zend_error(int type, const char *format, ...) /* {{{ */
|
||||
zend_stack context_stack;
|
||||
TSRMLS_FETCH();
|
||||
|
||||
/* Report about uncaught exception in case of fatal errors */
|
||||
if (EG(exception)) {
|
||||
switch (type) {
|
||||
case E_CORE_ERROR:
|
||||
case E_ERROR:
|
||||
case E_RECOVERABLE_ERROR:
|
||||
case E_PARSE:
|
||||
case E_COMPILE_ERROR:
|
||||
case E_USER_ERROR:
|
||||
if (zend_is_executing(TSRMLS_C)) {
|
||||
error_lineno = zend_get_executed_lineno(TSRMLS_C);
|
||||
}
|
||||
zend_exception_error(EG(exception), E_WARNING TSRMLS_CC);
|
||||
EG(exception) = NULL;
|
||||
if (zend_is_executing(TSRMLS_C) && EG(opline_ptr)) {
|
||||
active_opline->lineno = error_lineno;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
/* Obtain relevant filename and lineno */
|
||||
switch (type) {
|
||||
case E_CORE_ERROR:
|
||||
|
@ -78,7 +78,7 @@ ZEND_METHOD(Closure, __invoke) /* {{{ */
|
||||
|
||||
/* {{{ proto Closure Closure::bind(Closure $old, object $to [, mixed $scope = "static" ] )
|
||||
Create a closure from another one and bind to another object and scope */
|
||||
ZEND_METHOD(Closure, bind) /* {{{ */
|
||||
ZEND_METHOD(Closure, bind)
|
||||
{
|
||||
zval *newthis, *zclosure, *scope_arg = NULL;
|
||||
zend_closure *closure;
|
||||
|
@ -3878,10 +3878,10 @@ static int zend_traits_copy_functions(zend_function *fn TSRMLS_DC, int num_args,
|
||||
&& (zend_binary_strcasecmp(aliases[i]->trait_method->method_name, aliases[i]->trait_method->mname_len, fn->common.function_name, fnname_len) == 0)) {
|
||||
fn_copy = *fn;
|
||||
function_add_ref(&fn_copy);
|
||||
/* this function_name is never destroyed, because its refcount
|
||||
greater than 1 and classes are always destoyed before the
|
||||
traits they use */
|
||||
/* this function_name is never destroyed, because ZEND_ACC_ALIAS
|
||||
flag is set */
|
||||
fn_copy.common.function_name = aliases[i]->alias;
|
||||
fn_copy.common.fn_flags |= ZEND_ACC_ALIAS;
|
||||
|
||||
/* if it is 0, no modifieres has been changed */
|
||||
if (aliases[i]->modifiers) {
|
||||
@ -3914,6 +3914,7 @@ static int zend_traits_copy_functions(zend_function *fn TSRMLS_DC, int num_args,
|
||||
/* is not in hashtable, thus, function is not to be excluded */
|
||||
fn_copy = *fn;
|
||||
function_add_ref(&fn_copy);
|
||||
fn_copy.common.fn_flags |= ZEND_ACC_ALIAS;
|
||||
|
||||
/* apply aliases which are not qualified by a class name, or which have not
|
||||
* alias name, just setting visibility */
|
||||
|
@ -207,6 +207,8 @@ typedef struct _zend_try_catch_element {
|
||||
#define ZEND_ACC_RETURN_REFERENCE 0x4000000
|
||||
#define ZEND_ACC_DONE_PASS_TWO 0x8000000
|
||||
|
||||
#define ZEND_ACC_ALIAS 0x10000000
|
||||
|
||||
char *zend_visibility_string(zend_uint fn_flags);
|
||||
|
||||
|
||||
|
@ -1490,6 +1490,7 @@ ZEND_API int zend_std_cast_object_tostring(zval *readobj, zval *writeobj, int ty
|
||||
if (retval) {
|
||||
zval_ptr_dtor(&retval);
|
||||
}
|
||||
EG(exception) = NULL;
|
||||
zend_error_noreturn(E_ERROR, "Method %s::__toString() must not throw an exception", ce->name);
|
||||
return FAILURE;
|
||||
}
|
||||
|
@ -267,6 +267,15 @@ void _destroy_zend_class_traits_info(zend_class_entry *ce)
|
||||
}
|
||||
}
|
||||
|
||||
static int zend_clear_trait_method_name(zend_op_array *op_array TSRMLS_DC)
|
||||
{
|
||||
if (op_array->function_name && (op_array->fn_flags & ZEND_ACC_ALIAS) == 0) {
|
||||
efree(op_array->function_name);
|
||||
op_array->function_name = NULL;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
ZEND_API void destroy_zend_class(zend_class_entry **pce)
|
||||
{
|
||||
zend_class_entry *ce = *pce;
|
||||
@ -298,6 +307,10 @@ ZEND_API void destroy_zend_class(zend_class_entry **pce)
|
||||
}
|
||||
zend_hash_destroy(&ce->properties_info);
|
||||
str_efree(ce->name);
|
||||
if ((ce->ce_flags & ZEND_ACC_TRAIT) == ZEND_ACC_TRAIT) {
|
||||
TSRMLS_FETCH();
|
||||
zend_hash_apply(&ce->function_table, (apply_func_t)zend_clear_trait_method_name TSRMLS_CC);
|
||||
}
|
||||
zend_hash_destroy(&ce->function_table);
|
||||
zend_hash_destroy(&ce->constants_table);
|
||||
if (ce->num_interfaces > 0 && ce->interfaces) {
|
||||
@ -387,7 +400,7 @@ ZEND_API void destroy_op_array(zend_op_array *op_array TSRMLS_DC)
|
||||
}
|
||||
efree(op_array->opcodes);
|
||||
|
||||
if (op_array->function_name) {
|
||||
if (op_array->function_name && (op_array->fn_flags & ZEND_ACC_ALIAS) == 0) {
|
||||
efree((char*)op_array->function_name);
|
||||
}
|
||||
if (op_array->doc_comment) {
|
||||
|
@ -1519,6 +1519,9 @@ ZEND_API int compare_function(zval *result, zval *op1, zval *op2 TSRMLS_DC) /* {
|
||||
ret = compare_function(result, op1, op_free TSRMLS_CC);
|
||||
zend_free_obj_get_result(op_free TSRMLS_CC);
|
||||
return ret;
|
||||
} else if (Z_TYPE_P(op1) == IS_OBJECT) {
|
||||
ZVAL_LONG(result, 1);
|
||||
return SUCCESS;
|
||||
}
|
||||
}
|
||||
if (!converted) {
|
||||
|
@ -2,7 +2,7 @@
|
||||
+----------------------------------------------------------------------+
|
||||
| PHP Version 5 |
|
||||
+----------------------------------------------------------------------+
|
||||
| Copyright (c) 1997-2010 The PHP Group |
|
||||
| Copyright (c) 1997-2012 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 |
|
||||
|
@ -2,7 +2,7 @@
|
||||
+----------------------------------------------------------------------+
|
||||
| PHP Version 5 |
|
||||
+----------------------------------------------------------------------+
|
||||
| Copyright (c) 1997-2010 The PHP Group |
|
||||
| Copyright (c) 1997-2012 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 |
|
||||
|
@ -2,7 +2,7 @@
|
||||
+----------------------------------------------------------------------+
|
||||
| PHP Version 5 |
|
||||
+----------------------------------------------------------------------+
|
||||
| Copyright (c) 1997-2010 The PHP Group |
|
||||
| Copyright (c) 1997-2012 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 |
|
||||
|
@ -4,7 +4,7 @@
|
||||
+----------------------------------------------------------------------+
|
||||
| PHP Version 5 |
|
||||
+----------------------------------------------------------------------+
|
||||
| Copyright (c) 1997-2010 The PHP Group |
|
||||
| Copyright (c) 1997-2012 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 |
|
||||
|
@ -2,7 +2,7 @@
|
||||
+----------------------------------------------------------------------+
|
||||
| PHP Version 5 |
|
||||
+----------------------------------------------------------------------+
|
||||
| Copyright (c) 1997-2010 The PHP Group |
|
||||
| Copyright (c) 1997-2012 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 |
|
||||
|
@ -4,7 +4,7 @@
|
||||
+----------------------------------------------------------------------+
|
||||
| PHP Version 5 |
|
||||
+----------------------------------------------------------------------+
|
||||
| Copyright (c) 1997-2010 The PHP Group |
|
||||
| Copyright (c) 1997-2012 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 |
|
||||
|
@ -2,7 +2,7 @@
|
||||
+----------------------------------------------------------------------+
|
||||
| PHP Version 5 |
|
||||
+----------------------------------------------------------------------+
|
||||
| Copyright (c) 1997-2010 The PHP Group |
|
||||
| Copyright (c) 1997-2012 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 |
|
||||
|
@ -2,7 +2,7 @@
|
||||
+----------------------------------------------------------------------+
|
||||
| PHP Version 5 |
|
||||
+----------------------------------------------------------------------+
|
||||
| Copyright (c) 1997-2010 The PHP Group |
|
||||
| Copyright (c) 1997-2012 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 |
|
||||
|
@ -2,7 +2,7 @@
|
||||
+----------------------------------------------------------------------+
|
||||
| PHP Version 5 |
|
||||
+----------------------------------------------------------------------+
|
||||
| Copyright (c) 1997-2010 The PHP Group |
|
||||
| Copyright (c) 1997-2012 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 |
|
||||
|
@ -2,7 +2,7 @@
|
||||
+----------------------------------------------------------------------+
|
||||
| PHP Version 5 |
|
||||
+----------------------------------------------------------------------+
|
||||
| Copyright (c) 1997-2010 The PHP Group |
|
||||
| Copyright (c) 1997-2012 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 |
|
||||
|
@ -2,7 +2,7 @@
|
||||
+----------------------------------------------------------------------+
|
||||
| PHP Version 5 |
|
||||
+----------------------------------------------------------------------+
|
||||
| Copyright (c) 1997-2010 The PHP Group |
|
||||
| Copyright (c) 1997-2012 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 |
|
||||
|
@ -2,7 +2,7 @@
|
||||
+----------------------------------------------------------------------+
|
||||
| PHP Version 5 |
|
||||
+----------------------------------------------------------------------+
|
||||
| Copyright (c) 1997-2010 The PHP Group |
|
||||
| Copyright (c) 1997-2012 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 |
|
||||
|
@ -2,7 +2,7 @@
|
||||
+----------------------------------------------------------------------+
|
||||
| PHP Version 5 |
|
||||
+----------------------------------------------------------------------+
|
||||
| Copyright (c) 1997-2010 The PHP Group |
|
||||
| Copyright (c) 1997-2012 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 |
|
||||
|
@ -2,7 +2,7 @@
|
||||
+----------------------------------------------------------------------+
|
||||
| PHP Version 5 |
|
||||
+----------------------------------------------------------------------+
|
||||
| Copyright (c) 1997-2010 The PHP Group |
|
||||
| Copyright (c) 1997-2012 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 |
|
||||
|
@ -2,7 +2,7 @@
|
||||
+----------------------------------------------------------------------+
|
||||
| PHP Version 5 |
|
||||
+----------------------------------------------------------------------+
|
||||
| Copyright (c) 1997-2010 The PHP Group |
|
||||
| Copyright (c) 1997-2012 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 |
|
||||
|
@ -2,7 +2,7 @@
|
||||
+----------------------------------------------------------------------+
|
||||
| PHP Version 5 |
|
||||
+----------------------------------------------------------------------+
|
||||
| Copyright (c) 1997-2010 The PHP Group |
|
||||
| Copyright (c) 1997-2012 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 |
|
||||
|
@ -2,7 +2,7 @@
|
||||
+----------------------------------------------------------------------+
|
||||
| PHP Version 5 |
|
||||
+----------------------------------------------------------------------+
|
||||
| Copyright (c) 1997-2010 The PHP Group |
|
||||
| Copyright (c) 1997-2012 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 |
|
||||
|
@ -2,7 +2,7 @@
|
||||
+----------------------------------------------------------------------+
|
||||
| PHP Version 5 |
|
||||
+----------------------------------------------------------------------+
|
||||
| Copyright (c) 1997-2010 The PHP Group |
|
||||
| Copyright (c) 1997-2012 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 |
|
||||
|
@ -2,7 +2,7 @@
|
||||
+----------------------------------------------------------------------+
|
||||
| PHP Version 5 |
|
||||
+----------------------------------------------------------------------+
|
||||
| Copyright (c) 1997-2010 The PHP Group |
|
||||
| Copyright (c) 1997-2012 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 |
|
||||
|
@ -2,7 +2,7 @@
|
||||
+----------------------------------------------------------------------+
|
||||
| PHP Version 5 |
|
||||
+----------------------------------------------------------------------+
|
||||
| Copyright (c) 1997-2010 The PHP Group |
|
||||
| Copyright (c) 1997-2012 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 |
|
||||
|
@ -2,7 +2,7 @@
|
||||
+----------------------------------------------------------------------+
|
||||
| PHP Version 5 |
|
||||
+----------------------------------------------------------------------+
|
||||
| Copyright (c) 1997-2010 The PHP Group |
|
||||
| Copyright (c) 1997-2012 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 |
|
||||
|
@ -2,7 +2,7 @@
|
||||
+----------------------------------------------------------------------+
|
||||
| PHP Version 5 |
|
||||
+----------------------------------------------------------------------+
|
||||
| Copyright (c) 1997-2010 The PHP Group |
|
||||
| Copyright (c) 1997-2012 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 |
|
||||
|
@ -2,7 +2,7 @@
|
||||
+----------------------------------------------------------------------+
|
||||
| PHP Version 5 |
|
||||
+----------------------------------------------------------------------+
|
||||
| Copyright (c) 1997-2010 The PHP Group |
|
||||
| Copyright (c) 1997-2012 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 |
|
||||
|
@ -1,6 +1,6 @@
|
||||
diff -u libmagic.origin/apprentice.c libmagic/apprentice.c
|
||||
--- libmagic.origin/apprentice.c 2012-07-15 18:17:24.802087661 +0800
|
||||
+++ libmagic/apprentice.c 2012-07-15 18:22:49.650087425 +0800
|
||||
--- libmagic.origin/apprentice.c 2012-09-11 11:09:26.000000000 +0800
|
||||
+++ libmagic/apprentice.c 2012-09-11 11:36:51.000000000 +0800
|
||||
@@ -29,6 +29,8 @@
|
||||
* apprentice - make one pass through /etc/magic, learning its secrets.
|
||||
*/
|
||||
@ -317,13 +317,13 @@ diff -u libmagic.origin/apprentice.c libmagic/apprentice.c
|
||||
const char *fn, int action)
|
||||
{
|
||||
- int errs = 0;
|
||||
+ int errs = 0, mflen = 0;
|
||||
+ int errs = 0;
|
||||
struct magic_entry *marray;
|
||||
uint32_t marraycount, i, mentrycount = 0, starttest;
|
||||
- size_t slen, files = 0, maxfiles = 0;
|
||||
- char **filearr = NULL, *mfn;
|
||||
+ size_t files = 0, maxfiles = 0;
|
||||
+ char **filearr = NULL, mfn[MAXPATHLEN];
|
||||
+ char **filearr = NULL;
|
||||
struct stat st;
|
||||
DIR *dir;
|
||||
struct dirent *d;
|
||||
@ -341,7 +341,7 @@ diff -u libmagic.origin/apprentice.c libmagic/apprentice.c
|
||||
marraycount = 0;
|
||||
|
||||
/* print silly verbose header for USG compat. */
|
||||
@@ -778,14 +773,16 @@
|
||||
@@ -778,14 +773,18 @@
|
||||
(void)fprintf(stderr, "%s\n", usg_hdr);
|
||||
|
||||
/* load directory or file */
|
||||
@ -349,6 +349,8 @@ diff -u libmagic.origin/apprentice.c libmagic/apprentice.c
|
||||
+ /* FIXME: Read file names and sort them to prevent
|
||||
+ non-determinism. See Debian bug #488562. */
|
||||
+ if (php_sys_stat(fn, &st) == 0 && S_ISDIR(st.st_mode)) {
|
||||
+ int mflen;
|
||||
+ char mfn[MAXPATHLEN];
|
||||
dir = opendir(fn);
|
||||
if (!dir) {
|
||||
errs++;
|
||||
@ -360,7 +362,7 @@ diff -u libmagic.origin/apprentice.c libmagic/apprentice.c
|
||||
file_oomem(ms,
|
||||
strlen(fn) + strlen(d->d_name) + 2);
|
||||
errs++;
|
||||
@@ -793,7 +790,6 @@
|
||||
@@ -793,7 +792,6 @@
|
||||
goto out;
|
||||
}
|
||||
if (stat(mfn, &st) == -1 || !S_ISREG(st.st_mode)) {
|
||||
@ -368,7 +370,7 @@ diff -u libmagic.origin/apprentice.c libmagic/apprentice.c
|
||||
continue;
|
||||
}
|
||||
if (files >= maxfiles) {
|
||||
@@ -803,20 +799,19 @@
|
||||
@@ -803,20 +801,19 @@
|
||||
if ((filearr = CAST(char **,
|
||||
realloc(filearr, mlen))) == NULL) {
|
||||
file_oomem(ms, mlen);
|
||||
@ -379,7 +381,7 @@ diff -u libmagic.origin/apprentice.c libmagic/apprentice.c
|
||||
}
|
||||
}
|
||||
- filearr[files++] = mfn;
|
||||
+ filearr[files++] = estrndup(mfn, mflen);
|
||||
+ filearr[files++] = estrndup(mfn, (mflen > sizeof(mfn) - 1)? sizeof(mfn) - 1: mflen);
|
||||
}
|
||||
closedir(dir);
|
||||
qsort(filearr, files, sizeof(*filearr), cmpstrp);
|
||||
@ -391,7 +393,7 @@ diff -u libmagic.origin/apprentice.c libmagic/apprentice.c
|
||||
}
|
||||
free(filearr);
|
||||
} else
|
||||
@@ -882,12 +877,7 @@
|
||||
@@ -882,12 +879,7 @@
|
||||
for (i = 0; i < marraycount; i++)
|
||||
mentrycount += marray[i].cont_count;
|
||||
|
||||
@ -405,7 +407,7 @@ diff -u libmagic.origin/apprentice.c libmagic/apprentice.c
|
||||
|
||||
mentrycount = 0;
|
||||
for (i = 0; i < marraycount; i++) {
|
||||
@@ -896,9 +886,14 @@
|
||||
@@ -896,9 +888,14 @@
|
||||
mentrycount += marray[i].cont_count;
|
||||
}
|
||||
out:
|
||||
@ -423,7 +425,7 @@ diff -u libmagic.origin/apprentice.c libmagic/apprentice.c
|
||||
if (errs) {
|
||||
*magicp = NULL;
|
||||
*nmagicp = 0;
|
||||
@@ -1175,14 +1170,13 @@
|
||||
@@ -1175,14 +1172,13 @@
|
||||
return -1;
|
||||
}
|
||||
me = &(*mentryp)[*nmentryp - 1];
|
||||
@ -442,7 +444,7 @@ diff -u libmagic.origin/apprentice.c libmagic/apprentice.c
|
||||
me->mp = m = nm;
|
||||
me->max_count = CAST(uint32_t, cnt);
|
||||
}
|
||||
@@ -1194,23 +1188,13 @@
|
||||
@@ -1194,23 +1190,13 @@
|
||||
struct magic_entry *mp;
|
||||
|
||||
maxmagic += ALLOC_INCR;
|
||||
@ -469,7 +471,7 @@ diff -u libmagic.origin/apprentice.c libmagic/apprentice.c
|
||||
me->mp = m;
|
||||
me->max_count = ALLOC_CHUNK;
|
||||
} else
|
||||
@@ -1353,6 +1337,10 @@
|
||||
@@ -1353,6 +1339,10 @@
|
||||
if (m->type == FILE_INVALID) {
|
||||
if (ms->flags & MAGIC_CHECK)
|
||||
file_magwarn(ms, "type `%s' invalid", l);
|
||||
@ -480,7 +482,7 @@ diff -u libmagic.origin/apprentice.c libmagic/apprentice.c
|
||||
return -1;
|
||||
}
|
||||
|
||||
@@ -1361,7 +1349,7 @@
|
||||
@@ -1361,7 +1351,7 @@
|
||||
|
||||
m->mask_op = 0;
|
||||
if (*l == '~') {
|
||||
@ -489,7 +491,7 @@ diff -u libmagic.origin/apprentice.c libmagic/apprentice.c
|
||||
m->mask_op |= FILE_OPINVERSE;
|
||||
else if (ms->flags & MAGIC_CHECK)
|
||||
file_magwarn(ms, "'~' invalid for string types");
|
||||
@@ -1370,7 +1358,7 @@
|
||||
@@ -1370,7 +1360,7 @@
|
||||
m->str_range = 0;
|
||||
m->str_flags = m->type == FILE_PSTRING ? PSTRING_1_LE : 0;
|
||||
if ((op = get_op(*l)) != -1) {
|
||||
@ -498,7 +500,7 @@ diff -u libmagic.origin/apprentice.c libmagic/apprentice.c
|
||||
uint64_t val;
|
||||
++l;
|
||||
m->mask_op |= op;
|
||||
@@ -1558,11 +1546,6 @@
|
||||
@@ -1558,11 +1548,6 @@
|
||||
if (check_format(ms, m) == -1)
|
||||
return -1;
|
||||
}
|
||||
@ -510,7 +512,7 @@ diff -u libmagic.origin/apprentice.c libmagic/apprentice.c
|
||||
m->mimetype[0] = '\0'; /* initialise MIME type to none */
|
||||
if (m->cont_level == 0)
|
||||
++(*nmentryp); /* make room for next */
|
||||
@@ -2195,56 +2178,69 @@
|
||||
@@ -2195,56 +2180,69 @@
|
||||
|
||||
/*
|
||||
* handle a compiled file.
|
||||
@ -603,7 +605,7 @@ diff -u libmagic.origin/apprentice.c libmagic/apprentice.c
|
||||
ptr = (uint32_t *)(void *)*magicp;
|
||||
if (*ptr != MAGICNO) {
|
||||
if (swap4(*ptr) != MAGICNO) {
|
||||
@@ -2259,35 +2255,55 @@
|
||||
@@ -2259,35 +2257,55 @@
|
||||
else
|
||||
version = ptr[1];
|
||||
if (version != VERSIONNO) {
|
||||
@ -675,7 +677,7 @@ diff -u libmagic.origin/apprentice.c libmagic/apprentice.c
|
||||
return -1;
|
||||
}
|
||||
|
||||
@@ -2301,42 +2317,49 @@
|
||||
@@ -2301,42 +2319,49 @@
|
||||
apprentice_compile(struct magic_set *ms, struct magic **magicp,
|
||||
uint32_t *nmagicp, const char *fn)
|
||||
{
|
||||
@ -736,7 +738,7 @@ diff -u libmagic.origin/apprentice.c libmagic/apprentice.c
|
||||
return rv;
|
||||
}
|
||||
|
||||
@@ -2349,6 +2372,7 @@
|
||||
@@ -2349,6 +2374,7 @@
|
||||
{
|
||||
const char *p, *q;
|
||||
char *buf;
|
||||
@ -744,7 +746,7 @@ diff -u libmagic.origin/apprentice.c libmagic/apprentice.c
|
||||
|
||||
if (strip) {
|
||||
if ((p = strrchr(fn, '/')) != NULL)
|
||||
@@ -2370,14 +2394,14 @@
|
||||
@@ -2370,14 +2396,14 @@
|
||||
q++;
|
||||
/* Compatibility with old code that looked in .mime */
|
||||
if (ms->flags & MAGIC_MIME) {
|
||||
@ -763,7 +765,7 @@ diff -u libmagic.origin/apprentice.c libmagic/apprentice.c
|
||||
|
||||
/* Compatibility with old code that looked in .mime */
|
||||
if (strstr(p, ".mime") != NULL)
|
||||
@@ -2467,7 +2491,7 @@
|
||||
@@ -2467,7 +2493,7 @@
|
||||
m->offset = swap4((uint32_t)m->offset);
|
||||
m->in_offset = swap4((uint32_t)m->in_offset);
|
||||
m->lineno = swap4((uint32_t)m->lineno);
|
||||
@ -773,8 +775,8 @@ diff -u libmagic.origin/apprentice.c libmagic/apprentice.c
|
||||
m->str_flags = swap4(m->str_flags);
|
||||
}
|
||||
diff -u libmagic.origin/ascmagic.c libmagic/ascmagic.c
|
||||
--- libmagic.origin/ascmagic.c 2012-07-15 18:17:24.762087659 +0800
|
||||
+++ libmagic/ascmagic.c 2012-07-15 18:20:42.730087520 +0800
|
||||
--- libmagic.origin/ascmagic.c 2012-09-11 11:09:26.000000000 +0800
|
||||
+++ libmagic/ascmagic.c 2012-09-11 11:33:55.000000000 +0800
|
||||
@@ -139,10 +139,8 @@
|
||||
/* malloc size is a conservative overestimate; could be
|
||||
improved, or at least realloced after conversion. */
|
||||
@ -799,8 +801,8 @@ diff -u libmagic.origin/ascmagic.c libmagic/ascmagic.c
|
||||
return rv;
|
||||
}
|
||||
diff -u libmagic.origin/cdf.c libmagic/cdf.c
|
||||
--- libmagic.origin/cdf.c 2012-07-15 18:17:24.822087659 +0800
|
||||
+++ libmagic/cdf.c 2012-07-15 18:20:42.730087520 +0800
|
||||
--- libmagic.origin/cdf.c 2012-09-11 11:09:26.000000000 +0800
|
||||
+++ libmagic/cdf.c 2012-09-11 11:33:55.000000000 +0800
|
||||
@@ -43,7 +43,17 @@
|
||||
#include <err.h>
|
||||
#endif
|
||||
@ -863,8 +865,8 @@ diff -u libmagic.origin/cdf.c libmagic/cdf.c
|
||||
(void)fprintf(stderr, "timestamp %s\n", buf);
|
||||
} else {
|
||||
diff -u libmagic.origin/cdf.h libmagic/cdf.h
|
||||
--- libmagic.origin/cdf.h 2012-07-15 18:17:25.046087660 +0800
|
||||
+++ libmagic/cdf.h 2012-07-15 18:20:42.730087520 +0800
|
||||
--- libmagic.origin/cdf.h 2012-09-11 11:09:26.000000000 +0800
|
||||
+++ libmagic/cdf.h 2012-09-11 11:33:55.000000000 +0800
|
||||
@@ -35,7 +35,7 @@
|
||||
#ifndef _H_CDF_
|
||||
#define _H_CDF_
|
||||
@ -901,8 +903,8 @@ diff -u libmagic.origin/cdf.h libmagic/cdf.h
|
||||
void cdf_swap_header(cdf_header_t *);
|
||||
void cdf_unpack_header(cdf_header_t *, char *);
|
||||
diff -u libmagic.origin/cdf_time.c libmagic/cdf_time.c
|
||||
--- libmagic.origin/cdf_time.c 2012-07-15 18:17:24.734087660 +0800
|
||||
+++ libmagic/cdf_time.c 2012-07-15 18:20:42.734087519 +0800
|
||||
--- libmagic.origin/cdf_time.c 2012-09-11 11:09:26.000000000 +0800
|
||||
+++ libmagic/cdf_time.c 2012-09-11 11:33:55.000000000 +0800
|
||||
@@ -96,7 +96,7 @@
|
||||
}
|
||||
|
||||
@ -960,8 +962,8 @@ diff -u libmagic.origin/cdf_time.c libmagic/cdf_time.c
|
||||
static const char *ref = "Sat Apr 23 01:30:00 1977";
|
||||
char *p, *q;
|
||||
diff -u libmagic.origin/compress.c libmagic/compress.c
|
||||
--- libmagic.origin/compress.c 2012-07-15 18:17:24.730087657 +0800
|
||||
+++ libmagic/compress.c 2012-07-15 18:20:42.734087519 +0800
|
||||
--- libmagic.origin/compress.c 2012-09-11 11:09:26.000000000 +0800
|
||||
+++ libmagic/compress.c 2012-09-11 11:33:55.000000000 +0800
|
||||
@@ -32,6 +32,7 @@
|
||||
* uncompress(method, old, n, newch) - uncompress old into new,
|
||||
* using method, return sizeof new
|
||||
@ -1122,9 +1124,10 @@ diff -u libmagic.origin/compress.c libmagic/compress.c
|
||||
}
|
||||
-#endif
|
||||
+#endif /* if PHP_FILEINFO_UNCOMPRESS */
|
||||
Only in libmagic: diff
|
||||
diff -u libmagic.origin/file.h libmagic/file.h
|
||||
--- libmagic.origin/file.h 2012-07-15 18:17:25.046087660 +0800
|
||||
+++ libmagic/file.h 2012-07-15 18:20:42.734087519 +0800
|
||||
--- libmagic.origin/file.h 2012-09-11 11:09:26.000000000 +0800
|
||||
+++ libmagic/file.h 2012-09-11 11:33:55.000000000 +0800
|
||||
@@ -33,11 +33,9 @@
|
||||
#ifndef __file_h__
|
||||
#define __file_h__
|
||||
@ -1296,8 +1299,8 @@ diff -u libmagic.origin/file.h libmagic/file.h
|
||||
+
|
||||
#endif /* __file_h__ */
|
||||
diff -u libmagic.origin/fsmagic.c libmagic/fsmagic.c
|
||||
--- libmagic.origin/fsmagic.c 2012-07-15 18:17:24.730087657 +0800
|
||||
+++ libmagic/fsmagic.c 2012-07-15 18:20:42.734087519 +0800
|
||||
--- libmagic.origin/fsmagic.c 2012-09-11 11:09:26.000000000 +0800
|
||||
+++ libmagic/fsmagic.c 2012-09-11 11:33:55.000000000 +0800
|
||||
@@ -59,27 +59,21 @@
|
||||
# define minor(dev) ((dev) & 0xff)
|
||||
#endif
|
||||
@ -1508,10 +1511,10 @@ diff -u libmagic.origin/fsmagic.c libmagic/fsmagic.c
|
||||
-#else
|
||||
- if (file_printf(ms, "block special") == -1)
|
||||
- return -1;
|
||||
#endif
|
||||
-#endif
|
||||
- }
|
||||
- return 1;
|
||||
-#endif
|
||||
#endif
|
||||
- /* TODO add code to handle V7 MUX and Blit MUX files */
|
||||
+
|
||||
#ifdef S_IFIFO
|
||||
@ -1621,8 +1624,8 @@ diff -u libmagic.origin/fsmagic.c libmagic/fsmagic.c
|
||||
|
||||
/*
|
||||
diff -u libmagic.origin/funcs.c libmagic/funcs.c
|
||||
--- libmagic.origin/funcs.c 2012-07-15 18:17:25.046087660 +0800
|
||||
+++ libmagic/funcs.c 2012-07-15 18:20:42.734087519 +0800
|
||||
--- libmagic.origin/funcs.c 2012-09-11 11:09:26.000000000 +0800
|
||||
+++ libmagic/funcs.c 2012-09-11 11:33:55.000000000 +0800
|
||||
@@ -41,52 +41,42 @@
|
||||
#if defined(HAVE_WCTYPE_H)
|
||||
#include <wctype.h>
|
||||
@ -1916,10 +1919,9 @@ diff -u libmagic.origin/funcs.c libmagic/funcs.c
|
||||
+ return rep_cnt;
|
||||
}
|
||||
+
|
||||
Common subdirectories: libmagic.origin/.libs and libmagic/.libs
|
||||
diff -u libmagic.origin/magic.c libmagic/magic.c
|
||||
--- libmagic.origin/magic.c 2012-07-15 18:17:25.046087660 +0800
|
||||
+++ libmagic/magic.c 2012-07-15 18:20:42.734087519 +0800
|
||||
--- libmagic.origin/magic.c 2012-09-11 11:09:26.000000000 +0800
|
||||
+++ libmagic/magic.c 2012-09-11 11:33:55.000000000 +0800
|
||||
@@ -25,11 +25,6 @@
|
||||
* SUCH DAMAGE.
|
||||
*/
|
||||
@ -2296,8 +2298,8 @@ diff -u libmagic.origin/magic.c libmagic/magic.c
|
||||
public const char *
|
||||
magic_error(struct magic_set *ms)
|
||||
diff -u libmagic.origin/magic.h libmagic/magic.h
|
||||
--- libmagic.origin/magic.h 2012-07-15 18:17:24.734087660 +0800
|
||||
+++ libmagic/magic.h 2012-07-15 18:20:42.734087519 +0800
|
||||
--- libmagic.origin/magic.h 2012-09-11 11:09:26.000000000 +0800
|
||||
+++ libmagic/magic.h 2012-09-11 11:33:55.000000000 +0800
|
||||
@@ -85,6 +85,7 @@
|
||||
|
||||
const char *magic_getpath(const char *, int);
|
||||
@ -2315,8 +2317,8 @@ diff -u libmagic.origin/magic.h libmagic/magic.h
|
||||
int magic_errno(magic_t);
|
||||
|
||||
diff -u libmagic.origin/print.c libmagic/print.c
|
||||
--- libmagic.origin/print.c 2012-07-15 18:21:02.846087501 +0800
|
||||
+++ libmagic/print.c 2012-07-15 18:20:42.734087519 +0800
|
||||
--- libmagic.origin/print.c 2012-09-11 11:09:26.000000000 +0800
|
||||
+++ libmagic/print.c 2012-09-11 11:33:55.000000000 +0800
|
||||
@@ -29,6 +29,9 @@
|
||||
* print.c - debugging printout routines
|
||||
*/
|
||||
@ -2509,206 +2511,9 @@ diff -u libmagic.origin/print.c libmagic/print.c
|
||||
}
|
||||
|
||||
protected const char *
|
||||
diff -u libmagic.origin/print.c.rej libmagic/print.c.rej
|
||||
--- libmagic.origin/print.c.rej 2012-07-15 18:17:24.762087659 +0800
|
||||
+++ libmagic/print.c.rej 2012-07-15 18:20:27.186087168 +0800
|
||||
@@ -1,12 +1,184 @@
|
||||
---- libmagic/print.c 2012-05-29 14:34:03.770376387 +0200
|
||||
-+++ libmagic.orig/print.c 2012-05-29 14:40:41.710960045 +0200
|
||||
-@@ -29,9 +29,6 @@
|
||||
- * print.c - debugging printout routines
|
||||
- */
|
||||
+--- libmagic.orig/print.c 2012-05-29 14:40:41.710960045 +0200
|
||||
++++ libmagic/print.c 2012-05-29 14:34:03.770376387 +0200
|
||||
+@@ -48,174 +51,21 @@
|
||||
|
||||
--#include "php.h"
|
||||
--#include "main/snprintf.h"
|
||||
+ #define SZOF(a) (sizeof(a) / sizeof(a[0]))
|
||||
+
|
||||
+-#ifndef COMPILE_ONLY
|
||||
+-protected void
|
||||
+-file_mdump(struct magic *m)
|
||||
+-{
|
||||
+- private const char optyp[] = { FILE_OPS };
|
||||
+-
|
||||
+- (void) fprintf(stderr, "%u: %.*s %u", m->lineno,
|
||||
+- (m->cont_level & 7) + 1, ">>>>>>>>", m->offset);
|
||||
+-
|
||||
+- if (m->flag & INDIR) {
|
||||
+- (void) fprintf(stderr, "(%s,",
|
||||
+- /* Note: type is unsigned */
|
||||
+- (m->in_type < file_nnames) ?
|
||||
+- file_names[m->in_type] : "*bad*");
|
||||
+- if (m->in_op & FILE_OPINVERSE)
|
||||
+- (void) fputc('~', stderr);
|
||||
+- (void) fprintf(stderr, "%c%u),",
|
||||
+- ((size_t)(m->in_op & FILE_OPS_MASK) <
|
||||
+- SZOF(optyp)) ?
|
||||
+- optyp[m->in_op & FILE_OPS_MASK] : '?',
|
||||
+- m->in_offset);
|
||||
+- }
|
||||
+- (void) fprintf(stderr, " %s%s", (m->flag & UNSIGNED) ? "u" : "",
|
||||
+- /* Note: type is unsigned */
|
||||
+- (m->type < file_nnames) ? file_names[m->type] : "*bad*");
|
||||
+- if (m->mask_op & FILE_OPINVERSE)
|
||||
+- (void) fputc('~', stderr);
|
||||
+-
|
||||
+- if (IS_STRING(m->type)) {
|
||||
+- if (m->str_flags) {
|
||||
+- (void) fputc('/', stderr);
|
||||
+- if (m->str_flags & STRING_COMPACT_WHITESPACE)
|
||||
+- (void) fputc(CHAR_COMPACT_WHITESPACE, stderr);
|
||||
+- if (m->str_flags & STRING_COMPACT_OPTIONAL_WHITESPACE)
|
||||
+- (void) fputc(CHAR_COMPACT_OPTIONAL_WHITESPACE,
|
||||
+- stderr);
|
||||
+- if (m->str_flags & STRING_IGNORE_LOWERCASE)
|
||||
+- (void) fputc(CHAR_IGNORE_LOWERCASE, stderr);
|
||||
+- if (m->str_flags & STRING_IGNORE_UPPERCASE)
|
||||
+- (void) fputc(CHAR_IGNORE_UPPERCASE, stderr);
|
||||
+- if (m->str_flags & REGEX_OFFSET_START)
|
||||
+- (void) fputc(CHAR_REGEX_OFFSET_START, stderr);
|
||||
+- if (m->str_flags & STRING_TEXTTEST)
|
||||
+- (void) fputc(CHAR_TEXTTEST, stderr);
|
||||
+- if (m->str_flags & STRING_BINTEST)
|
||||
+- (void) fputc(CHAR_BINTEST, stderr);
|
||||
+- if (m->str_flags & PSTRING_1_BE)
|
||||
+- (void) fputc(CHAR_PSTRING_1_BE, stderr);
|
||||
+- if (m->str_flags & PSTRING_2_BE)
|
||||
+- (void) fputc(CHAR_PSTRING_2_BE, stderr);
|
||||
+- if (m->str_flags & PSTRING_2_LE)
|
||||
+- (void) fputc(CHAR_PSTRING_2_LE, stderr);
|
||||
+- if (m->str_flags & PSTRING_4_BE)
|
||||
+- (void) fputc(CHAR_PSTRING_4_BE, stderr);
|
||||
+- if (m->str_flags & PSTRING_4_LE)
|
||||
+- (void) fputc(CHAR_PSTRING_4_LE, stderr);
|
||||
+- if (m->str_flags & PSTRING_LENGTH_INCLUDES_ITSELF)
|
||||
+- (void) fputc(
|
||||
+- CHAR_PSTRING_LENGTH_INCLUDES_ITSELF,
|
||||
+- stderr);
|
||||
+- }
|
||||
+- if (m->str_range)
|
||||
+- (void) fprintf(stderr, "/%u", m->str_range);
|
||||
+- }
|
||||
+- else {
|
||||
+- if ((size_t)(m->mask_op & FILE_OPS_MASK) < SZOF(optyp))
|
||||
+- (void) fputc(optyp[m->mask_op & FILE_OPS_MASK], stderr);
|
||||
+- else
|
||||
+- (void) fputc('?', stderr);
|
||||
+-
|
||||
+- if (m->num_mask) {
|
||||
+- (void) fprintf(stderr, "%.8llx",
|
||||
+- (unsigned long long)m->num_mask);
|
||||
+- }
|
||||
+- }
|
||||
+- (void) fprintf(stderr, ",%c", m->reln);
|
||||
+-
|
||||
+- if (m->reln != 'x') {
|
||||
+- switch (m->type) {
|
||||
+- case FILE_BYTE:
|
||||
+- case FILE_SHORT:
|
||||
+- case FILE_LONG:
|
||||
+- case FILE_LESHORT:
|
||||
+- case FILE_LELONG:
|
||||
+- case FILE_MELONG:
|
||||
+- case FILE_BESHORT:
|
||||
+- case FILE_BELONG:
|
||||
+- (void) fprintf(stderr, "%d", m->value.l);
|
||||
+- break;
|
||||
+- case FILE_BEQUAD:
|
||||
+- case FILE_LEQUAD:
|
||||
+- case FILE_QUAD:
|
||||
+- (void) fprintf(stderr, "%" INT64_T_FORMAT "d",
|
||||
+- (unsigned long long)m->value.q);
|
||||
+- break;
|
||||
+- case FILE_PSTRING:
|
||||
+- case FILE_STRING:
|
||||
+- case FILE_REGEX:
|
||||
+- case FILE_BESTRING16:
|
||||
+- case FILE_LESTRING16:
|
||||
+- case FILE_SEARCH:
|
||||
+- file_showstr(stderr, m->value.s, (size_t)m->vallen);
|
||||
+- break;
|
||||
+- case FILE_DATE:
|
||||
+- case FILE_LEDATE:
|
||||
+- case FILE_BEDATE:
|
||||
+- case FILE_MEDATE:
|
||||
+- (void)fprintf(stderr, "%s,",
|
||||
+- file_fmttime(m->value.l, 1));
|
||||
+- break;
|
||||
+- case FILE_LDATE:
|
||||
+- case FILE_LELDATE:
|
||||
+- case FILE_BELDATE:
|
||||
+- case FILE_MELDATE:
|
||||
+- (void)fprintf(stderr, "%s,",
|
||||
+- file_fmttime(m->value.l, 0));
|
||||
+- break;
|
||||
+- case FILE_QDATE:
|
||||
+- case FILE_LEQDATE:
|
||||
+- case FILE_BEQDATE:
|
||||
+- (void)fprintf(stderr, "%s,",
|
||||
+- file_fmttime((uint32_t)m->value.q, 1));
|
||||
+- break;
|
||||
+- case FILE_QLDATE:
|
||||
+- case FILE_LEQLDATE:
|
||||
+- case FILE_BEQLDATE:
|
||||
+- (void)fprintf(stderr, "%s,",
|
||||
+- file_fmttime((uint32_t)m->value.q, 0));
|
||||
+- break;
|
||||
+- case FILE_FLOAT:
|
||||
+- case FILE_BEFLOAT:
|
||||
+- case FILE_LEFLOAT:
|
||||
+- (void) fprintf(stderr, "%G", m->value.f);
|
||||
+- break;
|
||||
+- case FILE_DOUBLE:
|
||||
+- case FILE_BEDOUBLE:
|
||||
+- case FILE_LEDOUBLE:
|
||||
+- (void) fprintf(stderr, "%G", m->value.d);
|
||||
+- break;
|
||||
+- case FILE_DEFAULT:
|
||||
+- /* XXX - do anything here? */
|
||||
+- break;
|
||||
+- default:
|
||||
+- (void) fputs("*bad*", stderr);
|
||||
+- break;
|
||||
+- }
|
||||
+- }
|
||||
+- (void) fprintf(stderr, ",\"%s\"]\n", m->desc);
|
||||
+-}
|
||||
+-#endif
|
||||
+-
|
||||
+ /*VARARGS*/
|
||||
+ protected void
|
||||
+ file_magwarn(struct magic_set *ms, const char *f, ...)
|
||||
+ {
|
||||
+ va_list va;
|
||||
++ char *expanded_format;
|
||||
++ TSRMLS_FETCH();
|
||||
+
|
||||
+- /* cuz we use stdout for most, stderr here */
|
||||
+- (void) fflush(stdout);
|
||||
-
|
||||
- #include "file.h"
|
||||
+- if (ms->file)
|
||||
+- (void) fprintf(stderr, "%s, %lu: ", ms->file,
|
||||
+- (unsigned long)ms->line);
|
||||
+- (void) fprintf(stderr, "Warning: ");
|
||||
+ va_start(va, f);
|
||||
+- (void) vfprintf(stderr, f, va);
|
||||
++ vasprintf(&expanded_format, f, va);
|
||||
+ va_end(va);
|
||||
+- (void) fputc('\n', stderr);
|
||||
++
|
||||
++ php_error_docref(NULL TSRMLS_CC, E_NOTICE, "Warning: %s", expanded_format);
|
||||
++
|
||||
++ free(expanded_format);
|
||||
+ }
|
||||
|
||||
- #ifndef lint
|
||||
+ protected const char *
|
||||
diff -u libmagic.origin/readcdf.c libmagic/readcdf.c
|
||||
--- libmagic.origin/readcdf.c 2012-07-15 18:17:24.734087660 +0800
|
||||
+++ libmagic/readcdf.c 2012-07-15 18:20:42.734087519 +0800
|
||||
--- libmagic.origin/readcdf.c 2012-09-11 11:09:26.000000000 +0800
|
||||
+++ libmagic/readcdf.c 2012-09-11 11:33:55.000000000 +0800
|
||||
@@ -30,7 +30,11 @@
|
||||
#endif
|
||||
|
||||
@ -2755,8 +2560,8 @@ diff -u libmagic.origin/readcdf.c libmagic/readcdf.c
|
||||
if ((ec = strchr(c, '\n')) != NULL)
|
||||
*ec = '\0';
|
||||
diff -u libmagic.origin/readelf.c libmagic/readelf.c
|
||||
--- libmagic.origin/readelf.c 2012-07-15 18:17:25.046087660 +0800
|
||||
+++ libmagic/readelf.c 2012-07-15 18:20:42.734087519 +0800
|
||||
--- libmagic.origin/readelf.c 2012-09-11 11:09:26.000000000 +0800
|
||||
+++ libmagic/readelf.c 2012-09-11 11:33:55.000000000 +0800
|
||||
@@ -49,7 +49,7 @@
|
||||
off_t, int *, int);
|
||||
private int doshn(struct magic_set *, int, int, int, off_t, int, size_t,
|
||||
@ -2912,8 +2717,8 @@ diff -u libmagic.origin/readelf.c libmagic/readelf.c
|
||||
|
||||
if (fstat(fd, &st) == -1) {
|
||||
diff -u libmagic.origin/softmagic.c libmagic/softmagic.c
|
||||
--- libmagic.origin/softmagic.c 2012-07-15 18:17:24.722087658 +0800
|
||||
+++ libmagic/softmagic.c 2012-07-15 18:20:42.734087519 +0800
|
||||
--- libmagic.origin/softmagic.c 2012-09-11 11:09:26.000000000 +0800
|
||||
+++ libmagic/softmagic.c 2012-09-11 11:33:55.000000000 +0800
|
||||
@@ -41,6 +41,11 @@
|
||||
#include <stdlib.h>
|
||||
#include <time.h>
|
||||
|
@ -753,11 +753,11 @@ private int
|
||||
apprentice_load(struct magic_set *ms, struct magic **magicp, uint32_t *nmagicp,
|
||||
const char *fn, int action)
|
||||
{
|
||||
int errs = 0, mflen = 0;
|
||||
int errs = 0;
|
||||
struct magic_entry *marray;
|
||||
uint32_t marraycount, i, mentrycount = 0, starttest;
|
||||
size_t files = 0, maxfiles = 0;
|
||||
char **filearr = NULL, mfn[MAXPATHLEN];
|
||||
char **filearr = NULL;
|
||||
struct stat st;
|
||||
DIR *dir;
|
||||
struct dirent *d;
|
||||
@ -776,6 +776,8 @@ apprentice_load(struct magic_set *ms, struct magic **magicp, uint32_t *nmagicp,
|
||||
/* FIXME: Read file names and sort them to prevent
|
||||
non-determinism. See Debian bug #488562. */
|
||||
if (php_sys_stat(fn, &st) == 0 && S_ISDIR(st.st_mode)) {
|
||||
int mflen;
|
||||
char mfn[MAXPATHLEN];
|
||||
dir = opendir(fn);
|
||||
if (!dir) {
|
||||
errs++;
|
||||
@ -804,7 +806,7 @@ apprentice_load(struct magic_set *ms, struct magic **magicp, uint32_t *nmagicp,
|
||||
goto out;
|
||||
}
|
||||
}
|
||||
filearr[files++] = estrndup(mfn, mflen);
|
||||
filearr[files++] = estrndup(mfn, (mflen > sizeof(mfn) - 1)? sizeof(mfn) - 1: mflen);
|
||||
}
|
||||
closedir(dir);
|
||||
qsort(filearr, files, sizeof(*filearr), cmpstrp);
|
||||
|
@ -99,12 +99,14 @@
|
||||
} \
|
||||
return; \
|
||||
|
||||
#define PHP_FILTER_TRIM_DEFAULT(p, len) { \
|
||||
#define PHP_FILTER_TRIM_DEFAULT(p, len) PHP_FILTER_TRIM_DEFAULT_EX(p, len, 1);
|
||||
|
||||
#define PHP_FILTER_TRIM_DEFAULT_EX(p, len, return_if_empty) { \
|
||||
while ((len > 0) && (*p == ' ' || *p == '\t' || *p == '\r' || *p == '\v' || *p == '\n')) { \
|
||||
p++; \
|
||||
len--; \
|
||||
} \
|
||||
if (len < 1) { \
|
||||
if (len < 1 && return_if_empty) { \
|
||||
RETURN_VALIDATION_FAILED \
|
||||
} \
|
||||
while (p[len-1] == ' ' || p[len-1] == '\t' || p[len-1] == '\r' || p[len-1] == '\v' || p[len-1] == '\n') { \
|
||||
|
@ -235,12 +235,15 @@ void php_filter_boolean(PHP_INPUT_FILTER_PARAM_DECL) /* {{{ */
|
||||
int len = Z_STRLEN_P(value);
|
||||
int ret;
|
||||
|
||||
PHP_FILTER_TRIM_DEFAULT(str, len);
|
||||
PHP_FILTER_TRIM_DEFAULT_EX(str, len, 0);
|
||||
|
||||
/* returns true for "1", "true", "on" and "yes"
|
||||
* returns false for "0", "false", "off", "no", and ""
|
||||
* null otherwise. */
|
||||
switch (len) {
|
||||
case 0:
|
||||
ret = 0;
|
||||
break;
|
||||
case 1:
|
||||
if (*str == '1') {
|
||||
ret = 1;
|
||||
@ -286,7 +289,7 @@ void php_filter_boolean(PHP_INPUT_FILTER_PARAM_DECL) /* {{{ */
|
||||
ret = -1;
|
||||
}
|
||||
|
||||
if (ret == -1) {
|
||||
if (ret == -1) {
|
||||
RETURN_VALIDATION_FAILED
|
||||
} else {
|
||||
zval_dtor(value);
|
||||
|
36
ext/filter/tests/bug49510.phpt
Normal file
36
ext/filter/tests/bug49510.phpt
Normal file
@ -0,0 +1,36 @@
|
||||
--TEST--
|
||||
#49510 boolean validation fails with FILTER_NULL_ON_FAILURE
|
||||
--FILE--
|
||||
<?php
|
||||
var_dump(filter_var(false, FILTER_VALIDATE_BOOLEAN, FILTER_NULL_ON_FAILURE));
|
||||
var_dump(filter_var(0, FILTER_VALIDATE_BOOLEAN, FILTER_NULL_ON_FAILURE));
|
||||
var_dump(filter_var("0", FILTER_VALIDATE_BOOLEAN, FILTER_NULL_ON_FAILURE));
|
||||
var_dump(filter_var("off", FILTER_VALIDATE_BOOLEAN, FILTER_NULL_ON_FAILURE));
|
||||
var_dump(filter_var("", FILTER_VALIDATE_BOOLEAN, FILTER_NULL_ON_FAILURE));
|
||||
var_dump(filter_var("false", FILTER_VALIDATE_BOOLEAN, FILTER_NULL_ON_FAILURE));
|
||||
var_dump(filter_var("no", FILTER_VALIDATE_BOOLEAN, FILTER_NULL_ON_FAILURE));
|
||||
|
||||
var_dump(filter_var(true, FILTER_VALIDATE_BOOLEAN, FILTER_NULL_ON_FAILURE));
|
||||
var_dump(filter_var(1, FILTER_VALIDATE_BOOLEAN, FILTER_NULL_ON_FAILURE));
|
||||
var_dump(filter_var("1", FILTER_VALIDATE_BOOLEAN, FILTER_NULL_ON_FAILURE));
|
||||
var_dump(filter_var("on", FILTER_VALIDATE_BOOLEAN, FILTER_NULL_ON_FAILURE));
|
||||
var_dump(filter_var("yes", FILTER_VALIDATE_BOOLEAN, FILTER_NULL_ON_FAILURE));
|
||||
|
||||
var_dump(filter_var("invalid", FILTER_VALIDATE_BOOLEAN, FILTER_NULL_ON_FAILURE));
|
||||
?>
|
||||
==DONE==
|
||||
--EXPECT--
|
||||
bool(false)
|
||||
bool(false)
|
||||
bool(false)
|
||||
bool(false)
|
||||
bool(false)
|
||||
bool(false)
|
||||
bool(false)
|
||||
bool(true)
|
||||
bool(true)
|
||||
bool(true)
|
||||
bool(true)
|
||||
bool(true)
|
||||
NULL
|
||||
==DONE==
|
@ -2,7 +2,7 @@
|
||||
+----------------------------------------------------------------------+
|
||||
| PHP Version 5 |
|
||||
+----------------------------------------------------------------------+
|
||||
| Copyright (c) 1997-2010 The PHP Group |
|
||||
| Copyright (c) 1997-2012 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 |
|
||||
|
@ -2715,9 +2715,10 @@ PHP_FUNCTION(mb_substr)
|
||||
char *str, *encoding;
|
||||
long from, len;
|
||||
int mblen, str_len, encoding_len;
|
||||
zval **z_len = NULL;
|
||||
mbfl_string string, result, *ret;
|
||||
|
||||
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "sl|ls", &str, &str_len, &from, &len, &encoding, &encoding_len) == FAILURE) {
|
||||
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "sl|Zs", &str, &str_len, &from, &z_len, &encoding, &encoding_len) == FAILURE) {
|
||||
return;
|
||||
}
|
||||
|
||||
@ -2736,8 +2737,11 @@ PHP_FUNCTION(mb_substr)
|
||||
string.val = (unsigned char *)str;
|
||||
string.len = str_len;
|
||||
|
||||
if (argc < 3) {
|
||||
if (argc < 3 || Z_TYPE_PP(z_len) == IS_NULL) {
|
||||
len = str_len;
|
||||
} else {
|
||||
convert_to_long_ex(z_len);
|
||||
len = Z_LVAL_PP(z_len);
|
||||
}
|
||||
|
||||
/* measures length */
|
||||
@ -2788,13 +2792,14 @@ PHP_FUNCTION(mb_strcut)
|
||||
char *encoding;
|
||||
long from, len;
|
||||
int encoding_len;
|
||||
zval **z_len = NULL;
|
||||
mbfl_string string, result, *ret;
|
||||
|
||||
mbfl_string_init(&string);
|
||||
string.no_language = MBSTRG(language);
|
||||
string.no_encoding = MBSTRG(current_internal_encoding)->no_encoding;
|
||||
|
||||
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "sl|ls", (char **)&string.val, (int **)&string.len, &from, &len, &encoding, &encoding_len) == FAILURE) {
|
||||
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "sl|Zs", (char **)&string.val, (int **)&string.len, &from, &z_len, &encoding, &encoding_len) == FAILURE) {
|
||||
return;
|
||||
}
|
||||
|
||||
@ -2806,8 +2811,11 @@ PHP_FUNCTION(mb_strcut)
|
||||
}
|
||||
}
|
||||
|
||||
if (argc < 3) {
|
||||
if (argc < 3 || Z_TYPE_PP(z_len) == IS_NULL) {
|
||||
len = string.len;
|
||||
} else {
|
||||
convert_to_long_ex(z_len);
|
||||
len = Z_LVAL_PP(z_len);
|
||||
}
|
||||
|
||||
/* if "from" position is negative, count start position from the end
|
||||
|
@ -28,5 +28,3 @@ baz
|
||||
baz
|
||||
foo
|
||||
==DONE==
|
||||
--XFAIL--
|
||||
mb functions fail to allow null instead of actual value
|
||||
|
@ -1818,11 +1818,12 @@ static int model_to_xml_object(xmlNodePtr node, sdlContentModelPtr model, zval *
|
||||
|
||||
zend_hash_internal_pointer_reset_ex(model->u.content, &pos);
|
||||
while (zend_hash_get_current_data_ex(model->u.content, (void**)&tmp, &pos) == SUCCESS) {
|
||||
if (!model_to_xml_object(node, *tmp, object, style, (*tmp)->min_occurs > 0 TSRMLS_CC)) {
|
||||
if ((*tmp)->min_occurs > 0) {
|
||||
if (!model_to_xml_object(node, *tmp, object, style, strict && ((*tmp)->min_occurs > 0) TSRMLS_CC)) {
|
||||
if (!strict || (*tmp)->min_occurs > 0) {
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
strict = 1;
|
||||
zend_hash_move_forward_ex(model->u.content, &pos);
|
||||
}
|
||||
return 1;
|
||||
@ -1845,7 +1846,7 @@ static int model_to_xml_object(xmlNodePtr node, sdlContentModelPtr model, zval *
|
||||
return ret;
|
||||
}
|
||||
case XSD_CONTENT_GROUP: {
|
||||
return model_to_xml_object(node, model->u.group->model, object, style, model->min_occurs > 0 TSRMLS_CC);
|
||||
return model_to_xml_object(node, model->u.group->model, object, style, strict && model->min_occurs > 0 TSRMLS_CC);
|
||||
}
|
||||
default:
|
||||
break;
|
||||
|
16
ext/soap/tests/bugs/bug50997.phpt
Normal file
16
ext/soap/tests/bugs/bug50997.phpt
Normal file
@ -0,0 +1,16 @@
|
||||
--TEST--
|
||||
Bug #50997 (SOAP Error when trying to submit 2nd Element of a choice)
|
||||
--SKIPIF--
|
||||
<?php require_once('skipif.inc'); ?>
|
||||
--INI--
|
||||
soap.wsdl_cache_enabled=0
|
||||
--FILE--
|
||||
<?php
|
||||
$soapClient = new SoapClient(__DIR__ . '/bug50997.wsdl', array('trace' => 1, 'exceptions'=>0));
|
||||
$params = array('code'=>'foo');
|
||||
$soapClient->newOperation($params);
|
||||
echo $soapClient->__getLastRequest();
|
||||
?>
|
||||
--EXPECT--
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://www.example.org/service2/"><SOAP-ENV:Body><ns1:NewOperation><code>foo</code></ns1:NewOperation></SOAP-ENV:Body></SOAP-ENV:Envelope>
|
54
ext/soap/tests/bugs/bug50997.wsdl
Normal file
54
ext/soap/tests/bugs/bug50997.wsdl
Normal file
@ -0,0 +1,54 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<wsdl:definitions xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tns="http://www.example.org/service2/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" name="service2" targetNamespace="http://www.example.org/service2/">
|
||||
<wsdl:types>
|
||||
<xsd:schema targetNamespace="http://www.example.org/service2/">
|
||||
<xsd:element name="NewOperation">
|
||||
<xsd:complexType>
|
||||
<xsd:choice>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="firstName" type="xsd:string"> </xsd:element>
|
||||
<xsd:element name="surName" type="xsd:string"/>
|
||||
</xsd:sequence>
|
||||
<xsd:element name="code" type="xsd:string"/>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="NewOperationResponse">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="out" type="xsd:string"/>
|
||||
</xsd:sequence>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
</wsdl:types>
|
||||
<wsdl:message name="NewOperationRequest">
|
||||
<wsdl:part element="tns:NewOperation" name="parameters"/>
|
||||
</wsdl:message>
|
||||
<wsdl:message name="NewOperationResponse">
|
||||
<wsdl:part element="tns:NewOperationResponse" name="parameters"/>
|
||||
</wsdl:message>
|
||||
<wsdl:portType name="service2">
|
||||
<wsdl:operation name="NewOperation">
|
||||
<wsdl:input message="tns:NewOperationRequest"/>
|
||||
<wsdl:output message="tns:NewOperationResponse"/>
|
||||
</wsdl:operation>
|
||||
</wsdl:portType>
|
||||
<wsdl:binding name="service2SOAP" type="tns:service2">
|
||||
<soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
|
||||
<wsdl:operation name="NewOperation">
|
||||
<soap:operation soapAction="http://www.example.org/service2/NewOperation"/>
|
||||
<wsdl:input>
|
||||
<soap:body use="literal"/>
|
||||
</wsdl:input>
|
||||
<wsdl:output>
|
||||
<soap:body use="literal"/>
|
||||
</wsdl:output>
|
||||
</wsdl:operation>
|
||||
</wsdl:binding>
|
||||
<wsdl:service name="service2">
|
||||
<wsdl:port binding="tns:service2SOAP" name="service2SOAP">
|
||||
<soap:address location="test://"/>
|
||||
</wsdl:port>
|
||||
</wsdl:service>
|
||||
</wsdl:definitions>
|
@ -306,41 +306,41 @@ static zval **spl_array_get_dimension_ptr_ptr(int check_inherited, zval *object,
|
||||
long index;
|
||||
HashTable *ht = spl_array_get_hash_table(intern, 0 TSRMLS_CC);
|
||||
|
||||
/* We cannot get the pointer pointer so we don't allow it here for now
|
||||
if (check_inherited && intern->fptr_offset_get) {
|
||||
return zend_call_method_with_1_params(&object, Z_OBJCE_P(object), &intern->fptr_offset_get, "offsetGet", NULL, offset);
|
||||
}*/
|
||||
|
||||
if (!offset) {
|
||||
return &EG(uninitialized_zval_ptr);
|
||||
}
|
||||
|
||||
if ((type == BP_VAR_W || type == BP_VAR_RW) && (ht->nApplyCount > 0)) {
|
||||
zend_error(E_WARNING, "Modification of ArrayObject during sorting is prohibited");
|
||||
return &EG(uninitialized_zval_ptr);;
|
||||
return &EG(error_zval_ptr);;
|
||||
}
|
||||
|
||||
switch(Z_TYPE_P(offset)) {
|
||||
case IS_NULL:
|
||||
Z_STRVAL_P(offset) = "";
|
||||
Z_STRLEN_P(offset) = 0;
|
||||
case IS_STRING:
|
||||
if (zend_symtable_find(ht, Z_STRVAL_P(offset), Z_STRLEN_P(offset)+1, (void **) &retval) == FAILURE) {
|
||||
if (type == BP_VAR_W || type == BP_VAR_RW) {
|
||||
zval *value;
|
||||
ALLOC_INIT_ZVAL(value);
|
||||
zend_symtable_update(ht, Z_STRVAL_P(offset), Z_STRLEN_P(offset)+1, (void**)&value, sizeof(void*), NULL);
|
||||
if (zend_symtable_find(ht, Z_STRVAL_P(offset), Z_STRLEN_P(offset)+1, (void **) &retval) != FAILURE) {
|
||||
return retval;
|
||||
} else {
|
||||
return &EG(uninitialized_zval_ptr);
|
||||
switch (type) {
|
||||
case BP_VAR_R:
|
||||
zend_error(E_NOTICE, "Undefined index: %s", Z_STRVAL_P(offset));
|
||||
case BP_VAR_UNSET:
|
||||
case BP_VAR_IS:
|
||||
retval = &EG(uninitialized_zval_ptr);
|
||||
break;
|
||||
case BP_VAR_RW:
|
||||
zend_error(E_NOTICE,"Undefined index: %s", Z_STRVAL_P(offset));
|
||||
case BP_VAR_W: {
|
||||
zval *value;
|
||||
ALLOC_INIT_ZVAL(value);
|
||||
zend_symtable_update(ht, Z_STRVAL_P(offset), Z_STRLEN_P(offset)+1, (void**)&value, sizeof(void*), (void **)&retval);
|
||||
}
|
||||
} else {
|
||||
zend_error(E_NOTICE, "Undefined index: %s", Z_STRVAL_P(offset));
|
||||
return &EG(uninitialized_zval_ptr);
|
||||
}
|
||||
} else {
|
||||
return retval;
|
||||
}
|
||||
case IS_DOUBLE:
|
||||
return retval;
|
||||
case IS_RESOURCE:
|
||||
zend_error(E_STRICT, "Resource ID#%ld used as offset, casting to integer (%ld)", Z_LVAL_P(offset), Z_LVAL_P(offset));
|
||||
case IS_DOUBLE:
|
||||
case IS_BOOL:
|
||||
case IS_LONG:
|
||||
if (offset->type == IS_DOUBLE) {
|
||||
@ -349,26 +349,27 @@ static zval **spl_array_get_dimension_ptr_ptr(int check_inherited, zval *object,
|
||||
index = Z_LVAL_P(offset);
|
||||
}
|
||||
if (zend_hash_index_find(ht, index, (void **) &retval) == FAILURE) {
|
||||
if (type == BP_VAR_W || type == BP_VAR_RW) {
|
||||
zval *value;
|
||||
ALLOC_INIT_ZVAL(value);
|
||||
zend_hash_index_update(ht, index, (void**)&value, sizeof(void*), NULL);
|
||||
if (zend_hash_index_find(ht, index, (void **) &retval) != FAILURE) {
|
||||
return retval;
|
||||
} else {
|
||||
return &EG(uninitialized_zval_ptr);
|
||||
}
|
||||
} else {
|
||||
zend_error(E_NOTICE, "Undefined offset: %ld", index);
|
||||
return &EG(uninitialized_zval_ptr);
|
||||
switch (type) {
|
||||
case BP_VAR_R:
|
||||
zend_error(E_NOTICE, "Undefined offset: %ld", index);
|
||||
case BP_VAR_UNSET:
|
||||
case BP_VAR_IS:
|
||||
retval = &EG(uninitialized_zval_ptr);
|
||||
break;
|
||||
case BP_VAR_RW:
|
||||
zend_error(E_NOTICE, "Undefined offset: %ld", index);
|
||||
case BP_VAR_W: {
|
||||
zval *value;
|
||||
ALLOC_INIT_ZVAL(value);
|
||||
zend_hash_index_update(ht, index, (void**)&value, sizeof(void*), (void **)&retval);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
return retval;
|
||||
}
|
||||
break;
|
||||
return retval;
|
||||
default:
|
||||
zend_error(E_WARNING, "Illegal offset type");
|
||||
return &EG(uninitialized_zval_ptr);
|
||||
return (type == BP_VAR_W || type == BP_VAR_RW) ?
|
||||
&EG(error_zval_ptr) : &EG(uninitialized_zval_ptr);
|
||||
}
|
||||
} /* }}} */
|
||||
|
||||
@ -519,11 +520,11 @@ static void spl_array_unset_dimension_ex(int check_inherited, zval *object, zval
|
||||
}
|
||||
if (ht == &EG(symbol_table)) {
|
||||
if (zend_delete_global_variable(Z_STRVAL_P(offset), Z_STRLEN_P(offset) TSRMLS_CC)) {
|
||||
zend_error(E_NOTICE,"Undefined index: %s", Z_STRVAL_P(offset));
|
||||
zend_error(E_NOTICE,"Undefined index: %s", Z_STRVAL_P(offset));
|
||||
}
|
||||
} else {
|
||||
if (zend_symtable_del(ht, Z_STRVAL_P(offset), Z_STRLEN_P(offset)+1) == FAILURE) {
|
||||
zend_error(E_NOTICE,"Undefined index: %s", Z_STRVAL_P(offset));
|
||||
zend_error(E_NOTICE,"Undefined index: %s", Z_STRVAL_P(offset));
|
||||
} else {
|
||||
spl_array_object *obj = intern;
|
||||
|
||||
@ -569,7 +570,7 @@ static void spl_array_unset_dimension_ex(int check_inherited, zval *object, zval
|
||||
return;
|
||||
}
|
||||
if (zend_hash_index_del(ht, index) == FAILURE) {
|
||||
zend_error(E_NOTICE,"Undefined offset: %ld", Z_LVAL_P(offset));
|
||||
zend_error(E_NOTICE,"Undefined offset: %ld", Z_LVAL_P(offset));
|
||||
}
|
||||
break;
|
||||
default:
|
||||
@ -713,7 +714,6 @@ SPL_METHOD(Array, offsetSet)
|
||||
spl_array_write_dimension_ex(0, getThis(), index, value TSRMLS_CC);
|
||||
} /* }}} */
|
||||
|
||||
|
||||
void spl_array_iterator_append(zval *object, zval *append_value TSRMLS_DC) /* {{{ */
|
||||
{
|
||||
spl_array_object *intern = (spl_array_object*)zend_object_store_get_object(object TSRMLS_CC);
|
||||
|
@ -2820,7 +2820,7 @@ SPL_METHOD(CachingIterator, offsetGet)
|
||||
}
|
||||
|
||||
if (zend_symtable_find(HASH_OF(intern->u.caching.zcache), arKey, nKeyLength+1, (void**)&value) == FAILURE) {
|
||||
zend_error(E_NOTICE, "Undefined index: %s", arKey);
|
||||
zend_error(E_NOTICE, "Undefined index: %s", arKey);
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -63,7 +63,7 @@ bool(true)
|
||||
|
||||
Notice: Undefined property: ArrayObject::$prop in %s on line 40
|
||||
|
||||
Notice: Undefined index: prop in %s on line 40
|
||||
Notice: Undefined index: prop in %s on line 40
|
||||
NULL
|
||||
NULL
|
||||
- After:
|
||||
@ -91,7 +91,7 @@ bool(true)
|
||||
|
||||
Notice: Undefined property: MyArrayObject::$prop in %s on line 40
|
||||
|
||||
Notice: Undefined index: prop in %s on line 40
|
||||
Notice: Undefined index: prop in %s on line 40
|
||||
NULL
|
||||
NULL
|
||||
- After:
|
||||
|
@ -63,7 +63,7 @@ bool(true)
|
||||
|
||||
Notice: Undefined property: ArrayObject::$prop in %s on line 40
|
||||
|
||||
Notice: Undefined index: prop in %s on line 40
|
||||
Notice: Undefined index: prop in %s on line 40
|
||||
NULL
|
||||
NULL
|
||||
- After:
|
||||
@ -91,7 +91,7 @@ bool(true)
|
||||
|
||||
Notice: Undefined property: MyArrayObject::$prop in %s on line 40
|
||||
|
||||
Notice: Undefined index: prop in %s on line 40
|
||||
Notice: Undefined index: prop in %s on line 40
|
||||
NULL
|
||||
NULL
|
||||
- After:
|
||||
|
@ -61,11 +61,11 @@ bool(true)
|
||||
bool(true)
|
||||
- Unset:
|
||||
|
||||
Notice: Undefined index: prop in %s on line 39
|
||||
Notice: Undefined index: prop in %s on line 39
|
||||
|
||||
Notice: Undefined index: prop in %s on line 40
|
||||
Notice: Undefined index: prop in %s on line 40
|
||||
|
||||
Notice: Undefined index: prop in %s on line 40
|
||||
Notice: Undefined index: prop in %s on line 40
|
||||
NULL
|
||||
NULL
|
||||
- After:
|
||||
@ -91,9 +91,9 @@ bool(true)
|
||||
bool(true)
|
||||
- Unset:
|
||||
|
||||
Notice: Undefined index: prop in %s on line 40
|
||||
Notice: Undefined index: prop in %s on line 40
|
||||
|
||||
Notice: Undefined index: prop in %s on line 40
|
||||
Notice: Undefined index: prop in %s on line 40
|
||||
NULL
|
||||
NULL
|
||||
- After:
|
||||
|
@ -61,11 +61,11 @@ bool(true)
|
||||
bool(true)
|
||||
- Unset:
|
||||
|
||||
Notice: Undefined index: prop in %s on line 39
|
||||
Notice: Undefined index: prop in %s on line 39
|
||||
|
||||
Notice: Undefined index: prop in %s on line 40
|
||||
Notice: Undefined index: prop in %s on line 40
|
||||
|
||||
Notice: Undefined index: prop in %s on line 40
|
||||
Notice: Undefined index: prop in %s on line 40
|
||||
NULL
|
||||
NULL
|
||||
- After:
|
||||
@ -91,9 +91,9 @@ bool(true)
|
||||
bool(true)
|
||||
- Unset:
|
||||
|
||||
Notice: Undefined index: prop in %s on line 40
|
||||
Notice: Undefined index: prop in %s on line 40
|
||||
|
||||
Notice: Undefined index: prop in %s on line 40
|
||||
Notice: Undefined index: prop in %s on line 40
|
||||
NULL
|
||||
NULL
|
||||
- After:
|
||||
|
@ -102,7 +102,7 @@ object(ArrayObject)#2 (1) {
|
||||
--> Read existent, non-existent and dynamic:
|
||||
string(7) "changed"
|
||||
|
||||
Notice: Undefined index: nonexistent in %s on line 42
|
||||
Notice: Undefined index: nonexistent in %s on line 42
|
||||
NULL
|
||||
string(11) "new.changed"
|
||||
Original wrapped object:
|
||||
@ -171,7 +171,7 @@ object(ArrayObject)#2 (1) {
|
||||
|
||||
--> Unset existent, non-existent and dynamic:
|
||||
|
||||
Notice: Undefined index: nonexistent in %s on line 60
|
||||
Notice: Undefined index: nonexistent in %s on line 60
|
||||
Original wrapped object:
|
||||
object(UsesMagic)#1 (3) {
|
||||
["b"]=>
|
||||
|
@ -102,7 +102,7 @@ object(ArrayObject)#2 (1) {
|
||||
--> Read existent, non-existent and dynamic:
|
||||
string(7) "changed"
|
||||
|
||||
Notice: Undefined index: nonexistent in %s on line 42
|
||||
Notice: Undefined index: nonexistent in %s on line 42
|
||||
NULL
|
||||
string(11) "new.changed"
|
||||
Original wrapped object:
|
||||
@ -171,7 +171,7 @@ object(ArrayObject)#2 (1) {
|
||||
|
||||
--> Unset existent, non-existent and dynamic:
|
||||
|
||||
Notice: Undefined index: nonexistent in %s on line 60
|
||||
Notice: Undefined index: nonexistent in %s on line 60
|
||||
Original wrapped object:
|
||||
object(UsesMagic)#1 (3) {
|
||||
["b"]=>
|
||||
|
@ -107,7 +107,7 @@ object(UsesMagic)#2 (2) {
|
||||
--> Read existent, non-existent and dynamic:
|
||||
string(7) "changed"
|
||||
|
||||
Notice: Undefined index: nonexistent in %s on line 45
|
||||
Notice: Undefined index: nonexistent in %s on line 45
|
||||
NULL
|
||||
string(11) "new.changed"
|
||||
Original wrapped object:
|
||||
@ -180,7 +180,7 @@ object(UsesMagic)#2 (2) {
|
||||
|
||||
--> Unset existent, non-existent and dynamic:
|
||||
|
||||
Notice: Undefined index: nonexistent in %s on line 63
|
||||
Notice: Undefined index: nonexistent in %s on line 63
|
||||
Original wrapped object:
|
||||
object(C)#1 (3) {
|
||||
["b"]=>
|
||||
|
@ -107,7 +107,7 @@ object(UsesMagic)#2 (2) {
|
||||
--> Read existent, non-existent and dynamic:
|
||||
string(7) "changed"
|
||||
|
||||
Notice: Undefined index: nonexistent in %s on line 45
|
||||
Notice: Undefined index: nonexistent in %s on line 45
|
||||
NULL
|
||||
string(11) "new.changed"
|
||||
Original wrapped object:
|
||||
@ -180,7 +180,7 @@ object(UsesMagic)#2 (2) {
|
||||
|
||||
--> Unset existent, non-existent and dynamic:
|
||||
|
||||
Notice: Undefined index: nonexistent in %s on line 63
|
||||
Notice: Undefined index: nonexistent in %s on line 63
|
||||
Original wrapped object:
|
||||
object(C)#1 (3) {
|
||||
["b"]=>
|
||||
|
@ -44,8 +44,8 @@ string(21) "array element.changed"
|
||||
--> Remove the array element and try access again:
|
||||
bool(false)
|
||||
|
||||
Notice: Undefined index: p in %s on line 10
|
||||
Notice: Undefined index: p in %s on line 10
|
||||
NULL
|
||||
|
||||
Notice: Undefined index: p in %s on line 12
|
||||
Notice: Undefined index: p in %s on line 12
|
||||
string(8) ".changed"
|
||||
|
@ -79,15 +79,15 @@ object(ArrayObject)#%d (1) {
|
||||
}
|
||||
int(0)
|
||||
|
||||
Notice: Undefined offset: 6 in %sarray_001.php on line %d
|
||||
Notice: Undefined offset: 6 in %sarray_001.php on line %d
|
||||
NULL
|
||||
|
||||
Notice: Undefined index: b in %sarray_001.php on line %d
|
||||
Notice: Undefined index: b in %sarray_001.php on line %d
|
||||
NULL
|
||||
|
||||
Notice: Undefined offset: 7 in %sarray_001.php on line %d
|
||||
Notice: Undefined offset: 7 in %sarray_001.php on line %d
|
||||
|
||||
Notice: Undefined index: c in %sarray_001.php on line %d
|
||||
Notice: Undefined index: c in %sarray_001.php on line %d
|
||||
object(ArrayObject)#%d (1) {
|
||||
["storage":"ArrayObject":private]=>
|
||||
array(2) {
|
||||
|
@ -94,10 +94,10 @@ int(1)
|
||||
string(3) "3rd"
|
||||
int(4)
|
||||
|
||||
Notice: Undefined index: 5th in %sarray_010.php on line %d
|
||||
Notice: Undefined index: 5th in %sarray_010.php on line %d
|
||||
NULL
|
||||
|
||||
Notice: Undefined offset: 6 in %sarray_010.php on line %d
|
||||
Notice: Undefined offset: 6 in %sarray_010.php on line %d
|
||||
NULL
|
||||
===offsetSet===
|
||||
WRITE 1
|
||||
@ -128,9 +128,9 @@ array(6) {
|
||||
string(9) "changed 6"
|
||||
}
|
||||
|
||||
Notice: Undefined offset: 7 in %sarray_010.php on line %d
|
||||
Notice: Undefined offset: 7 in %sarray_010.php on line %d
|
||||
|
||||
Notice: Undefined index: 8th in %sarray_010.php on line %d
|
||||
Notice: Undefined index: 8th in %sarray_010.php on line %d
|
||||
array(4) {
|
||||
[0]=>
|
||||
string(3) "1st"
|
||||
|
@ -42,7 +42,7 @@ bool(true)
|
||||
--> Remove the array element and try access again:
|
||||
bool(false)
|
||||
|
||||
Notice: Undefined index: p in %s on line %d
|
||||
Notice: Undefined index: p in %s on line %d
|
||||
NULL
|
||||
|
||||
--> Re-add the real property:
|
||||
|
@ -25,9 +25,9 @@ isset($ao->prop4);
|
||||
--EXPECTF--
|
||||
Doesn't trigger __get.
|
||||
|
||||
Notice: Undefined index: prop1 in %s on line 11
|
||||
Notice: Undefined index: prop1 in %s on line 11
|
||||
Doesn't trigger __set.
|
||||
Doesn't trigger __unset.
|
||||
|
||||
Notice: Undefined index: prop3 in %s on line 17
|
||||
Notice: Undefined index: prop3 in %s on line 17
|
||||
Shouldn't trigger __isset.
|
@ -19,6 +19,6 @@ function testAccess($c, $ao) {
|
||||
--EXPECTF--
|
||||
Notice: Undefined property: C::$prop in %sbug54323.php on line 14
|
||||
|
||||
Notice: Undefined index: prop in %sbug54323.php on line 14
|
||||
Notice: Undefined index: prop in %sbug54323.php on line 14
|
||||
NULL
|
||||
NULL
|
||||
|
50
ext/spl/tests/bug62978.phpt
Normal file
50
ext/spl/tests/bug62978.phpt
Normal file
@ -0,0 +1,50 @@
|
||||
--TEST--
|
||||
Bug #62987 (Assigning to ArrayObject[null][something] overrides all undefined variables)
|
||||
--FILE--
|
||||
<?php
|
||||
$a = new ArrayObject();
|
||||
|
||||
$b = array();
|
||||
|
||||
$a[null]['hurr'] = 'durr';
|
||||
|
||||
var_dump($a['epic_magic']);
|
||||
var_dump($b['epic_magic']);
|
||||
var_dump($c['epic_magic']); // Undefined var!!
|
||||
|
||||
$d = array();
|
||||
var_dump($a['epic_magic']); // more magic!
|
||||
var_dump($d['epic_magic']);
|
||||
|
||||
$e = 'srsly?';
|
||||
var_dump($a['epic_magic']); // srsly.
|
||||
var_dump(isset($a['epic_magic']));
|
||||
|
||||
$fp = fopen(__FILE__, 'r');
|
||||
var_dump($a[$fp]);
|
||||
|
||||
fclose($fp);
|
||||
--EXPECTF--
|
||||
Notice: Undefined index: epic_magic in %sbug62978.php on line %d
|
||||
NULL
|
||||
|
||||
Notice: Undefined index: epic_magic in %sbug62978.php on line %d
|
||||
NULL
|
||||
|
||||
Notice: Undefined variable: c in %sbug62978.php on line %d
|
||||
NULL
|
||||
|
||||
Notice: Undefined index: epic_magic in %sbug62978.php on line %d
|
||||
NULL
|
||||
|
||||
Notice: Undefined index: epic_magic in %sbug62978.php on line %d
|
||||
NULL
|
||||
|
||||
Notice: Undefined index: epic_magic in %sbug62978.php on line %d
|
||||
NULL
|
||||
bool(false)
|
||||
|
||||
Strict Standards: Resource ID#%d used as offset, casting to integer (%d) in %sbug62978.php on line %d
|
||||
|
||||
Notice: Undefined offset: %d in %sbug62978.php on line %d
|
||||
NULL
|
@ -81,7 +81,7 @@ NULL
|
||||
int(0)
|
||||
bool(false)
|
||||
|
||||
Notice: Undefined index: 0 in %siterator_044.php on line %d
|
||||
Notice: Undefined index: 0 in %siterator_044.php on line %d
|
||||
NULL
|
||||
===1===
|
||||
object(stdClass)#%d (0) {
|
||||
@ -97,31 +97,31 @@ object(MyFoo)#%d (0) {
|
||||
}
|
||||
bool(false)
|
||||
|
||||
Notice: Undefined index: foo in %siterator_044.php on line %d
|
||||
Notice: Undefined index: foo in %siterator_044.php on line %d
|
||||
NULL
|
||||
===3===
|
||||
NULL
|
||||
bool(false)
|
||||
|
||||
Notice: Undefined index: in %siterator_044.php on line %d
|
||||
Notice: Undefined index: in %siterator_044.php on line %d
|
||||
NULL
|
||||
===4===
|
||||
int(2)
|
||||
bool(false)
|
||||
|
||||
Notice: Undefined index: 2 in %siterator_044.php on line %d
|
||||
Notice: Undefined index: 2 in %siterator_044.php on line %d
|
||||
NULL
|
||||
===5===
|
||||
string(3) "foo"
|
||||
bool(false)
|
||||
|
||||
Notice: Undefined index: foo in %siterator_044.php on line %d
|
||||
Notice: Undefined index: foo in %siterator_044.php on line %d
|
||||
NULL
|
||||
===6===
|
||||
int(3)
|
||||
bool(false)
|
||||
|
||||
Notice: Undefined index: 3 in %siterator_044.php on line %d
|
||||
Notice: Undefined index: 3 in %siterator_044.php on line %d
|
||||
NULL
|
||||
===FILL===
|
||||
===0===
|
||||
@ -146,7 +146,7 @@ int(1)
|
||||
NULL
|
||||
bool(false)
|
||||
|
||||
Notice: Undefined index: in %siterator_044.php on line %d
|
||||
Notice: Undefined index: in %siterator_044.php on line %d
|
||||
NULL
|
||||
===4===
|
||||
int(2)
|
||||
@ -160,6 +160,6 @@ int(1)
|
||||
int(3)
|
||||
bool(false)
|
||||
|
||||
Notice: Undefined index: 3 in %siterator_044.php on line %d
|
||||
Notice: Undefined index: 3 in %siterator_044.php on line %d
|
||||
NULL
|
||||
===DONE===
|
||||
|
@ -136,20 +136,20 @@ PHP_MINFO_FUNCTION(assert) /* {{{ */
|
||||
}
|
||||
/* }}} */
|
||||
|
||||
/* {{{ proto int assert(string|bool assertion)
|
||||
/* {{{ proto int assert(string|bool assertion[, string description])
|
||||
Checks if assertion is false */
|
||||
PHP_FUNCTION(assert)
|
||||
{
|
||||
zval **assertion;
|
||||
int val;
|
||||
int val, description_len = 0;
|
||||
char *myeval = NULL;
|
||||
char *compiled_string_description;
|
||||
char *compiled_string_description, *description = NULL;
|
||||
|
||||
if (! ASSERTG(active)) {
|
||||
RETURN_TRUE;
|
||||
}
|
||||
|
||||
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "Z", &assertion) == FAILURE) {
|
||||
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "Z|s", &assertion, &description, &description_len) == FAILURE) {
|
||||
return;
|
||||
}
|
||||
|
||||
@ -167,7 +167,11 @@ PHP_FUNCTION(assert)
|
||||
compiled_string_description = zend_make_compiled_string_description("assert code" TSRMLS_CC);
|
||||
if (zend_eval_stringl(myeval, Z_STRLEN_PP(assertion), &retval, compiled_string_description TSRMLS_CC) == FAILURE) {
|
||||
efree(compiled_string_description);
|
||||
php_error_docref(NULL TSRMLS_CC, E_RECOVERABLE_ERROR, "Failure evaluating code: %s%s", PHP_EOL, myeval);
|
||||
if (description_len == 0) {
|
||||
php_error_docref(NULL TSRMLS_CC, E_RECOVERABLE_ERROR, "Failure evaluating code: %s%s", PHP_EOL, myeval);
|
||||
} else {
|
||||
php_error_docref(NULL TSRMLS_CC, E_RECOVERABLE_ERROR, "Failure evaluating code: %s%s:\"%s\"", PHP_EOL, description, myeval);
|
||||
}
|
||||
if (ASSERTG(bail)) {
|
||||
zend_bailout();
|
||||
}
|
||||
@ -196,7 +200,7 @@ PHP_FUNCTION(assert)
|
||||
}
|
||||
|
||||
if (ASSERTG(callback)) {
|
||||
zval *args[3];
|
||||
zval **args = safe_emalloc(description_len == 0 ? 3 : 4, sizeof(zval **), 0);
|
||||
zval *retval;
|
||||
int i;
|
||||
uint lineno = zend_get_executed_lineno(TSRMLS_C);
|
||||
@ -214,19 +218,38 @@ PHP_FUNCTION(assert)
|
||||
ZVAL_FALSE(retval);
|
||||
|
||||
/* XXX do we want to check for error here? */
|
||||
call_user_function(CG(function_table), NULL, ASSERTG(callback), retval, 3, args TSRMLS_CC);
|
||||
if (description_len == 0) {
|
||||
call_user_function(CG(function_table), NULL, ASSERTG(callback), retval, 3, args TSRMLS_CC);
|
||||
for (i = 0; i <= 2; i++) {
|
||||
zval_ptr_dtor(&(args[i]));
|
||||
}
|
||||
} else {
|
||||
MAKE_STD_ZVAL(args[3]);
|
||||
ZVAL_STRINGL(args[3], SAFE_STRING(description), description_len, 1);
|
||||
|
||||
for (i = 0; i <= 2; i++) {
|
||||
zval_ptr_dtor(&(args[i]));
|
||||
call_user_function(CG(function_table), NULL, ASSERTG(callback), retval, 4, args TSRMLS_CC);
|
||||
for (i = 0; i <= 3; i++) {
|
||||
zval_ptr_dtor(&(args[i]));
|
||||
}
|
||||
}
|
||||
|
||||
efree(args);
|
||||
zval_ptr_dtor(&retval);
|
||||
}
|
||||
|
||||
if (ASSERTG(warning)) {
|
||||
if (myeval) {
|
||||
php_error_docref(NULL TSRMLS_CC, E_WARNING, "Assertion \"%s\" failed", myeval);
|
||||
if (description_len == 0) {
|
||||
if (myeval) {
|
||||
php_error_docref(NULL TSRMLS_CC, E_WARNING, "Assertion \"%s\" failed", myeval);
|
||||
} else {
|
||||
php_error_docref(NULL TSRMLS_CC, E_WARNING, "Assertion failed");
|
||||
}
|
||||
} else {
|
||||
php_error_docref(NULL TSRMLS_CC, E_WARNING, "Assertion failed");
|
||||
if (myeval) {
|
||||
php_error_docref(NULL TSRMLS_CC, E_WARNING, "%s: \"%s\" failed", description, myeval);
|
||||
} else {
|
||||
php_error_docref(NULL TSRMLS_CC, E_WARNING, "%s failed", description);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -321,3 +344,4 @@ PHP_FUNCTION(assert_options)
|
||||
* vim600: sw=4 ts=4 fdm=marker
|
||||
* vim<600: sw=4 ts=4
|
||||
*/
|
||||
|
||||
|
@ -15,7 +15,7 @@ assert(1);
|
||||
|
||||
/* Wrong parameter count in assert */
|
||||
assert_options(ASSERT_ACTIVE, 1);
|
||||
assert(2,3);
|
||||
assert(2, "failure", 3);
|
||||
|
||||
/* Wrong parameter count in assert_options */
|
||||
assert_options(ASSERT_ACTIVE, 0, 2);
|
||||
@ -36,7 +36,7 @@ echo "not reached\n";
|
||||
|
||||
?>
|
||||
--EXPECTF--
|
||||
Warning: assert() expects exactly 1 parameter, 2 given in %s on line %d
|
||||
Warning: assert() expects at most 2 parameters, 3 given in %s on line %d
|
||||
|
||||
Warning: assert_options() expects at most 2 parameters, 3 given in %s on line %d
|
||||
|
||||
@ -45,3 +45,4 @@ Warning: assert_options() expects parameter 1 to be long, %unicode_string_option
|
||||
Warning: assert(): Assertion failed in %s on line %d
|
||||
|
||||
Warning: assert(): Assertion failed in %s on line %d
|
||||
|
||||
|
26
ext/standard/tests/assert/assert_basic6.phpt
Normal file
26
ext/standard/tests/assert/assert_basic6.phpt
Normal file
@ -0,0 +1,26 @@
|
||||
--TEST--
|
||||
assert() - basic - Test that bailout works
|
||||
--INI--
|
||||
assert.active = 1
|
||||
assert.warning = 1
|
||||
assert.callback = f1
|
||||
assert.quiet_eval = 1
|
||||
assert.bail = 0
|
||||
--FILE--
|
||||
<?php
|
||||
function f1($message)
|
||||
{
|
||||
echo "f1 called\n";
|
||||
}
|
||||
|
||||
//bail out on error
|
||||
var_dump($rao = assert_options(ASSERT_BAIL, 1));
|
||||
$sa = "0 != 0";
|
||||
var_dump($r2 = assert($sa, "0 is 0"));
|
||||
echo "If this is printed BAIL hasn't worked";
|
||||
--EXPECTF--
|
||||
int(0)
|
||||
f1 called
|
||||
|
||||
Warning: assert(): 0 is 0: "0 != 0" failed in %s on line 10
|
||||
|
@ -20,19 +20,19 @@ function handler($errno, $errstr) {
|
||||
|
||||
//Wrong number of parameters for assert_options()
|
||||
assert_options(ASSERT_WARNING, 1);
|
||||
var_dump($rao=assert_options(ASSERT_CALLBACK,"f1",1));
|
||||
var_dump($rao = assert_options(ASSERT_CALLBACK, "f1", 1));
|
||||
|
||||
|
||||
//Unknown option for assert_options()
|
||||
var_dump($rao=assert_options("F1","f1"));
|
||||
var_dump($rao=assert_options("F1", "f1"));
|
||||
|
||||
//Wrong number of parameters for assert()
|
||||
$sa="0 != 0";
|
||||
var_dump($r2=assert($sa,1));
|
||||
var_dump($r2 = assert($sa, "message", 1));
|
||||
|
||||
|
||||
//Catch recoverable error with handler
|
||||
var_dump($rc=assert('aa=sd+as+safsafasfaçsafçsafç'));
|
||||
var_dump($rc = assert('aa=sd+as+safsafasfaçsafçsafç'));
|
||||
--EXPECTF--
|
||||
Warning: assert_options() expects at most 2 parameters, 3 given in %s on line %d
|
||||
NULL
|
||||
@ -40,5 +40,6 @@ NULL
|
||||
Warning: assert_options() expects parameter 1 to be long, string given in %s on line %d
|
||||
NULL
|
||||
|
||||
Warning: assert() expects exactly 1 parameter, 2 given in %s on line %d
|
||||
Warning: assert() expects at most 2 parameters, 3 given in %s on line %d
|
||||
NULL
|
||||
|
||||
|
30
ext/standard/tests/assert/assert_error2.phpt
Normal file
30
ext/standard/tests/assert/assert_error2.phpt
Normal file
@ -0,0 +1,30 @@
|
||||
--TEST--
|
||||
assert() - basic - Test that bailout works
|
||||
--INI--
|
||||
assert.active = 1
|
||||
assert.warning = 1
|
||||
assert.callback = f1
|
||||
assert.quiet_eval = 1
|
||||
assert.bail = 0
|
||||
error_reporting = -1
|
||||
display_errors = 1
|
||||
--FILE--
|
||||
<?php
|
||||
function f1($script, $line, $message, $user_message)
|
||||
{
|
||||
echo "f1 called\n";
|
||||
}
|
||||
|
||||
//bail out on error
|
||||
var_dump($rao = assert_options(ASSERT_BAIL, 1));
|
||||
$sa = "0 != 0";
|
||||
var_dump($r2 = assert($sa));
|
||||
echo "If this is printed BAIL hasn't worked";
|
||||
--EXPECTF--
|
||||
int(0)
|
||||
|
||||
Warning: Missing argument 4 for f1() in %s on line 2
|
||||
f1 called
|
||||
|
||||
Warning: assert(): Assertion "0 != 0" failed in %s on line 10
|
||||
|
21
ext/standard/tests/assert/assert_error3.phpt
Normal file
21
ext/standard/tests/assert/assert_error3.phpt
Normal file
@ -0,0 +1,21 @@
|
||||
--TEST--
|
||||
assert() - basic - Test recoverable error
|
||||
--INI--
|
||||
assert.active = 1
|
||||
assert.warning = 1
|
||||
assert.callback = f1
|
||||
assert.quiet_eval = 0
|
||||
assert.bail = 0
|
||||
error_reporting = -1
|
||||
display_errors = 1
|
||||
--FILE--
|
||||
<?php
|
||||
$sa = "0 $ 0";
|
||||
var_dump($r2 = assert($sa));
|
||||
--EXPECTF--
|
||||
|
||||
Parse error: syntax error, unexpected '$' in %s(3) : assert code on line 1
|
||||
|
||||
Catchable fatal error: assert(): Failure evaluating code:
|
||||
0 $ 0 in %s on line 3
|
||||
|
21
ext/standard/tests/assert/assert_error4.phpt
Normal file
21
ext/standard/tests/assert/assert_error4.phpt
Normal file
@ -0,0 +1,21 @@
|
||||
--TEST--
|
||||
assert() - basic - Test recoverable error
|
||||
--INI--
|
||||
assert.active = 1
|
||||
assert.warning = 1
|
||||
assert.callback = f1
|
||||
assert.quiet_eval = 0
|
||||
assert.bail = 0
|
||||
error_reporting = -1
|
||||
display_errors = 1
|
||||
--FILE--
|
||||
<?php
|
||||
$sa = "0 $ 0";
|
||||
var_dump($r2 = assert($sa, "Describing what was asserted"));
|
||||
--EXPECTF--
|
||||
|
||||
Parse error: syntax error, unexpected '$' in %s(3) : assert code on line 1
|
||||
|
||||
Catchable fatal error: assert(): Failure evaluating code:
|
||||
Describing what was asserted:"0 $ 0" in %s on line 3
|
||||
|
@ -2,9 +2,9 @@
|
||||
#line 1 "ext/standard/url_scanner_ex.re"
|
||||
/*
|
||||
+----------------------------------------------------------------------+
|
||||
| PHP Version 6 |
|
||||
| PHP Version 5 |
|
||||
+----------------------------------------------------------------------+
|
||||
| Copyright (c) 1997-2006 The PHP Group |
|
||||
| Copyright (c) 1997-2012 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 |
|
||||
|
@ -1,8 +1,8 @@
|
||||
/*
|
||||
+----------------------------------------------------------------------+
|
||||
| PHP Version 6 |
|
||||
| PHP Version 5 |
|
||||
+----------------------------------------------------------------------+
|
||||
| Copyright (c) 1997-2006 The PHP Group |
|
||||
| Copyright (c) 1997-2012 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 |
|
||||
|
BIN
ext/zlib/tests/bug55544-win.phpt
Normal file
BIN
ext/zlib/tests/bug55544-win.phpt
Normal file
Binary file not shown.
Binary file not shown.
24
ext/zlib/tests/bug_52944-darwin.phpt
Normal file
24
ext/zlib/tests/bug_52944-darwin.phpt
Normal file
@ -0,0 +1,24 @@
|
||||
--TEST--
|
||||
Bug #52944 (segfault with zlib filter and corrupted data)
|
||||
--SKIPIF--
|
||||
<?php if (!extension_loaded("zlib")) print "skip"; ?>
|
||||
<?php
|
||||
if (PHP_OS != 'Darwin') {
|
||||
die("skip Darwin only");
|
||||
}
|
||||
--INI--
|
||||
allow_url_fopen=1
|
||||
--FILE--
|
||||
<?php
|
||||
require dirname(__FILE__) . "/bug_52944_corrupted_data.inc";
|
||||
|
||||
$fp = fopen('data://text/plain;base64,' . $data, 'r');
|
||||
stream_filter_append($fp, 'zlib.inflate', STREAM_FILTER_READ);
|
||||
var_dump(fread($fp,1));
|
||||
var_dump(fread($fp,1));
|
||||
fclose($fp);
|
||||
echo "Done.\n";
|
||||
--EXPECT--
|
||||
string(1) "%"
|
||||
string(1) "C"
|
||||
Done.
|
24
ext/zlib/tests/bug_52944-win.phpt
Normal file
24
ext/zlib/tests/bug_52944-win.phpt
Normal file
@ -0,0 +1,24 @@
|
||||
--TEST--
|
||||
Bug #52944 (segfault with zlib filter and corrupted data)
|
||||
--SKIPIF--
|
||||
<?php if (!extension_loaded("zlib")) print "skip"; ?>
|
||||
<?php
|
||||
if (substr(PHP_OS, 0, 3) != 'WIN') {
|
||||
die("skip windows only");
|
||||
}
|
||||
--INI--
|
||||
allow_url_fopen=1
|
||||
--FILE--
|
||||
<?php
|
||||
require dirname(__FILE__) . "/bug_52944_corrupted_data.inc";
|
||||
|
||||
$fp = fopen('data://text/plain;base64,' . $data, 'r');
|
||||
stream_filter_append($fp, 'zlib.inflate', STREAM_FILTER_READ);
|
||||
var_dump(fread($fp,1));
|
||||
var_dump(fread($fp,1));
|
||||
fclose($fp);
|
||||
echo "Done.\n";
|
||||
--EXPECT--
|
||||
string(1) "%"
|
||||
string(1) "C"
|
||||
Done.
|
@ -1,162 +1,27 @@
|
||||
--TEST--
|
||||
Bug #52944 (segfault with zlib filter and corrupted data)
|
||||
--SKIPIF--
|
||||
<?php if (!extension_loaded("zlib")) print "skip"; ?>
|
||||
<?php
|
||||
include "func.inc";
|
||||
if (substr(PHP_OS, 0, 3) == 'WIN' && version_compare(get_zlib_version(), '1.2.7') < 0) {
|
||||
die('skip - only for zlib >= 1.2.7 on windows');
|
||||
}
|
||||
--INI--
|
||||
allow_url_fopen=1
|
||||
--FILE--
|
||||
<?php
|
||||
$data =
|
||||
'U3XuBFLaJfQAWt4cqi8u8ugXxyDcPTZy8VicbJr50gGTEh0dmo+d8O4uBCTuAf3dHbbDYTieluscWXkKlavfKdMkZZRP3GpTApbb'.
|
||||
'mQONJCgdbpPHat6iGOoq34vIGCLKFuD8qiA4ti5AL7bArvDtd7i+5tvn49j1L3bwroIsk1iPS5leATIwp1iwk+VdPLzu7tsexYBf'.
|
||||
'giLx7WtQI779GtQIKD1QI4AT1Ihvf0I1Iu1u1Ca+7Vs3TtfqiCXvrm99EuJy/ix5z1VD8atW9sUyvmu/pQn8KU5lZvHUqC5xzgow'.
|
||||
'0e8m/e5n5fLH2EPhBn4CA3n0p02/E/hVlAgxNIczOk7H7shAHSyUQ7PIwicPE/xNw7Nq4F+aHj2CowlZQKvhr2+fGIhA1QsSG6SD'.
|
||||
'y3MBWfRsWxpYq08oqfievkq2Du7uwO99DGhG4GQrIODp67QfRFEFnrUQWD1qV2R44JVHoEjwt5c6ASus4MdOAtA+2OZAHLLOA9O6'.
|
||||
'4kgGY4wOggODnQMWrk6fnTn4s4E/GG/QqEPiOiY+PWvij9MDz+0qM8WlyB6rGiGdVcVbChvQJhcjos7ShfrFxU017nBgsMHx2OON'.
|
||||
'NV7mx3AovW/veYYnlUfNlF1TNysBvNPrs5V6ClWzREIaxqSGPIK+EoQEeqBvCarbQHOQnolOl/jMrmXPMBWbIDRkzJPVo3kCD3Us'.
|
||||
'NRXjK+Ad8/fMLPiqY7+CulD4Vc/pga9nIEdhGDsx1qvT4Aw9rpW6rGtv5tqvcnMLWCNgtbu7BZ25GYiGMwiStZFNs0jY+uxVFrcG'.
|
||||
'rOVt+PaYWLhRRxt3rOCm2E/BUUA75CBa7wmWkSkXFyV7bsA/9NU5TPSC8jU9p/fSqS0u9l44323oNb1h6KfYl1mvAYIzNUX0Csfp'.
|
||||
'pozkYa12FecgDSsD86KHnATUwz8uzu3jbL5Bkb9UyUtMjL30feyC0oVBYY/DcR8DYdAnbI1FcItMFuAcIkNLx7498TGqFlN49v/K'.
|
||||
'5TdaEbZPfKhWMwvZw5SKGjMvAGm6xBrEIRtYsmfRcY0NfA5ogzyuzS2nO9sCMcVkMlxTpc03vuJcSkv9T4aZkYktzv5j3FUIf9Eu'.
|
||||
'EVuPX9ZM2dBAEEEAmEzVXRcbdmMfGoEF0hn+ufCvjZoGXMbSLKGXRkIhYEcJFHzrGphvw7M/YAd1MT/q4b1weBHE7+N+ge1EyDGK'.
|
||||
'vT/q0GzHs65w1UpMcFyhKRUsLtZfOj1gG3MMrfijvnyV7gJ6DOJTfsQwogzOuESkGzr2vt7AB5ltDDDgs1YBLCP2Hs4ep/INGvDn'.
|
||||
'0gS4x7TeREJvQoEvnXoNF2AxzeJZadBG9nsfE1DhTWy/BU0CvZ/t/8VxK1No7y8OsiarJz7+Z4eP7zN0XqDFE2fBdgcLzaFdGau4'.
|
||||
'eCY+NT0bWZiQ9RJ8xXipdAO0oplw23O6CXo1DvAcC7C0VnHjT9+dnveSDURCDL+J058ivgw1MKpyUank1fTE7eD+MYNOtKepW3EM'.
|
||||
'5BaeogscRezzQwX74AjxOVQW7QYa4BPofdJVOrFAYE2dq42rbINe19qxXjuXQquNl2liaVckfFge4ywTvwxcfNuyttEveIsC5Efh'.
|
||||
't/0A5I1okwDIHgrUs3fN2x3Q79uewcOW4/dgcJII2THNt84OUqH5dlnqMzEPzLrjLQi4S+MtVgp6vWcf+ZBE33o8admzR8jNW06P'.
|
||||
'QldnMQigV9BkjL7s2W0fRg+kbGLKAf78yTVnjHqLJv5Qjv0IeEDy4yPGq0JBW+BDvsVZShTCaCWReUxyexvGUy8LRxw72zipLkfM'.
|
||||
'a5oI2gU7/g1j8VDFlbFspQbEOJs7RdSJJDjP95E1IHKcjuHLG4xcDeh/dWXyLkXf/JFL2QJcW2nE5NXi4hT+b7e6jjOGiqHNMbWT'.
|
||||
'sLVBvw1MQLgf8dt69bepfRWCHfyDIx4Z+RYGUv6AqwxbGGD5A8YzzGY9+71nbKlzi0glZwx/ABx/NvCnUYMEyJXuvXns4PsG/jQ6'.
|
||||
'9kcfPq8j/DqmrZ9xXXoYSLidm1i1f/LA7BI807Pf4oZPYI19F9WRQRAtZJMeRRzCn8DnwMM9PzepeCNEb883OvT9HP0ovLO8UkY9'.
|
||||
'/oSSaM+n4dt20Kigx0lBgiPHgQFn4nAVc8ufSMdg4i0Z5mg0oDjD7s0saDFcEhehwEJntB2onT2hGTAXAx8MKgAVNU21E8wQNYXQ'.
|
||||
'NFf40yNVQga+Z0+xrAmk7oMUQWOfM/2ZTX758olZiaMm33pQ/X1BtvOrMAnHeJiBSheFXMKD94DNU2mkmsvE3AGrJtVcB2n/4inK'.
|
||||
'jwAZCUviQzNQgOMJojl7IF8e6YyJidrAa1HrParr/hwJifakm3TB5m8GqSGxuFhz2Nv4I4tpcyMhr4FeaN2ikWvSsZuGlgZCVWHF'.
|
||||
'Np2AKxTgEbXkY+6FyRivfDWrEnEbI0h5C9WhRdKUIws1Ah6PXb/LjqrO8bUMac6wX7iXoKV/qlgtU/vKMP8GXcQaGMxdF4PtMdNP'.
|
||||
'ZfKg8U56sg92RdJk2/hHYYCN5zp4Y3bwxvRIDt4rezRJujhIQWXMspk1tCIWF4Fj37holt/deS/w2ZSTfD2cxMJZPbDZ0OYnSf04'.
|
||||
'AG019g+HdEw8gKmvDnh0/LSRPjWAIn4zfc2aeSUXcBYeU1jd2I1B897dKS8OKHsMHdJLqeNoVE7kY6f05tQBMfvYtSMfCsHh2TKu'.
|
||||
'LJozmKY8Pt2g/m3wGcJKGzaKCYCjQaYqLY9ja5xckLecwnjndoKrMLh2ChaskC6FQQLdYmK3k6T6hmzudB5gliE9wbMKq0ZO2+Kd'.
|
||||
'frgGaU2bFYOwh4YbGc/Zhj9Itfsuumm46+8WuYgSemdNDMUOrLF9bIiF1SvIcfVibPsEfwXwEgRSrs4IkLhpCoDTFzjumlOAIgv7'.
|
||||
'dHqWGtnCI+BW4UFq1KaFKnGAPM8tcjzFDns13W1tFBMMjlEFXCANwEPGsKQoHiwupo+2BNgoJzXw8Jci0Ug780lYtzhDwyI4bF6x'.
|
||||
'tqUz//T3J/sNHcfVGwcG5Bv26+FhQ7/TQV2+UfYjXUmH+PYKvF9nYOAfXIFs05MF0GZuD+I1bxzCPYYAjX94gfYEikCDHljmHIQW'.
|
||||
'UdBAG97qgZKGn3X8eYo/z/DnOf58iz/fnZmpI6Hv5tHsjoPB/VhMZvm0zJxnI7sKbVamF/wDJ7XXkHRLpV/PHnqUZUHNI1FjPSox'.
|
||||
'M2fsNKtw7xDv3pBTh3Jpx8SUjDoe7Ssr/t9s7tgDz8hKkEz5kxsXB26mjTbLQ5gd0ryBQfK6DbLuACweipYkhxgdULB45bjEIYlj'.
|
||||
'hFzVsQOI9LI/eo5Cvzx90cFAgZLOlXo0DtD6ybmilDPD+Gr6DgT5PLw4dFw+wKZQgkwvoxcfLGV8/5ybY+ZeR4R9OdUvJqZS+MKc'.
|
||||
's5i2khnoq5qlU1GEomn7cvac2y5zlAvJ5ekoBXEmmg4vFCRqJWfSDU8FLZagAgvcApwcX4zNnW+3KWE2YAQKUg1bPxdm05UZpCod'.
|
||||
'QOJfTouMHbo2uDhDcozKx1ymCZKK+RG2g1QRLvx2xHWCOiqI77EHF3INCaEsyzUz/VZsDo99btQVL3dOHTSHKdSbBiP8BunIxD/Q'.
|
||||
'kVOlT56ZzWmO6pBwBb6UZL5nVh1s0o0rPqys8GkNel/5BI5a7+5OBVgHLswDjCWAKA3QjzMQmuDJdZ4xFcc9XYlZf0GhqxmZKhXj'.
|
||||
'oLpb2QyUXsI4reNzqEBAwoCl1JXT28ixWewzk2fHsDUVeVTikTHNoQn+mMMZ1hXzRpybchWrwo89E5V7YBNqMbVKXjKa6zlzsufk'.
|
||||
'3oVshy4QS3Y9MPPSWuvCHpWGY1C0GsnGl0s+DtMkVYZBwZokYHiw02MjvySnMDkpMz/PzY/0ifyikqkgDvhBfOcL9CYY5bY/jvvi'.
|
||||
'0e1jIum7gPac24Oohaeixwlae4FNHGYihuxDmm5vHR6cHB3une9vHv+I6Kpgjt/uvj65F2Jzj7/nJomR+3jKD6fL8tO4vMaEMSSt'.
|
||||
'qrMG7I40BA458LMgpdHs7Nht3v3l2z5ZEqYieUvZsMg270hz7W51oW03NT86wygOKgqXRQeupQr6efBYaiBLDapLDYqlHoHOLpfY'.
|
||||
'qSwxB0tklaW15xDWlV1D20regqPt5Dtm5Dke7kiQcFviiCUS7AXYS7cA2w+BHXaH7agAmLjOQgbZqYZUqpmk1dxKpxmK9WQGSt0H'.
|
||||
'tjq2g344KEC+ySAZGy7LRpNxAezay+C2g3Hgj2kvUAFqoja5MwdSacnEzeM8wUWYAs5xJc4CpIJznOLcA4HSfxO2K+iz7YrmdOaB'.
|
||||
'KRi38xiPg/gqiPcL00gA5qRdfRQMonEwH7CeQ1iCXiiAr9E5dNU8uy2bgflDPygWVwCEMo/p9PojsEkKROm6WR8f8ynS1cxwojAD'.
|
||||
'jRQ2cAtQu3n2J8DNod+NioAjtzyoUCoWbckOnmzmqVBbfJpZGTAoAO62yjDtAsw+nXxWhusU4A4OyzDdAswxnY5WhgsLcCdBXFFi'.
|
||||
'zwOBkGtnVf0vvIyHN30/mgzHlVNpbyXQT7yZsAJIHB+AgBetQjGvMKaPji3BZ4IZFGF+FFXpFz+8UVjqSMR0HIrT5ApW8FTg2PQr'.
|
||||
'WzH1ZIgLNqVkSKexLqj0RCSMcioojOCFcTzVeEOD2wkEAs3RijgN/f3mSv15vfb06fOVNfCAFfDC1BXYlzONN8hBk/Dy861WFgiz'.
|
||||
'FTu4UpY7BrK5NYLExKnrzT8sbLXEUduODm2ntdo0ydwaoRviC0h6wcXqqjsHP0XD4LDdBhLTgfxi/+BjB6wzgabNaPCkCblpNb/L'.
|
||||
'TsD1Ujg2IA2xB/Gxo97KwLDXeJxC7rDERTxU6g8L+fMa9UVcRTdKhzZulFIaImUU3gR9SjGZSNdxCO3VX4SDjoYrmEvixGc8xnIM'.
|
||||
'OmQV/myETn396fPaYsepLd44a/oy1HIrhuroi7hsL1bTAZsMLaI1/ewLhyylRig7BACCp2sA/vMR4VrSvChuAeMt1Za061Bf1lt4'.
|
||||
'xn19SesG8IItxrfVlzrWHSh57Cyl9ZYnVcd2iLVONibfrj99Wlsc1RaHSwU+gazbGSuF2ymnhHhiG/FKmmiGx8vO0qJfxxPt+bm1'.
|
||||
'9FtJ/ocFaPR1oWuXFrtLy7l+xZJOHKiCJKfYO/AteCBvnSpiZgB/WDCMcNcJT9IjZZdWl0xgMgwBMRDtSe5w9nDXNBsiBwcvCDYP'.
|
||||
'Tx474dsSLJOgvSS7tqqWZkqqOIN7y3QXDAefl3TZ33pN14gWjl7XNaYBPa6+pPPxxTWEssfwnjy3NTVS+fQNEPbR7aPVJ397sLm/'.
|
||||
'g+79uzgYgL6xewnen4LX8y39ccRp50nXBfqdAxmXTDx3lm/aePRodRVd2+NBkr6TPIvpvhdHWyIl8GyJvmU4z9n6A1TsJSriFYEe'.
|
||||
'JV1QzJTyIRzKq0i5gEczU+JhJLJq8hrcaoz0NUMploYeyf80BMphPoc+HITjuQj/wBcYprUYdUHmnUOX4iWyg9F4KgjyCLjiG0Mn'.
|
||||
'lAwjIlZNnI42sFtGfRc4YPX072or35+tdiy8GEEex//Y0epreM/K43uRCCbkqs2rVu56xQ4OHfUi5KUYJWnzXgx4g5+x9Pk///rv'.
|
||||
'Pv+3z//l8z/8+u9+/ftf/8Pnf9A+/wsk/QWS/vHzP//695//n8//7dd//+t/+PXvNUj6LwD7f37+i4apn/9vzPT5L3iJKfSxpNGj'.
|
||||
'XIAtd3OJwHGAK3Z0h6mat9RfeB+KobfChDSJbvHtsxlwG1p+jqd6S9glunATWm8pkAyOCu2H48MDQ1/FbJgLhsdIt7ja8N9t+vRo'.
|
||||
'KRkkshqNuqUpX9ROW2rIKudSRVdaSq5eAmOkgCketpYaWk40p19nVnbdQnZHKh63mnGGXqKnnhvQFQRlvtnMk1VC434eKMBGc0PS'.
|
||||
'4q/nv3sZMC0vz0PiKhNZoeiCbsh4JJuN19AMEj4nNt/gL6ov1U6prag/ixClmCIeXVRaf+G91JdFzZb1F6veS9ytlGsBISD2RE5C'.
|
||||
'ZquEqJACxfboSg+WPksKkUGR0uhRlYrEC0QkqMw+E+RWeG0mcK+uziGlvHj3OBoEJ9AF+THMglcIXxvUwygGnXjuTabn3ni+lhi5'.
|
||||
'U1x4ovt++cphHs5hykdYxjt3ihJfliQ0Efym/5dKiW8TSs7duSWibvv5o1JglBm5go8kknDYRjTAKrdLYPbCmP35I85OLq/VQMD3'.
|
||||
'g/aYk/BpNje/2vklGSmyfZNdt+NFrem8upMeqqrfEoxpUEHTJbpiZskDBrhYMudUSOUkZctDnrj4T8MfSIHfNCQ5r9Yjr0dVo2nw'.
|
||||
'aOTAe0pPpJS2oq3Xak0BgXQCwkMbmE9NNgQNc3XNXFl7/gzhkHuQBMIkSOnPxhHK3cwa4jSQt9oSIYLeKKEmvixbGmwEqV0Lv1mn'.
|
||||
'Uk2ZFuUKZR06D28GMVNIV7BfwuRdOCTqzUPDHVVZh6wP77dfcoBzjQ++SwrZiyuFOKX4wtubgeJgHNpBu43n2OijST8BZ1HHy3HH'.
|
||||
'4ComjXVtZmnPcMsFtvkR3oZId/6xAau939V2KG+i1e1v7bX5NyF/r22+P3l7eHRsj28gUfg2fMPuJOSQUjzQ/OFrkQ34Wdnb3do5'.
|
||||
'ON5BZJxDXpZswE/ua3p9cnaJoigc+C2xszt+V9/vrorGrOavKWTyJHd3hjqB0JLpzq04d6mhExF0K3GvguzyhY7V5SgRHCptvETn'.
|
||||
'RVfefNWmEyzaRve0ffbYceiGQZy5wuUoPfBtvHfB7QQ2eJUAYXUwQjYZT/vBKb5TBIEFuhOg/roCccBwCfPKNqksEAA4ZZiV1bY6'.
|
||||
'vMbtOPo46uBh+3iActsOE0NvAJO2giEGSOPI0Rs6cm168HVnZoEJ98pNgn44LNaftmRa7WZyHdK5TxhYcesDrI7rSQ3cJchXXlHa'.
|
||||
'AAqCojHZfqZ+8KLxOBrgh7pIlpemhg7iXO2mNzXIguqyIBQWeqOdLwmYaQzjC5PzJRG7Y3qxoDYdwgkFkeQSjb+9abStaSMEmvKK'.
|
||||
'74cY9XCsUJbo2hYLXzBKkaL2JFwRbLdyzTkwVFyqnxR4RieROrdUZKNtw8gK4g8kOcmOtrjR8stbFrj8SW+D7YktIa4Qb3SMLJZo'.
|
||||
'LL1ohVcg81w8PauiOhrxp6O3o+F4Be8obNRrtb9peq5/0aGNXQ0KEeKaNtlhbuA+lObAjTvhsFFrjsCUAwe9UdNfvliF0tBplkeL'.
|
||||
'yxbyUXZUw1GUhLTvzHRwKyNYSL6OgdSkBeTHhg42Nd16rM/weLv5HzkWWR6ETCXQEibNoiQH7oExwmOhdqEWoVXHTUW4W5Y2ic34'.
|
||||
'YiqRi/inKltXZOvKbMW6lhpmQQ0aoYUYG13rEx2NIKE+rdDECHRRqqDmN48Q1RhRDdrKJWcbMHooT9C0/n35UXrSH0LgwHa6Z6dN'.
|
||||
'EoXWnETDMxkAgx/lQNfp3t3dzujODxiekCpBLnD9fjIMxw7Jr/fwZPSI3JgIY/tlDbLjYfvi/Ul7mZ4wfFu9AcodhgMYgeQ8NJSt'.
|
||||
'lKFFRbAUlftaL4DHJIy+cdEwehu9BolR5tFODlJsrAU4vn9dmmUYBUntKcTpXeJueXyInBabseI43Ei4zjS4dDx2i2b1RFEjKIpv'.
|
||||
'ANfxCKcR0gNN+Rkd4cdy2byNMBiYXaQ0caMrXClHJjW66EmlrzM+2xXIfzNGN+F2ZmU2rRBxP4XB9UZVIrroeNcXyJjWMdbc4Bsc'.
|
||||
'kBYNPvtzEiOH0EfeNUfFY2VTf45TuC1cWfyseoBp+ox3c/8b1DZfnaoKK+2RtZVKmjadD9Tt04PTGPRzxmmLi5iyuBins6D6fvRJ'.
|
||||
'py1/uVRxKaP4wGj6lNWI7QGtPqzSlO5qCFxkPC4lLi4+LogrRMISCz4afVuKlceptAVEWXImhAFVih4lzh0InzvWyHekLlcR5+0l'.
|
||||
'HsOAheABymIw4olaVsfKb18UtGmpHqUcEeoIqAQ41cWg0M8wnutBmBHrgSo4ayQ6l/o+hbiPXyVQNdeiYKVrN0aj/pS5DnQhMShd'.
|
||||
'+DTDACDlMicgjDyqH22LxUX8BSN2iJfG+GC3OQ6fTbmBHxp8AgcKcAw5CZy20FPVeR/n8hqh3ZrENOuwkT028JRxs9mFkda+Qc9w'.
|
||||
'o9YQvdN1nHTn/0a3QQDJKAhayWn37O5OebfPxeATyh3cALffR0MB+KkF+uV1qg3QKOOamuVva/xtrerbOn+DP0L2nqLVB7zVtXpn'.
|
||||
'M6jMMBUV56g8G5SET9Y5Gqv8jk/W+bkQkJTEz9a57HVOlW/WudLR/ElJsAQm5auSYLFCVXUhaELlMJTU8zjtnG2oL0Q/Zp/bQTDu'.
|
||||
'Rq1GxxL3GjfaqEattAO7liQ2GKEmqSdQxkiBwpbhlBGBbkBf9TXPcfJ4B2PVSPrR9d0wigdu/67tJmNz1bTH4KbkcpuZoUDCleg/'.
|
||||
'ZwjQUMwpT2q0Cu1nyC12N9BlsagT/82ahKX/Tk0i14maJNjwv1+jisMq9zUNH1RTQQR4UdQP3KFeJIng/d+JKtLnRLqkQzE3ckK0'.
|
||||
'IqW9mQ0XW7X6VPSnt4CnAb4pZT0Tmj8d57hpzlIH919ZGKMql6cqCixSlRjzijSkhmw/VjtgcbFtflFdBGOV6qKUTapnZg2ieNRV'.
|
||||
'ZwG6oKx7VTLqATp3BS0b4AoQhjPAzq54oa15NqIKzOEhS3gDOd+FbXO24qAZbdPq8tWBZIaf6nSLwAivq/sbfAALIDM+enimCgXy'.
|
||||
'SzPrwiTnwjklI+k1usjQS9ZF3rOA5xR/5v9uoaEFZbDr+4rMoXzaHthK+ZQjtJbySSfRSCb44i/48jiTwslK/clcYMU7DkZ4jFfm'.
|
||||
'5fBskI0WW+A42Ch8jsdOAKlBPxjglRfwNGw5nkF/zRl/EBNReChY3PEMffmU71Nxb4z0YpXUhoSsYB8+YQwgIFZEMSRflrMXtDOt'.
|
||||
'tWfPTAv+fjG+eoavruKr/0Z8axm+NRXfWg6f3Jts6eayburY3amN5hnisBg6v7IDNkheCNMldJjK9rrjrGfBd2QOOqtA1F+MX6BO'.
|
||||
'p7j2fFu31mcmvFpflPSLuQqGTYB7fCXi07SxbUkYJWWtlLJOKWeVtVk2Nhq/2Pxobpi//E2uFl//dW51eWhhhc0na/azZ1Yuda0y'.
|
||||
'dV2kyqr/0Th1V9qbK6+JQmsz86H3B0n3vES65yXSPTcryzfnvzxQ7HJ12cvVFVgu1gI60P3FqFma+H8FyTXXVubm0mvDT1uQHA4A'.
|
||||
'MH9D9Fl2oA0IC+mSdJqt6LaDN5hP4q3jY/pAYwDcRfAI8Y9SiI4ewRCcEjoHoovCrTVFm4EP1Ws7JcE545N7uk5XzC4dQO7sABFU'.
|
||||
'lhzbd+teTtzGaQ2HK/47s9xPkzhonK49VdK8IOxQGrzjvzWQQV4fzWLICf/Dt0nAL5whjq6HjdP682fW0zX4/5nlT91hrpyWG19k'.
|
||||
'uerr33OShIOELLETB1PEBkn8L00OGLhGlcC0i657EQLsdwD33Tp8+ZbT8Y6j4RiaioiV8iK8r1Ug+u4ZwltPRZYIeoCaDVWuP01L'.
|
||||
'iGIfzExA9GzdegYNqj3l9DhoSewCMnH7A/AiTtfWoSIAWl9b4w9XIVgdY4B++h1dvFBHPeR3k9Dl0gQVO1G/xQlr9WeINGvw2nf4'.
|
||||
'Dpo27ESN02+fUZMgRTSfem+9htU+s/qoF5nU9W/XAddz/CbSmd5ra0+znqF0UVT9KXxY/w4QPc0+QF9AnS3xT6SPwuGFoNV3a1b9'.
|
||||
'+3WRPg0wSlk0A/+tEaZBILkBapJ2jtL4gRtHSDxqKgIN3aupYJa1784s6jj+LKiR66/nhFip1Pdr0FVQqdEkHvUDiZdQpd2RJVFn'.
|
||||
'cm0ATRL2r4IYAL5fs8S/MwuG2DhQ2oWVLjYW8irjOA/M07VJOOzYPTDmhigOxDu9NtMJOplu3baCdkOHl+BwMv7TBLf/E2huWQjs'.
|
||||
'0oKRSZlPU+yA5EwBnFmIcHeI+O5D1APFv+qE5pPucpvziErcl2klzWV0V9ZMmXN3eF9eEISUaXXNfFHPyl9de9KlwlPckGIYKytd'.
|
||||
'gX2lrhSwNfFC/8vak2vRl+RDwboaQnGUt55v1nwE97ZLbRk3rLvirHEJKuGAavH4S9tV7Kv7c64Um/aku1Iv9dkcHA80rqLj0vY9'.
|
||||
'ybPGnybh8CtaWGjjw3kLTSz34HwkDzbynl4s9eRxcUG33B1kg/tRAoWGT9gif7cLhZvLPaXRDyESeGDwl/Go7X64QtiitE4CzRPA'.
|
||||
'mR96Ozej6B48QH/woTbaDVGvUXRtgEytYa9it5hK074AVQiolnuAzFhR0K0APqxYsW/nIkQPj3y7dNmNU7LmQymz+QxQbIpoiMoL'.
|
||||
'xfqh5MpxxFYY+w8NUO7Ky3hs1FfkMFDJjxLoATSSHySSdDgUBNk8NNVEULhDYO6mNVOpkC+bR0e+m3bwZPu8DMWFzoE8Sr7n1O1v'.
|
||||
'a/Vn3zX5Op9ak6fqB7SMXOpEI1x1+qbj1JWeHPC5/3g6e/9JzV6nzn5BVXM9vEQEJy4G8hDG1afZeje+GqK73+2a/ICK1RisdtNF'.
|
||||
'W2hZkSPCFaiBmQ1FI3zSX+mB6sqQrV7kmf9/fDrkqIA8Hz5IgeVBfsD+KxABGNcBvptDBgPo8KRuPzN/N2JgTdSRUrOfPflrGGQe'.
|
||||
'cb8QBXT0M5XKr9CTKwz0i3SoAw3TnUoYxSHILStxQcq4hyoOisNbJ7orocrFfy12kk89VteyhOWyYP9txQhR1suLsguUU10qDyjo'.
|
||||
'GMAMa89MUzZO6YKLnI6vAMeaqiL+FTjp/v3aeiW11CUFKQ8y/krXqhGwSt/5GKWgNl8Y9dU1+9tnpmoHfWs/e772DM0SREe8TAxv'.
|
||||
'rM2FxZZi8wQANK+GD4Xs6fc5CNbstRyG79cVHPOyPC/k+e6pyIUhdxkX3EuM7gvUWUXPyFZ7BnM8WRNUpoGS9vXcboEMK6GapScy'.
|
||||
'4qK0wQGSvHltdbULPjH5xQ18z0Jb6GQ/uRyQAuU2dKpT+5eTYBIUA2MCx+UVdKvlqJPpdMEzzomXptejkeuH46l+JoRmVgURxGgE'.
|
||||
'lmeL1VFaF7+7E+uGTT52PftKE+zw+Y9t+O/773UR6RNwAFaxbDwzKC3LvcKCWnhKkQjO4ly3hTY0+Cxmq4Cs4c+4Om3ntvipQ8v6'.
|
||||
'YMeJtcHbti0a7dRmQRpJ0bZuiaR8Zkq2Auylq/kWd34ja7Bwyv0IN3+Pi2uNSpGBCESeZU0W8ajcagFNdKV7JPhCR3uQhIG4Y5qW'.
|
||||
'EZSNLKE3wQ2c7bCPgZakYbw0MsC8zZ7nLSHarYB5SIZOFBh1XgjzOw5//v9XKLNoVJpjO8DdHkkDXx7JLvOhv+xeIsKe54xcER3+'.
|
||||
'deO2JcetGDLlUdi6dxS2lVFIIel3d8/Sc1zSwJTscXWt4VZEmKyuNUWQshwqKyszuu4oF6eMq2Q0pKXwsGq4hCcGbisdUrfie6MO'.
|
||||
'8tkqDhuz2XbaK2tpdJcPhpv/ot30Mfa6AkmtEsmXFjbLN+xL8auhVS25m+Brh5oMlv29G1WI+/raOrUEL+rtGz3fzkwyYHcqb6qQ'.
|
||||
'ONp5c76/c8w3/eI6He2zEKl4uK++2e9r7TDotxItBhxxGLR0BWQNQN65SXIdxQDRioZLY43C4FSgdQTqo77VXJyRJqmQ8LEcGki+'.
|
||||
'QaJCPwXovagTDrUw0cLhldsPc0U+g+87AzfsF77/YeH1zs52RXNkclV7wpjbk8Ksqdiv42jYYdx/WHh3dPh6d2+nogDlC5UxlyAq'.
|
||||
'IBb0+uSd1pdNpcIsbV2ju3i1QQj8MxkUs61XZrO1owADcP0xSF7KL2v9anP7/Hhn82jrraN/jCaa72KNwIJuaa5GO2w0jtzVrsNx'.
|
||||
'F2Q5COWpNnJjdwDaME7sF178Ev+9A2WXaC9cjY4HXFrlg71xG+rSSyDqi1X3paWNI4GaqNwPRDXev9s7hHq8PjzaP9/df+Poq8lq'.
|
||||
'OOisnuPdyKvBcJV1pd0J25xh5/z4ZPPk/fGrzaPz7Z3Xm+/3Tk52fj7hfX6OtnQc9ANqazvqY1C9top7u9Vcx5s/7ZxneSjXm2Cs'.
|
||||
'4emFVbAnh4d7J7vvOIuApRZQjqSY5Wjn9VER/VHQBhp1IUMyroIvFiHhZTHlXFCx3YM3spxH1HL3Co1X2y7CnhyebO4hmxwLeAA+'.
|
||||
'icau6IiGxhk2f9j8+fzD5m5a8ew/yLAVDYdAWChBgT7eOdiuhD4G9YqcQ3szZY32j9+c7xwdaVpllp04jmIt8v0JDLzHWY7jo5/O'.
|
||||
'63MKweN/xIWFZFfEgR91huEneAH6jUCWBoIY2OeHP84p+jWRGa3UlpZM6E709qTfnyq1qM4rCNMBtTvpk+pNHucKXKvOsykHwf2F'.
|
||||
'YtPXKhGcgJgEBu9HuDqkBRnpgHYamAGYiqKUC2lF13SYNJq3eezr1dhxSasNpL12k+EvIBSkCaz2y+bJyRyKgP0KWghjo/OFPeW9'.
|
||||
'uI8eKZ0HYmoydKn1odcPNKV+rw/3tneOKvuLhnaSgR4cahI3IT+Ism8fd45z3z4GSa6L1ufzBPfOkpA7b452t2G04mEU5ziacuBH'.
|
||||
'Ad5BwvRm9AT+ZufkfG/34McidilvEokcgc7fH+1V1gXSGSdBvT3Z36uConRAmiiwIFff71dSEKzKKJ4M0goIWXrOcuLdztH5u803'.
|
||||
'Owxer2Ut2t59t4d0LQ3GLvMic9xtbaataLf1mRa1tdu12VIZwfnJuz0FQf40AC314VGApJfg2OPoPW6v4dAL3qzOx5PUzeUlTewT'.
|
||||
'hiFQKn+WVeCE5Ofbww/nr48O9/Mt0NpxNGgsVQGfHKrNHYf9fhnu/at9VXziWEDzTIHb2X938rFIP+JYaqoC+WoHOm+nAAqQeJKS'.
|
||||
'Arb5+gT6CqAeKTDY6JpKdLALzk92T1SmJcDP/8fnv3z+p8///Ot/0j7/4+f/S/v8v37+y6//y+d/+PxPGnz63z//Z+3zvwDEv3z+'.
|
||||
'r5//UUW3t31UwofoOPs/ahneYq79j/l8kGt/Who3W4d77/cPzunglxyZYJCVwd4d7f60ebKj0CgOr1x/WoY83v1zHuExKIsy2HaG'.
|
||||
'TYzAEcpP7KI50Gsq9HYlWElmoIipaMzO0e7htiqNp6MKsP0dcL+3c3wx1TjevaLZOSGAbDnAY2+q6HNSpE9VU7YO3x+cHH1UlSCg'.
|
||||
'i6e/udG7B1uHWVcD2O4QdE4F4Kv3H4/zFXQrOWd7r8Dp231VBh1+OEC7syjEtoWirADNCWcA3UutRaEXjk9guJYE7RHPA1VVEI9K'.
|
||||
'rSg7qOo/suXUVo/B4kiq6Pj6MFc+nog5D1/90SOqIc45zS20XmOwTW+S3Ae1RlBvaQ5hPtQ6QW0Jc6I/1eKHSn+uVlLzprQnvwy+'.
|
||||
'uXWye3igcjgf4FQCPNpXB3eKujy0918dwuPh+3evPqqKO44mI6hGCfTVx+1NhTUBtOVOkwqwDzs7P6pdeR0EF1Vw+8Aeb48zuEE0'.
|
||||
'HHcF4NbbzaMTAVnidDQupcVXAV+SL6T3QKmGUnKo0PeNtyJcJmYknHYV9Seyu/KVBlbND09w2LMhX0KdQqeo54GTt5PCp67OPPD1'.
|
||||
'2naefOs1Les5FbK+XyA09UgFgY929nNwozi4CqMJOO7VGZ4XEXfdfntlCl50GXbtYwF2TUNAWV0m7u7xu73Nj+cgy/ePC/0M4nyg'.
|
||||
'GM7bO3sFES37I8ABKizJzVcABuLq9S546WoW5LY40KbRBFwY8XDtDsfo7bcIA3ohibCLN6rQCcH5RSjFpLqWpD7+XLRgO23tnMvZ'.
|
||||
'BcR9H+IJq3fiESmZWBbnilDlCKPe2X5QJA==';
|
||||
$fp = fopen('data://text/plain;base64,' . $data, 'r');
|
||||
stream_filter_append($fp, 'zlib.inflate', STREAM_FILTER_READ);
|
||||
var_dump(fread($fp,1));
|
||||
var_dump(fread($fp,1));
|
||||
fclose($fp);
|
||||
echo "Done.\n";
|
||||
--EXPECT--
|
||||
string(0) ""
|
||||
string(0) ""
|
||||
Done.
|
||||
--TEST--
|
||||
Bug #52944 (segfault with zlib filter and corrupted data)
|
||||
--SKIPIF--
|
||||
<?php if (!extension_loaded("zlib")) print "skip"; ?>
|
||||
<?php
|
||||
if (substr(PHP_OS, 0, 3) == 'WIN') {
|
||||
die("skip not for windows");
|
||||
}
|
||||
if (PHP_OS == 'Darwin') {
|
||||
die("skip not for Darwin");
|
||||
}
|
||||
--INI--
|
||||
allow_url_fopen=1
|
||||
--FILE--
|
||||
<?php
|
||||
require dirname(__FILE__) . "/bug_52944_corrupted_data.inc";
|
||||
|
||||
$fp = fopen('data://text/plain;base64,' . $data, 'r');
|
||||
stream_filter_append($fp, 'zlib.inflate', STREAM_FILTER_READ);
|
||||
var_dump(fread($fp,1));
|
||||
var_dump(fread($fp,1));
|
||||
fclose($fp);
|
||||
echo "Done.\n";
|
||||
--EXPECT--
|
||||
string(0) ""
|
||||
string(0) ""
|
||||
Done.
|
||||
|
142
ext/zlib/tests/bug_52944_corrupted_data.inc
Normal file
142
ext/zlib/tests/bug_52944_corrupted_data.inc
Normal file
@ -0,0 +1,142 @@
|
||||
<?php
|
||||
|
||||
// corrupted data
|
||||
$data =
|
||||
'U3XuBFLaJfQAWt4cqi8u8ugXxyDcPTZy8VicbJr50gGTEh0dmo+d8O4uBCTuAf3dHbbDYTieluscWXkKlavfKdMkZZRP3GpTApbb'.
|
||||
'mQONJCgdbpPHat6iGOoq34vIGCLKFuD8qiA4ti5AL7bArvDtd7i+5tvn49j1L3bwroIsk1iPS5leATIwp1iwk+VdPLzu7tsexYBf'.
|
||||
'giLx7WtQI779GtQIKD1QI4AT1Ihvf0I1Iu1u1Ca+7Vs3TtfqiCXvrm99EuJy/ix5z1VD8atW9sUyvmu/pQn8KU5lZvHUqC5xzgow'.
|
||||
'0e8m/e5n5fLH2EPhBn4CA3n0p02/E/hVlAgxNIczOk7H7shAHSyUQ7PIwicPE/xNw7Nq4F+aHj2CowlZQKvhr2+fGIhA1QsSG6SD'.
|
||||
'y3MBWfRsWxpYq08oqfievkq2Du7uwO99DGhG4GQrIODp67QfRFEFnrUQWD1qV2R44JVHoEjwt5c6ASus4MdOAtA+2OZAHLLOA9O6'.
|
||||
'4kgGY4wOggODnQMWrk6fnTn4s4E/GG/QqEPiOiY+PWvij9MDz+0qM8WlyB6rGiGdVcVbChvQJhcjos7ShfrFxU017nBgsMHx2OON'.
|
||||
'NV7mx3AovW/veYYnlUfNlF1TNysBvNPrs5V6ClWzREIaxqSGPIK+EoQEeqBvCarbQHOQnolOl/jMrmXPMBWbIDRkzJPVo3kCD3Us'.
|
||||
'NRXjK+Ad8/fMLPiqY7+CulD4Vc/pga9nIEdhGDsx1qvT4Aw9rpW6rGtv5tqvcnMLWCNgtbu7BZ25GYiGMwiStZFNs0jY+uxVFrcG'.
|
||||
'rOVt+PaYWLhRRxt3rOCm2E/BUUA75CBa7wmWkSkXFyV7bsA/9NU5TPSC8jU9p/fSqS0u9l44323oNb1h6KfYl1mvAYIzNUX0Csfp'.
|
||||
'pozkYa12FecgDSsD86KHnATUwz8uzu3jbL5Bkb9UyUtMjL30feyC0oVBYY/DcR8DYdAnbI1FcItMFuAcIkNLx7498TGqFlN49v/K'.
|
||||
'5TdaEbZPfKhWMwvZw5SKGjMvAGm6xBrEIRtYsmfRcY0NfA5ogzyuzS2nO9sCMcVkMlxTpc03vuJcSkv9T4aZkYktzv5j3FUIf9Eu'.
|
||||
'EVuPX9ZM2dBAEEEAmEzVXRcbdmMfGoEF0hn+ufCvjZoGXMbSLKGXRkIhYEcJFHzrGphvw7M/YAd1MT/q4b1weBHE7+N+ge1EyDGK'.
|
||||
'vT/q0GzHs65w1UpMcFyhKRUsLtZfOj1gG3MMrfijvnyV7gJ6DOJTfsQwogzOuESkGzr2vt7AB5ltDDDgs1YBLCP2Hs4ep/INGvDn'.
|
||||
'0gS4x7TeREJvQoEvnXoNF2AxzeJZadBG9nsfE1DhTWy/BU0CvZ/t/8VxK1No7y8OsiarJz7+Z4eP7zN0XqDFE2fBdgcLzaFdGau4'.
|
||||
'eCY+NT0bWZiQ9RJ8xXipdAO0oplw23O6CXo1DvAcC7C0VnHjT9+dnveSDURCDL+J058ivgw1MKpyUank1fTE7eD+MYNOtKepW3EM'.
|
||||
'5BaeogscRezzQwX74AjxOVQW7QYa4BPofdJVOrFAYE2dq42rbINe19qxXjuXQquNl2liaVckfFge4ywTvwxcfNuyttEveIsC5Efh'.
|
||||
't/0A5I1okwDIHgrUs3fN2x3Q79uewcOW4/dgcJII2THNt84OUqH5dlnqMzEPzLrjLQi4S+MtVgp6vWcf+ZBE33o8admzR8jNW06P'.
|
||||
'QldnMQigV9BkjL7s2W0fRg+kbGLKAf78yTVnjHqLJv5Qjv0IeEDy4yPGq0JBW+BDvsVZShTCaCWReUxyexvGUy8LRxw72zipLkfM'.
|
||||
'a5oI2gU7/g1j8VDFlbFspQbEOJs7RdSJJDjP95E1IHKcjuHLG4xcDeh/dWXyLkXf/JFL2QJcW2nE5NXi4hT+b7e6jjOGiqHNMbWT'.
|
||||
'sLVBvw1MQLgf8dt69bepfRWCHfyDIx4Z+RYGUv6AqwxbGGD5A8YzzGY9+71nbKlzi0glZwx/ABx/NvCnUYMEyJXuvXns4PsG/jQ6'.
|
||||
'9kcfPq8j/DqmrZ9xXXoYSLidm1i1f/LA7BI807Pf4oZPYI19F9WRQRAtZJMeRRzCn8DnwMM9PzepeCNEb883OvT9HP0ovLO8UkY9'.
|
||||
'/oSSaM+n4dt20Kigx0lBgiPHgQFn4nAVc8ufSMdg4i0Z5mg0oDjD7s0saDFcEhehwEJntB2onT2hGTAXAx8MKgAVNU21E8wQNYXQ'.
|
||||
'NFf40yNVQga+Z0+xrAmk7oMUQWOfM/2ZTX758olZiaMm33pQ/X1BtvOrMAnHeJiBSheFXMKD94DNU2mkmsvE3AGrJtVcB2n/4inK'.
|
||||
'jwAZCUviQzNQgOMJojl7IF8e6YyJidrAa1HrParr/hwJifakm3TB5m8GqSGxuFhz2Nv4I4tpcyMhr4FeaN2ikWvSsZuGlgZCVWHF'.
|
||||
'Np2AKxTgEbXkY+6FyRivfDWrEnEbI0h5C9WhRdKUIws1Ah6PXb/LjqrO8bUMac6wX7iXoKV/qlgtU/vKMP8GXcQaGMxdF4PtMdNP'.
|
||||
'ZfKg8U56sg92RdJk2/hHYYCN5zp4Y3bwxvRIDt4rezRJujhIQWXMspk1tCIWF4Fj37holt/deS/w2ZSTfD2cxMJZPbDZ0OYnSf04'.
|
||||
'AG019g+HdEw8gKmvDnh0/LSRPjWAIn4zfc2aeSUXcBYeU1jd2I1B897dKS8OKHsMHdJLqeNoVE7kY6f05tQBMfvYtSMfCsHh2TKu'.
|
||||
'LJozmKY8Pt2g/m3wGcJKGzaKCYCjQaYqLY9ja5xckLecwnjndoKrMLh2ChaskC6FQQLdYmK3k6T6hmzudB5gliE9wbMKq0ZO2+Kd'.
|
||||
'frgGaU2bFYOwh4YbGc/Zhj9Itfsuumm46+8WuYgSemdNDMUOrLF9bIiF1SvIcfVibPsEfwXwEgRSrs4IkLhpCoDTFzjumlOAIgv7'.
|
||||
'dHqWGtnCI+BW4UFq1KaFKnGAPM8tcjzFDns13W1tFBMMjlEFXCANwEPGsKQoHiwupo+2BNgoJzXw8Jci0Ug780lYtzhDwyI4bF6x'.
|
||||
'tqUz//T3J/sNHcfVGwcG5Bv26+FhQ7/TQV2+UfYjXUmH+PYKvF9nYOAfXIFs05MF0GZuD+I1bxzCPYYAjX94gfYEikCDHljmHIQW'.
|
||||
'UdBAG97qgZKGn3X8eYo/z/DnOf58iz/fnZmpI6Hv5tHsjoPB/VhMZvm0zJxnI7sKbVamF/wDJ7XXkHRLpV/PHnqUZUHNI1FjPSox'.
|
||||
'M2fsNKtw7xDv3pBTh3Jpx8SUjDoe7Ssr/t9s7tgDz8hKkEz5kxsXB26mjTbLQ5gd0ryBQfK6DbLuACweipYkhxgdULB45bjEIYlj'.
|
||||
'hFzVsQOI9LI/eo5Cvzx90cFAgZLOlXo0DtD6ybmilDPD+Gr6DgT5PLw4dFw+wKZQgkwvoxcfLGV8/5ybY+ZeR4R9OdUvJqZS+MKc'.
|
||||
's5i2khnoq5qlU1GEomn7cvac2y5zlAvJ5ekoBXEmmg4vFCRqJWfSDU8FLZagAgvcApwcX4zNnW+3KWE2YAQKUg1bPxdm05UZpCod'.
|
||||
'QOJfTouMHbo2uDhDcozKx1ymCZKK+RG2g1QRLvx2xHWCOiqI77EHF3INCaEsyzUz/VZsDo99btQVL3dOHTSHKdSbBiP8BunIxD/Q'.
|
||||
'kVOlT56ZzWmO6pBwBb6UZL5nVh1s0o0rPqys8GkNel/5BI5a7+5OBVgHLswDjCWAKA3QjzMQmuDJdZ4xFcc9XYlZf0GhqxmZKhXj'.
|
||||
'oLpb2QyUXsI4reNzqEBAwoCl1JXT28ixWewzk2fHsDUVeVTikTHNoQn+mMMZ1hXzRpybchWrwo89E5V7YBNqMbVKXjKa6zlzsufk'.
|
||||
'3oVshy4QS3Y9MPPSWuvCHpWGY1C0GsnGl0s+DtMkVYZBwZokYHiw02MjvySnMDkpMz/PzY/0ifyikqkgDvhBfOcL9CYY5bY/jvvi'.
|
||||
'0e1jIum7gPac24Oohaeixwlae4FNHGYihuxDmm5vHR6cHB3une9vHv+I6Kpgjt/uvj65F2Jzj7/nJomR+3jKD6fL8tO4vMaEMSSt'.
|
||||
'qrMG7I40BA458LMgpdHs7Nht3v3l2z5ZEqYieUvZsMg270hz7W51oW03NT86wygOKgqXRQeupQr6efBYaiBLDapLDYqlHoHOLpfY'.
|
||||
'qSwxB0tklaW15xDWlV1D20regqPt5Dtm5Dke7kiQcFviiCUS7AXYS7cA2w+BHXaH7agAmLjOQgbZqYZUqpmk1dxKpxmK9WQGSt0H'.
|
||||
'tjq2g344KEC+ySAZGy7LRpNxAezay+C2g3Hgj2kvUAFqoja5MwdSacnEzeM8wUWYAs5xJc4CpIJznOLcA4HSfxO2K+iz7YrmdOaB'.
|
||||
'KRi38xiPg/gqiPcL00gA5qRdfRQMonEwH7CeQ1iCXiiAr9E5dNU8uy2bgflDPygWVwCEMo/p9PojsEkKROm6WR8f8ynS1cxwojAD'.
|
||||
'jRQ2cAtQu3n2J8DNod+NioAjtzyoUCoWbckOnmzmqVBbfJpZGTAoAO62yjDtAsw+nXxWhusU4A4OyzDdAswxnY5WhgsLcCdBXFFi'.
|
||||
'zwOBkGtnVf0vvIyHN30/mgzHlVNpbyXQT7yZsAJIHB+AgBetQjGvMKaPji3BZ4IZFGF+FFXpFz+8UVjqSMR0HIrT5ApW8FTg2PQr'.
|
||||
'WzH1ZIgLNqVkSKexLqj0RCSMcioojOCFcTzVeEOD2wkEAs3RijgN/f3mSv15vfb06fOVNfCAFfDC1BXYlzONN8hBk/Dy861WFgiz'.
|
||||
'FTu4UpY7BrK5NYLExKnrzT8sbLXEUduODm2ntdo0ydwaoRviC0h6wcXqqjsHP0XD4LDdBhLTgfxi/+BjB6wzgabNaPCkCblpNb/L'.
|
||||
'TsD1Ujg2IA2xB/Gxo97KwLDXeJxC7rDERTxU6g8L+fMa9UVcRTdKhzZulFIaImUU3gR9SjGZSNdxCO3VX4SDjoYrmEvixGc8xnIM'.
|
||||
'OmQV/myETn396fPaYsepLd44a/oy1HIrhuroi7hsL1bTAZsMLaI1/ewLhyylRig7BACCp2sA/vMR4VrSvChuAeMt1Za061Bf1lt4'.
|
||||
'xn19SesG8IItxrfVlzrWHSh57Cyl9ZYnVcd2iLVONibfrj99Wlsc1RaHSwU+gazbGSuF2ymnhHhiG/FKmmiGx8vO0qJfxxPt+bm1'.
|
||||
'9FtJ/ocFaPR1oWuXFrtLy7l+xZJOHKiCJKfYO/AteCBvnSpiZgB/WDCMcNcJT9IjZZdWl0xgMgwBMRDtSe5w9nDXNBsiBwcvCDYP'.
|
||||
'Tx474dsSLJOgvSS7tqqWZkqqOIN7y3QXDAefl3TZ33pN14gWjl7XNaYBPa6+pPPxxTWEssfwnjy3NTVS+fQNEPbR7aPVJ397sLm/'.
|
||||
'g+79uzgYgL6xewnen4LX8y39ccRp50nXBfqdAxmXTDx3lm/aePRodRVd2+NBkr6TPIvpvhdHWyIl8GyJvmU4z9n6A1TsJSriFYEe'.
|
||||
'JV1QzJTyIRzKq0i5gEczU+JhJLJq8hrcaoz0NUMploYeyf80BMphPoc+HITjuQj/wBcYprUYdUHmnUOX4iWyg9F4KgjyCLjiG0Mn'.
|
||||
'lAwjIlZNnI42sFtGfRc4YPX072or35+tdiy8GEEex//Y0epreM/K43uRCCbkqs2rVu56xQ4OHfUi5KUYJWnzXgx4g5+x9Pk///rv'.
|
||||
'Pv+3z//l8z/8+u9+/ftf/8Pnf9A+/wsk/QWS/vHzP//695//n8//7dd//+t/+PXvNUj6LwD7f37+i4apn/9vzPT5L3iJKfSxpNGj'.
|
||||
'XIAtd3OJwHGAK3Z0h6mat9RfeB+KobfChDSJbvHtsxlwG1p+jqd6S9glunATWm8pkAyOCu2H48MDQ1/FbJgLhsdIt7ja8N9t+vRo'.
|
||||
'KRkkshqNuqUpX9ROW2rIKudSRVdaSq5eAmOkgCketpYaWk40p19nVnbdQnZHKh63mnGGXqKnnhvQFQRlvtnMk1VC434eKMBGc0PS'.
|
||||
'4q/nv3sZMC0vz0PiKhNZoeiCbsh4JJuN19AMEj4nNt/gL6ov1U6prag/ixClmCIeXVRaf+G91JdFzZb1F6veS9ytlGsBISD2RE5C'.
|
||||
'ZquEqJACxfboSg+WPksKkUGR0uhRlYrEC0QkqMw+E+RWeG0mcK+uziGlvHj3OBoEJ9AF+THMglcIXxvUwygGnXjuTabn3ni+lhi5'.
|
||||
'U1x4ovt++cphHs5hykdYxjt3ihJfliQ0Efym/5dKiW8TSs7duSWibvv5o1JglBm5go8kknDYRjTAKrdLYPbCmP35I85OLq/VQMD3'.
|
||||
'g/aYk/BpNje/2vklGSmyfZNdt+NFrem8upMeqqrfEoxpUEHTJbpiZskDBrhYMudUSOUkZctDnrj4T8MfSIHfNCQ5r9Yjr0dVo2nw'.
|
||||
'aOTAe0pPpJS2oq3Xak0BgXQCwkMbmE9NNgQNc3XNXFl7/gzhkHuQBMIkSOnPxhHK3cwa4jSQt9oSIYLeKKEmvixbGmwEqV0Lv1mn'.
|
||||
'Uk2ZFuUKZR06D28GMVNIV7BfwuRdOCTqzUPDHVVZh6wP77dfcoBzjQ++SwrZiyuFOKX4wtubgeJgHNpBu43n2OijST8BZ1HHy3HH'.
|
||||
'4ComjXVtZmnPcMsFtvkR3oZId/6xAau939V2KG+i1e1v7bX5NyF/r22+P3l7eHRsj28gUfg2fMPuJOSQUjzQ/OFrkQ34Wdnb3do5'.
|
||||
'ON5BZJxDXpZswE/ua3p9cnaJoigc+C2xszt+V9/vrorGrOavKWTyJHd3hjqB0JLpzq04d6mhExF0K3GvguzyhY7V5SgRHCptvETn'.
|
||||
'RVfefNWmEyzaRve0ffbYceiGQZy5wuUoPfBtvHfB7QQ2eJUAYXUwQjYZT/vBKb5TBIEFuhOg/roCccBwCfPKNqksEAA4ZZiV1bY6'.
|
||||
'vMbtOPo46uBh+3iActsOE0NvAJO2giEGSOPI0Rs6cm168HVnZoEJ98pNgn44LNaftmRa7WZyHdK5TxhYcesDrI7rSQ3cJchXXlHa'.
|
||||
'AAqCojHZfqZ+8KLxOBrgh7pIlpemhg7iXO2mNzXIguqyIBQWeqOdLwmYaQzjC5PzJRG7Y3qxoDYdwgkFkeQSjb+9abStaSMEmvKK'.
|
||||
'74cY9XCsUJbo2hYLXzBKkaL2JFwRbLdyzTkwVFyqnxR4RieROrdUZKNtw8gK4g8kOcmOtrjR8stbFrj8SW+D7YktIa4Qb3SMLJZo'.
|
||||
'LL1ohVcg81w8PauiOhrxp6O3o+F4Be8obNRrtb9peq5/0aGNXQ0KEeKaNtlhbuA+lObAjTvhsFFrjsCUAwe9UdNfvliF0tBplkeL'.
|
||||
'yxbyUXZUw1GUhLTvzHRwKyNYSL6OgdSkBeTHhg42Nd16rM/weLv5HzkWWR6ETCXQEibNoiQH7oExwmOhdqEWoVXHTUW4W5Y2ic34'.
|
||||
'YiqRi/inKltXZOvKbMW6lhpmQQ0aoYUYG13rEx2NIKE+rdDECHRRqqDmN48Q1RhRDdrKJWcbMHooT9C0/n35UXrSH0LgwHa6Z6dN'.
|
||||
'EoXWnETDMxkAgx/lQNfp3t3dzujODxiekCpBLnD9fjIMxw7Jr/fwZPSI3JgIY/tlDbLjYfvi/Ul7mZ4wfFu9AcodhgMYgeQ8NJSt'.
|
||||
'lKFFRbAUlftaL4DHJIy+cdEwehu9BolR5tFODlJsrAU4vn9dmmUYBUntKcTpXeJueXyInBabseI43Ei4zjS4dDx2i2b1RFEjKIpv'.
|
||||
'ANfxCKcR0gNN+Rkd4cdy2byNMBiYXaQ0caMrXClHJjW66EmlrzM+2xXIfzNGN+F2ZmU2rRBxP4XB9UZVIrroeNcXyJjWMdbc4Bsc'.
|
||||
'kBYNPvtzEiOH0EfeNUfFY2VTf45TuC1cWfyseoBp+ox3c/8b1DZfnaoKK+2RtZVKmjadD9Tt04PTGPRzxmmLi5iyuBins6D6fvRJ'.
|
||||
'py1/uVRxKaP4wGj6lNWI7QGtPqzSlO5qCFxkPC4lLi4+LogrRMISCz4afVuKlceptAVEWXImhAFVih4lzh0InzvWyHekLlcR5+0l'.
|
||||
'HsOAheABymIw4olaVsfKb18UtGmpHqUcEeoIqAQ41cWg0M8wnutBmBHrgSo4ayQ6l/o+hbiPXyVQNdeiYKVrN0aj/pS5DnQhMShd'.
|
||||
'+DTDACDlMicgjDyqH22LxUX8BSN2iJfG+GC3OQ6fTbmBHxp8AgcKcAw5CZy20FPVeR/n8hqh3ZrENOuwkT028JRxs9mFkda+Qc9w'.
|
||||
'o9YQvdN1nHTn/0a3QQDJKAhayWn37O5OebfPxeATyh3cALffR0MB+KkF+uV1qg3QKOOamuVva/xtrerbOn+DP0L2nqLVB7zVtXpn'.
|
||||
'M6jMMBUV56g8G5SET9Y5Gqv8jk/W+bkQkJTEz9a57HVOlW/WudLR/ElJsAQm5auSYLFCVXUhaELlMJTU8zjtnG2oL0Q/Zp/bQTDu'.
|
||||
'Rq1GxxL3GjfaqEattAO7liQ2GKEmqSdQxkiBwpbhlBGBbkBf9TXPcfJ4B2PVSPrR9d0wigdu/67tJmNz1bTH4KbkcpuZoUDCleg/'.
|
||||
'ZwjQUMwpT2q0Cu1nyC12N9BlsagT/82ahKX/Tk0i14maJNjwv1+jisMq9zUNH1RTQQR4UdQP3KFeJIng/d+JKtLnRLqkQzE3ckK0'.
|
||||
'IqW9mQ0XW7X6VPSnt4CnAb4pZT0Tmj8d57hpzlIH919ZGKMql6cqCixSlRjzijSkhmw/VjtgcbFtflFdBGOV6qKUTapnZg2ieNRV'.
|
||||
'ZwG6oKx7VTLqATp3BS0b4AoQhjPAzq54oa15NqIKzOEhS3gDOd+FbXO24qAZbdPq8tWBZIaf6nSLwAivq/sbfAALIDM+enimCgXy'.
|
||||
'SzPrwiTnwjklI+k1usjQS9ZF3rOA5xR/5v9uoaEFZbDr+4rMoXzaHthK+ZQjtJbySSfRSCb44i/48jiTwslK/clcYMU7DkZ4jFfm'.
|
||||
'5fBskI0WW+A42Ch8jsdOAKlBPxjglRfwNGw5nkF/zRl/EBNReChY3PEMffmU71Nxb4z0YpXUhoSsYB8+YQwgIFZEMSRflrMXtDOt'.
|
||||
'tWfPTAv+fjG+eoavruKr/0Z8axm+NRXfWg6f3Jts6eayburY3amN5hnisBg6v7IDNkheCNMldJjK9rrjrGfBd2QOOqtA1F+MX6BO'.
|
||||
'p7j2fFu31mcmvFpflPSLuQqGTYB7fCXi07SxbUkYJWWtlLJOKWeVtVk2Nhq/2Pxobpi//E2uFl//dW51eWhhhc0na/azZ1Yuda0y'.
|
||||
'dV2kyqr/0Th1V9qbK6+JQmsz86H3B0n3vES65yXSPTcryzfnvzxQ7HJ12cvVFVgu1gI60P3FqFma+H8FyTXXVubm0mvDT1uQHA4A'.
|
||||
'MH9D9Fl2oA0IC+mSdJqt6LaDN5hP4q3jY/pAYwDcRfAI8Y9SiI4ewRCcEjoHoovCrTVFm4EP1Ws7JcE545N7uk5XzC4dQO7sABFU'.
|
||||
'lhzbd+teTtzGaQ2HK/47s9xPkzhonK49VdK8IOxQGrzjvzWQQV4fzWLICf/Dt0nAL5whjq6HjdP682fW0zX4/5nlT91hrpyWG19k'.
|
||||
'uerr33OShIOELLETB1PEBkn8L00OGLhGlcC0i657EQLsdwD33Tp8+ZbT8Y6j4RiaioiV8iK8r1Ug+u4ZwltPRZYIeoCaDVWuP01L'.
|
||||
'iGIfzExA9GzdegYNqj3l9DhoSewCMnH7A/AiTtfWoSIAWl9b4w9XIVgdY4B++h1dvFBHPeR3k9Dl0gQVO1G/xQlr9WeINGvw2nf4'.
|
||||
'Dpo27ESN02+fUZMgRTSfem+9htU+s/qoF5nU9W/XAddz/CbSmd5ra0+znqF0UVT9KXxY/w4QPc0+QF9AnS3xT6SPwuGFoNV3a1b9'.
|
||||
'+3WRPg0wSlk0A/+tEaZBILkBapJ2jtL4gRtHSDxqKgIN3aupYJa1784s6jj+LKiR66/nhFip1Pdr0FVQqdEkHvUDiZdQpd2RJVFn'.
|
||||
'cm0ATRL2r4IYAL5fs8S/MwuG2DhQ2oWVLjYW8irjOA/M07VJOOzYPTDmhigOxDu9NtMJOplu3baCdkOHl+BwMv7TBLf/E2huWQjs'.
|
||||
'0oKRSZlPU+yA5EwBnFmIcHeI+O5D1APFv+qE5pPucpvziErcl2klzWV0V9ZMmXN3eF9eEISUaXXNfFHPyl9de9KlwlPckGIYKytd'.
|
||||
'gX2lrhSwNfFC/8vak2vRl+RDwboaQnGUt55v1nwE97ZLbRk3rLvirHEJKuGAavH4S9tV7Kv7c64Um/aku1Iv9dkcHA80rqLj0vY9'.
|
||||
'ybPGnybh8CtaWGjjw3kLTSz34HwkDzbynl4s9eRxcUG33B1kg/tRAoWGT9gif7cLhZvLPaXRDyESeGDwl/Go7X64QtiitE4CzRPA'.
|
||||
'mR96Ozej6B48QH/woTbaDVGvUXRtgEytYa9it5hK074AVQiolnuAzFhR0K0APqxYsW/nIkQPj3y7dNmNU7LmQymz+QxQbIpoiMoL'.
|
||||
'xfqh5MpxxFYY+w8NUO7Ky3hs1FfkMFDJjxLoATSSHySSdDgUBNk8NNVEULhDYO6mNVOpkC+bR0e+m3bwZPu8DMWFzoE8Sr7n1O1v'.
|
||||
'a/Vn3zX5Op9ak6fqB7SMXOpEI1x1+qbj1JWeHPC5/3g6e/9JzV6nzn5BVXM9vEQEJy4G8hDG1afZeje+GqK73+2a/ICK1RisdtNF'.
|
||||
'W2hZkSPCFaiBmQ1FI3zSX+mB6sqQrV7kmf9/fDrkqIA8Hz5IgeVBfsD+KxABGNcBvptDBgPo8KRuPzN/N2JgTdSRUrOfPflrGGQe'.
|
||||
'cb8QBXT0M5XKr9CTKwz0i3SoAw3TnUoYxSHILStxQcq4hyoOisNbJ7orocrFfy12kk89VteyhOWyYP9txQhR1suLsguUU10qDyjo'.
|
||||
'GMAMa89MUzZO6YKLnI6vAMeaqiL+FTjp/v3aeiW11CUFKQ8y/krXqhGwSt/5GKWgNl8Y9dU1+9tnpmoHfWs/e772DM0SREe8TAxv'.
|
||||
'rM2FxZZi8wQANK+GD4Xs6fc5CNbstRyG79cVHPOyPC/k+e6pyIUhdxkX3EuM7gvUWUXPyFZ7BnM8WRNUpoGS9vXcboEMK6GapScy'.
|
||||
'4qK0wQGSvHltdbULPjH5xQ18z0Jb6GQ/uRyQAuU2dKpT+5eTYBIUA2MCx+UVdKvlqJPpdMEzzomXptejkeuH46l+JoRmVgURxGgE'.
|
||||
'lmeL1VFaF7+7E+uGTT52PftKE+zw+Y9t+O/773UR6RNwAFaxbDwzKC3LvcKCWnhKkQjO4ly3hTY0+Cxmq4Cs4c+4Om3ntvipQ8v6'.
|
||||
'YMeJtcHbti0a7dRmQRpJ0bZuiaR8Zkq2Auylq/kWd34ja7Bwyv0IN3+Pi2uNSpGBCESeZU0W8ajcagFNdKV7JPhCR3uQhIG4Y5qW'.
|
||||
'EZSNLKE3wQ2c7bCPgZakYbw0MsC8zZ7nLSHarYB5SIZOFBh1XgjzOw5//v9XKLNoVJpjO8DdHkkDXx7JLvOhv+xeIsKe54xcER3+'.
|
||||
'deO2JcetGDLlUdi6dxS2lVFIIel3d8/Sc1zSwJTscXWt4VZEmKyuNUWQshwqKyszuu4oF6eMq2Q0pKXwsGq4hCcGbisdUrfie6MO'.
|
||||
'8tkqDhuz2XbaK2tpdJcPhpv/ot30Mfa6AkmtEsmXFjbLN+xL8auhVS25m+Brh5oMlv29G1WI+/raOrUEL+rtGz3fzkwyYHcqb6qQ'.
|
||||
'ONp5c76/c8w3/eI6He2zEKl4uK++2e9r7TDotxItBhxxGLR0BWQNQN65SXIdxQDRioZLY43C4FSgdQTqo77VXJyRJqmQ8LEcGki+'.
|
||||
'QaJCPwXovagTDrUw0cLhldsPc0U+g+87AzfsF77/YeH1zs52RXNkclV7wpjbk8Ksqdiv42jYYdx/WHh3dPh6d2+nogDlC5UxlyAq'.
|
||||
'IBb0+uSd1pdNpcIsbV2ju3i1QQj8MxkUs61XZrO1owADcP0xSF7KL2v9anP7/Hhn82jrraN/jCaa72KNwIJuaa5GO2w0jtzVrsNx'.
|
||||
'F2Q5COWpNnJjdwDaME7sF178Ev+9A2WXaC9cjY4HXFrlg71xG+rSSyDqi1X3paWNI4GaqNwPRDXev9s7hHq8PjzaP9/df+Poq8lq'.
|
||||
'OOisnuPdyKvBcJV1pd0J25xh5/z4ZPPk/fGrzaPz7Z3Xm+/3Tk52fj7hfX6OtnQc9ANqazvqY1C9top7u9Vcx5s/7ZxneSjXm2Cs'.
|
||||
'4emFVbAnh4d7J7vvOIuApRZQjqSY5Wjn9VER/VHQBhp1IUMyroIvFiHhZTHlXFCx3YM3spxH1HL3Co1X2y7CnhyebO4hmxwLeAA+'.
|
||||
'icau6IiGxhk2f9j8+fzD5m5a8ew/yLAVDYdAWChBgT7eOdiuhD4G9YqcQ3szZY32j9+c7xwdaVpllp04jmIt8v0JDLzHWY7jo5/O'.
|
||||
'63MKweN/xIWFZFfEgR91huEneAH6jUCWBoIY2OeHP84p+jWRGa3UlpZM6E709qTfnyq1qM4rCNMBtTvpk+pNHucKXKvOsykHwf2F'.
|
||||
'YtPXKhGcgJgEBu9HuDqkBRnpgHYamAGYiqKUC2lF13SYNJq3eezr1dhxSasNpL12k+EvIBSkCaz2y+bJyRyKgP0KWghjo/OFPeW9'.
|
||||
'uI8eKZ0HYmoydKn1odcPNKV+rw/3tneOKvuLhnaSgR4cahI3IT+Ism8fd45z3z4GSa6L1ufzBPfOkpA7b452t2G04mEU5ziacuBH'.
|
||||
'Ad5BwvRm9AT+ZufkfG/34McidilvEokcgc7fH+1V1gXSGSdBvT3Z36uConRAmiiwIFff71dSEKzKKJ4M0goIWXrOcuLdztH5u803'.
|
||||
'Owxer2Ut2t59t4d0LQ3GLvMic9xtbaataLf1mRa1tdu12VIZwfnJuz0FQf40AC314VGApJfg2OPoPW6v4dAL3qzOx5PUzeUlTewT'.
|
||||
'hiFQKn+WVeCE5Ofbww/nr48O9/Mt0NpxNGgsVQGfHKrNHYf9fhnu/at9VXziWEDzTIHb2X938rFIP+JYaqoC+WoHOm+nAAqQeJKS'.
|
||||
'Arb5+gT6CqAeKTDY6JpKdLALzk92T1SmJcDP/8fnv3z+p8///Ot/0j7/4+f/S/v8v37+y6//y+d/+PxPGnz63z//Z+3zvwDEv3z+'.
|
||||
'r5//UUW3t31UwofoOPs/ahneYq79j/l8kGt/Who3W4d77/cPzunglxyZYJCVwd4d7f60ebKj0CgOr1x/WoY83v1zHuExKIsy2HaG'.
|
||||
'TYzAEcpP7KI50Gsq9HYlWElmoIipaMzO0e7htiqNp6MKsP0dcL+3c3wx1TjevaLZOSGAbDnAY2+q6HNSpE9VU7YO3x+cHH1UlSCg'.
|
||||
'i6e/udG7B1uHWVcD2O4QdE4F4Kv3H4/zFXQrOWd7r8Dp231VBh1+OEC7syjEtoWirADNCWcA3UutRaEXjk9guJYE7RHPA1VVEI9K'.
|
||||
'rSg7qOo/suXUVo/B4kiq6Pj6MFc+nog5D1/90SOqIc45zS20XmOwTW+S3Ae1RlBvaQ5hPtQ6QW0Jc6I/1eKHSn+uVlLzprQnvwy+'.
|
||||
'uXWye3igcjgf4FQCPNpXB3eKujy0918dwuPh+3evPqqKO44mI6hGCfTVx+1NhTUBtOVOkwqwDzs7P6pdeR0EF1Vw+8Aeb48zuEE0'.
|
||||
'HHcF4NbbzaMTAVnidDQupcVXAV+SL6T3QKmGUnKo0PeNtyJcJmYknHYV9Seyu/KVBlbND09w2LMhX0KdQqeo54GTt5PCp67OPPD1'.
|
||||
'2naefOs1Les5FbK+XyA09UgFgY929nNwozi4CqMJOO7VGZ4XEXfdfntlCl50GXbtYwF2TUNAWV0m7u7xu73Nj+cgy/ePC/0M4nyg'.
|
||||
'GM7bO3sFES37I8ABKizJzVcABuLq9S546WoW5LY40KbRBFwY8XDtDsfo7bcIA3ohibCLN6rQCcH5RSjFpLqWpD7+XLRgO23tnMvZ'.
|
||||
'BcR9H+IJq3fiESmZWBbnilDlCKPe2X5QJA==';
|
@ -214,7 +214,7 @@ PHPAPI void php_output_register_constants(TSRMLS_D)
|
||||
* Used by SAPIs to disable output */
|
||||
PHPAPI void php_output_set_status(int status TSRMLS_DC)
|
||||
{
|
||||
OG(flags) = status & 0xf;
|
||||
OG(flags) = (OG(flags) & ~0xf) | (status & 0xf);
|
||||
}
|
||||
/* }}} */
|
||||
|
||||
|
@ -2,7 +2,7 @@
|
||||
+----------------------------------------------------------------------+
|
||||
| PHP Version 5 |
|
||||
+----------------------------------------------------------------------+
|
||||
| Copyright (c) 1997-2010 The PHP Group |
|
||||
| Copyright (c) 1997-2012 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 |
|
||||
|
@ -2,7 +2,7 @@
|
||||
+----------------------------------------------------------------------+
|
||||
| PHP Version 5 |
|
||||
+----------------------------------------------------------------------+
|
||||
| Copyright (c) 1997-2010 The PHP Group |
|
||||
| Copyright (c) 1997-2012 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 |
|
||||
|
@ -2,7 +2,7 @@
|
||||
+----------------------------------------------------------------------+
|
||||
| PHP Version 5 |
|
||||
+----------------------------------------------------------------------+
|
||||
| Copyright (c) 1997-2009 The PHP Group |
|
||||
| Copyright (c) 1997-2012 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 |
|
||||
|
@ -2,7 +2,7 @@
|
||||
+----------------------------------------------------------------------+
|
||||
| PHP Version 5 |
|
||||
+----------------------------------------------------------------------+
|
||||
| Copyright (c) 1997-2009 The PHP Group |
|
||||
| Copyright (c) 1997-2012 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 |
|
||||
|
@ -2,7 +2,7 @@
|
||||
+----------------------------------------------------------------------+
|
||||
| PHP Version 5 |
|
||||
+----------------------------------------------------------------------+
|
||||
| Copyright (c) 1997-2009 The PHP Group |
|
||||
| Copyright (c) 1997-2012 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 |
|
||||
@ -1694,9 +1694,9 @@ int main(int argc, char *argv[])
|
||||
SG(request_info).no_headers = 1;
|
||||
|
||||
#if ZEND_DEBUG
|
||||
php_printf("PHP %s (%s) (built: %s %s) (DEBUG)\nCopyright (c) 1997-2009 The PHP Group\n%s", PHP_VERSION, sapi_module.name, __DATE__, __TIME__, get_zend_version());
|
||||
php_printf("PHP %s (%s) (built: %s %s) (DEBUG)\nCopyright (c) 1997-2012 The PHP Group\n%s", PHP_VERSION, sapi_module.name, __DATE__, __TIME__, get_zend_version());
|
||||
#else
|
||||
php_printf("PHP %s (%s) (built: %s %s)\nCopyright (c) 1997-2009 The PHP Group\n%s", PHP_VERSION, sapi_module.name, __DATE__, __TIME__, get_zend_version());
|
||||
php_printf("PHP %s (%s) (built: %s %s)\nCopyright (c) 1997-2012 The PHP Group\n%s", PHP_VERSION, sapi_module.name, __DATE__, __TIME__, get_zend_version());
|
||||
#endif
|
||||
php_request_shutdown((void *) 0);
|
||||
fcgi_shutdown();
|
||||
|
@ -2,7 +2,7 @@
|
||||
+----------------------------------------------------------------------+
|
||||
| PHP Version 5 |
|
||||
+----------------------------------------------------------------------+
|
||||
| Copyright (c) 1997-2007 The PHP Group |
|
||||
| Copyright (c) 1997-2012 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 |
|
||||
@ -719,9 +719,9 @@ static int cli_main( int argc, char * argv[] )
|
||||
case 'v':
|
||||
if (php_request_startup(TSRMLS_C) != FAILURE) {
|
||||
#if ZEND_DEBUG
|
||||
php_printf("PHP %s (%s) (built: %s %s) (DEBUG)\nCopyright (c) 1997-2004 The PHP Group\n%s", PHP_VERSION, sapi_module.name, __DATE__, __TIME__, get_zend_version());
|
||||
php_printf("PHP %s (%s) (built: %s %s) (DEBUG)\nCopyright (c) 1997-2012 The PHP Group\n%s", PHP_VERSION, sapi_module.name, __DATE__, __TIME__, get_zend_version());
|
||||
#else
|
||||
php_printf("PHP %s (%s) (built: %s %s)\nCopyright (c) 1997-2004 The PHP Group\n%s", PHP_VERSION, sapi_module.name, __DATE__, __TIME__, get_zend_version());
|
||||
php_printf("PHP %s (%s) (built: %s %s)\nCopyright (c) 1997-2012 The PHP Group\n%s", PHP_VERSION, sapi_module.name, __DATE__, __TIME__, get_zend_version());
|
||||
#endif
|
||||
#ifdef PHP_OUTPUT_NEWAPI
|
||||
php_output_end_all(TSRMLS_C);
|
||||
|
@ -3,7 +3,7 @@
|
||||
+----------------------------------------------------------------------+
|
||||
| PHP Version 5 |
|
||||
+----------------------------------------------------------------------+
|
||||
| Copyright (c) 1997-2007 The PHP Group |
|
||||
| Copyright (c) 1997-2012 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 |
|
||||
|
@ -2,7 +2,7 @@
|
||||
+----------------------------------------------------------------------+
|
||||
| PHP Version 5 |
|
||||
+----------------------------------------------------------------------+
|
||||
| Copyright (c) 1997-2007 The PHP Group |
|
||||
| Copyright (c) 1997-2012 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 |
|
||||
|
@ -3,7 +3,7 @@
|
||||
+----------------------------------------------------------------------+
|
||||
| PHP Version 5 |
|
||||
+----------------------------------------------------------------------+
|
||||
| Copyright (c) 1997-2007 The PHP Group |
|
||||
| Copyright (c) 1997-2012 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 |
|
||||
|
@ -20,9 +20,5 @@ var_dump($obj1 == $obj2);
|
||||
===DONE===
|
||||
--EXPECTF--
|
||||
Simple test comparing two objects with different compare callback handler
|
||||
|
||||
Notice: Object of class X could not be converted to int in %s on line %d
|
||||
|
||||
Notice: Object of class DateTime could not be converted to int in %s on line %d
|
||||
bool(true)
|
||||
===DONE===
|
||||
bool(false)
|
||||
===DONE===
|
||||
|
@ -2,7 +2,7 @@
|
||||
+----------------------------------------------------------------------+
|
||||
| PHP Version 5 |
|
||||
+----------------------------------------------------------------------+
|
||||
| Copyright (c) 1997-2010 The PHP Group |
|
||||
| Copyright (c) 1997-2012 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 |
|
||||
|
@ -65,7 +65,7 @@ BEGIN
|
||||
#endif
|
||||
VALUE "FileVersion", EXT_VERSION
|
||||
VALUE "InternalName", INTERNAL_NAME
|
||||
VALUE "LegalCopyright", "Copyright © 1997-2010 The PHP Group"
|
||||
VALUE "LegalCopyright", "Copyright © 1997-2012 The PHP Group"
|
||||
VALUE "LegalTrademarks", "PHP"
|
||||
VALUE "OriginalFilename", FILE_NAME
|
||||
VALUE "ProductName", "PHP"
|
||||
|
Loading…
Reference in New Issue
Block a user