diff options
author | Anatol Belski <ab@php.net> | 2015-09-29 13:54:21 +0200 |
---|---|---|
committer | Anatol Belski <ab@php.net> | 2015-09-29 13:54:21 +0200 |
commit | 459e20eec033d41a235a7664dd7239d5f64b9798 (patch) | |
tree | 85b5ac2485c6f3375a388a2411fa2e5065c41887 | |
parent | c30937d2bd2bc14b680ae918a4708620487841a6 (diff) | |
parent | 27d4d32e6bd4c6ff2f65d162e9478671348764f4 (diff) | |
download | php-git-459e20eec033d41a235a7664dd7239d5f64b9798.tar.gz |
Merge branch 'PHP-7.0' into PHP-7.0.0
* PHP-7.0:
Added information about Zend Extension API chabges
fix test
Ensure timeout tests wait for the entire specified duration
Added zend_internal_function.reserved[] fields, to allow extensions keep additional associated information. We didn't have zend_internal_function.reserved[] in PHP5, but we always allocated space for zend_function union, and extensions were able to reuse zend_function.op_array.reserved[] even for internal function. Now this is not possible. And extensions have to use zend_function.op_array.reserved[] for user functions and zend_function.internal_function.reserved[] for internal.
update NEWS for next
Update openssl_x509_checkpurpose.phpt
add test to openssl ext
-rw-r--r-- | NEWS | 5 | ||||
-rw-r--r-- | UPGRADING | 8 | ||||
-rw-r--r-- | Zend/zend_API.c | 1 | ||||
-rw-r--r-- | Zend/zend_compile.h | 1 | ||||
-rw-r--r-- | ext/openssl/tests/openssl_x509_checkpurpose.phpt | 149 | ||||
-rw-r--r-- | tests/basic/timeout_config.inc | 4 |
6 files changed, 166 insertions, 2 deletions
@@ -1,8 +1,13 @@ PHP NEWS ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| +15 Oct 2015, PHP 7.0.0 RC 5 + + + 01 Oct 2015, PHP 7.0.0 RC 4 - Core: + . Added zend_internal_function.reserved[] fields. (Dmitry) . Fixed bug #70557 (Memleak on return type verifying failed). (Laruence) . Fixed bug #70555 (fun_get_arg() on unsetted vars return UNKNOW). (Laruence) . Fixed bug #70548 (Redundant information printed in case of uncaught engine @@ -795,3 +795,11 @@ out, that the corresponding SDK isn't available anymore. always say "integer" and "float" instead of "long" and "double". . Output buffering now continues to work for an aborted connection if ignore_user_abort is set to true. + . Zend Extensions API was extended with zend_extension.op_array_persist_calc() + and zend_extensions.op_array_persist() handlers. They allow to store (or + reset) associated with op_array addition information in Opcache Shared + Memory. + . zend_internal_function.reserved[] array was introduced to allow association + of aditional information with internal functions. In PHP-5 it was possible + to use zend_function.op_array.reserved[] even for internal functions, but + now we don't allocate extra space. diff --git a/Zend/zend_API.c b/Zend/zend_API.c index d72738eddb..5a488f7e9d 100644 --- a/Zend/zend_API.c +++ b/Zend/zend_API.c @@ -2123,6 +2123,7 @@ ZEND_API int zend_register_functions(zend_class_entry *scope, const zend_functio } internal_function->type = ZEND_INTERNAL_FUNCTION; internal_function->module = EG(current_module); + memset(internal_function->reserved, 0, ZEND_MAX_RESERVED_RESOURCES * sizeof(void*)); if (scope) { class_name_len = ZSTR_LEN(scope->name); diff --git a/Zend/zend_compile.h b/Zend/zend_compile.h index ee4fbe5a73..f6283fb5c9 100644 --- a/Zend/zend_compile.h +++ b/Zend/zend_compile.h @@ -396,6 +396,7 @@ typedef struct _zend_internal_function { void (*handler)(INTERNAL_FUNCTION_PARAMETERS); struct _zend_module_entry *module; + void *reserved[ZEND_MAX_RESERVED_RESOURCES]; } zend_internal_function; #define ZEND_FN_SCOPE_NAME(function) ((function) && (function)->common.scope ? ZSTR_VAL((function)->common.scope->name) : "") diff --git a/ext/openssl/tests/openssl_x509_checkpurpose.phpt b/ext/openssl/tests/openssl_x509_checkpurpose.phpt new file mode 100644 index 0000000000..2126330a02 --- /dev/null +++ b/ext/openssl/tests/openssl_x509_checkpurpose.phpt @@ -0,0 +1,149 @@ +--TEST-- +int openssl_x509_checkpurpose ( mixed $x509cert , int $purpose [, array $cainfo = array() [, string $untrustedfile ]] ) function +--CREDITS-- +marcosptf - <marcosptf@yahoo.com.br> +--SKIPIF-- +<?php if (!extension_loaded("openssl")) print "skip"; +if (OPENSSL_VERSION_NUMBER < 0x10000000) die("skip Output requires OpenSSL 1.0"); +?> +--FILE-- +<?php +$cert = "file://" . dirname(__FILE__) . "/cert.crt"; +$bert = "file://" . dirname(__FILE__) . "/bug41033.pem"; +$sert = "file://" . dirname(__FILE__) . "/san-cert.pem"; +$cpca = dirname(__FILE__) . "/san-ca.pem"; +$utfl = dirname(__FILE__) . "/sni_server_domain1.pem"; + +/* int openssl_x509_checkpurpose ( mixed $x509cert , int $purpose); */ +var_dump(openssl_x509_checkpurpose($cert, X509_PURPOSE_SSL_CLIENT)); +var_dump(openssl_x509_checkpurpose($cert, X509_PURPOSE_SSL_SERVER)); +var_dump(openssl_x509_checkpurpose($cert, X509_PURPOSE_NS_SSL_SERVER)); +var_dump(openssl_x509_checkpurpose($cert, X509_PURPOSE_SMIME_SIGN)); +var_dump(openssl_x509_checkpurpose($cert, X509_PURPOSE_SMIME_ENCRYPT)); +var_dump(openssl_x509_checkpurpose($cert, X509_PURPOSE_CRL_SIGN)); +var_dump(openssl_x509_checkpurpose($cert, X509_PURPOSE_ANY)); +var_dump(openssl_x509_checkpurpose($bert, X509_PURPOSE_SSL_CLIENT)); +var_dump(openssl_x509_checkpurpose($bert, X509_PURPOSE_SSL_SERVER)); +var_dump(openssl_x509_checkpurpose($bert, X509_PURPOSE_NS_SSL_SERVER)); +var_dump(openssl_x509_checkpurpose($bert, X509_PURPOSE_SMIME_SIGN)); +var_dump(openssl_x509_checkpurpose($bert, X509_PURPOSE_SMIME_ENCRYPT)); +var_dump(openssl_x509_checkpurpose($bert, X509_PURPOSE_CRL_SIGN)); +var_dump(openssl_x509_checkpurpose($bert, X509_PURPOSE_ANY)); +var_dump(openssl_x509_checkpurpose($sert, X509_PURPOSE_SSL_CLIENT)); +var_dump(openssl_x509_checkpurpose($sert, X509_PURPOSE_SSL_SERVER)); +var_dump(openssl_x509_checkpurpose($sert, X509_PURPOSE_NS_SSL_SERVER)); +var_dump(openssl_x509_checkpurpose($sert, X509_PURPOSE_SMIME_SIGN)); +var_dump(openssl_x509_checkpurpose($sert, X509_PURPOSE_SMIME_ENCRYPT)); +var_dump(openssl_x509_checkpurpose($sert, X509_PURPOSE_CRL_SIGN)); +var_dump(openssl_x509_checkpurpose($sert, X509_PURPOSE_ANY)); + +/* int openssl_x509_checkpurpose ( mixed $x509cert , int $purpose [, array $cainfo = array() ] ); */ +var_dump(openssl_x509_checkpurpose($cert, X509_PURPOSE_SSL_CLIENT, array($cpca))); +var_dump(openssl_x509_checkpurpose($cert, X509_PURPOSE_SSL_SERVER, array($cpca))); +var_dump(openssl_x509_checkpurpose($cert, X509_PURPOSE_NS_SSL_SERVER, array($cpca))); +var_dump(openssl_x509_checkpurpose($cert, X509_PURPOSE_SMIME_SIGN, array($cpca))); +var_dump(openssl_x509_checkpurpose($cert, X509_PURPOSE_SMIME_ENCRYPT, array($cpca))); +var_dump(openssl_x509_checkpurpose($cert, X509_PURPOSE_CRL_SIGN, array($cpca))); +var_dump(openssl_x509_checkpurpose($cert, X509_PURPOSE_ANY, array($cpca))); +var_dump(openssl_x509_checkpurpose($bert, X509_PURPOSE_SSL_CLIENT, array($cpca))); +var_dump(openssl_x509_checkpurpose($bert, X509_PURPOSE_SSL_SERVER, array($cpca))); +var_dump(openssl_x509_checkpurpose($bert, X509_PURPOSE_NS_SSL_SERVER, array($cpca))); +var_dump(openssl_x509_checkpurpose($bert, X509_PURPOSE_SMIME_SIGN, array($cpca))); +var_dump(openssl_x509_checkpurpose($bert, X509_PURPOSE_SMIME_ENCRYPT, array($cpca))); +var_dump(openssl_x509_checkpurpose($bert, X509_PURPOSE_CRL_SIGN, array($cpca))); +var_dump(openssl_x509_checkpurpose($bert, X509_PURPOSE_ANY, array($cpca))); +var_dump(openssl_x509_checkpurpose($sert, X509_PURPOSE_SSL_CLIENT, array($cpca))); +var_dump(openssl_x509_checkpurpose($sert, X509_PURPOSE_SSL_SERVER, array($cpca))); +var_dump(openssl_x509_checkpurpose($sert, X509_PURPOSE_NS_SSL_SERVER, array($cpca))); +var_dump(openssl_x509_checkpurpose($sert, X509_PURPOSE_SMIME_SIGN, array($cpca))); +var_dump(openssl_x509_checkpurpose($sert, X509_PURPOSE_SMIME_ENCRYPT, array($cpca))); +var_dump(openssl_x509_checkpurpose($sert, X509_PURPOSE_CRL_SIGN, array($cpca))); +var_dump(openssl_x509_checkpurpose($sert, X509_PURPOSE_ANY, array($cpca))); + +/* int openssl_x509_checkpurpose ( mixed $x509cert , int $purpose [, array $cainfo = array() [, string $untrustedfile ]] ); function */ +var_dump(openssl_x509_checkpurpose($cert, X509_PURPOSE_SSL_CLIENT, array($cpca), $utfl)); +var_dump(openssl_x509_checkpurpose($cert, X509_PURPOSE_SSL_SERVER, array($cpca), $utfl)); +var_dump(openssl_x509_checkpurpose($cert, X509_PURPOSE_NS_SSL_SERVER, array($cpca), $utfl)); +var_dump(openssl_x509_checkpurpose($cert, X509_PURPOSE_SMIME_SIGN, array($cpca), $utfl)); +var_dump(openssl_x509_checkpurpose($cert, X509_PURPOSE_SMIME_ENCRYPT, array($cpca), $utfl)); +var_dump(openssl_x509_checkpurpose($cert, X509_PURPOSE_CRL_SIGN, array($cpca), $utfl)); +var_dump(openssl_x509_checkpurpose($cert, X509_PURPOSE_ANY, array($cpca), $utfl)); +var_dump(openssl_x509_checkpurpose($bert, X509_PURPOSE_SSL_CLIENT, array($cpca), $utfl)); +var_dump(openssl_x509_checkpurpose($bert, X509_PURPOSE_SSL_SERVER, array($cpca), $utfl)); +var_dump(openssl_x509_checkpurpose($bert, X509_PURPOSE_NS_SSL_SERVER, array($cpca), $utfl)); +var_dump(openssl_x509_checkpurpose($bert, X509_PURPOSE_SMIME_SIGN, array($cpca), $utfl)); +var_dump(openssl_x509_checkpurpose($bert, X509_PURPOSE_SMIME_ENCRYPT, array($cpca), $utfl)); +var_dump(openssl_x509_checkpurpose($bert, X509_PURPOSE_CRL_SIGN, array($cpca), $utfl)); +var_dump(openssl_x509_checkpurpose($bert, X509_PURPOSE_ANY, array($cpca), $utfl)); +var_dump(openssl_x509_checkpurpose($sert, X509_PURPOSE_SSL_CLIENT, array($cpca), $utfl)); +var_dump(openssl_x509_checkpurpose($sert, X509_PURPOSE_SSL_SERVER, array($cpca), $utfl)); +var_dump(openssl_x509_checkpurpose($sert, X509_PURPOSE_NS_SSL_SERVER, array($cpca), $utfl)); +var_dump(openssl_x509_checkpurpose($sert, X509_PURPOSE_SMIME_SIGN, array($cpca), $utfl)); +var_dump(openssl_x509_checkpurpose($sert, X509_PURPOSE_SMIME_ENCRYPT, array($cpca), $utfl)); +var_dump(openssl_x509_checkpurpose($sert, X509_PURPOSE_CRL_SIGN, array($cpca), $utfl)); +var_dump(openssl_x509_checkpurpose($sert, X509_PURPOSE_ANY, array($cpca), $utfl)); +?> +--EXPECT-- +bool(false) +bool(false) +bool(false) +bool(false) +bool(false) +bool(false) +bool(false) +int(-1) +int(-1) +int(-1) +int(-1) +int(-1) +int(-1) +int(-1) +bool(false) +bool(false) +bool(false) +bool(false) +bool(false) +bool(false) +bool(false) +bool(false) +bool(false) +bool(false) +bool(false) +bool(false) +bool(false) +bool(false) +int(-1) +int(-1) +int(-1) +int(-1) +int(-1) +int(-1) +int(-1) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(false) +bool(false) +bool(false) +bool(false) +bool(false) +bool(false) +bool(false) +int(-1) +int(-1) +int(-1) +int(-1) +int(-1) +int(-1) +int(-1) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) diff --git a/tests/basic/timeout_config.inc b/tests/basic/timeout_config.inc index 18a00b2c48..7182080939 100644 --- a/tests/basic/timeout_config.inc +++ b/tests/basic/timeout_config.inc @@ -4,8 +4,8 @@ $t = 3; function busy_wait($how_long) { - $until = time() + $how_long; + $until = microtime(TRUE) + $how_long; - while ($until > time()); + while ($until > microtime(TRUE)); } |