The reason behind this change is a stack allocation issue pointed
out by Dmitry: As of PHP 5.5 the stack necessary for pushing
arguments is precomputed and preallocated, as such the individual
SEND opcodes no longer verify that there is enough stack space.
The unpacked arguments will occupy some of that preallocated
space and as such following positional arguments could write past
a stack page boundary.
An alternative resolution for this issue is to ensure that there
is enough space for the remaining arguments in the UNPACK opcode.
However making this allocation precise (rather than using a
conversative over-estimate) would require some effort. Given that
this particular aspect of the feature wasn't very popular in the
first place, it doesn't seem worth the effort.
Nikita Popov [Tue, 25 Feb 2014 23:14:50 +0000 (00:14 +0100)]
Store arg_num in fcall entry
Instead of storing the argument number in the znode of the parameter
list, store it in fcall->arg_num. This mainly cleans up the parameter
parsing code, which previously had to duplicate all rules (this
becomes more excessive as more features are added, e.g. named params
would already require a minimum of 14 rules...)
Nikita Popov [Tue, 25 Feb 2014 22:39:50 +0000 (23:39 +0100)]
Introduce zend_function_call_entry structure
Instead of directly pushing the zend_function* onto the
function_call_stack, push this structure. This allows us to store
additional data on this stack.
Ferenc Kovacs [Wed, 26 Feb 2014 14:14:50 +0000 (15:14 +0100)]
Merge branch 'PHP-5.6'
* PHP-5.6:
add NEWS block for 5.6.0 beta1
add news entry
add news entry
add clear_env option to FPM config
add clear_env option to FPM config
Reduce test noise on cross Oracle client <-> server version tests. This fix is already in PHP 5.6+
Reduce test noise in cross Oracle client <-> server version testing. This change is already in PHP 5.6+
Ferenc Kovacs [Wed, 26 Feb 2014 14:13:40 +0000 (15:13 +0100)]
Merge branch 'PHP-5.5' into PHP-5.6
* PHP-5.5:
add news entry
add news entry
add clear_env option to FPM config
add clear_env option to FPM config
Reduce test noise on cross Oracle client <-> server version tests. This fix is already in PHP 5.6+
Reduce test noise in cross Oracle client <-> server version testing. This change is already in PHP 5.6+
Daniel Lowrey [Tue, 25 Feb 2014 20:27:10 +0000 (13:27 -0700)]
Merge branch 'PHP-5.6'
* PHP-5.6:
Remove test case invalidated by openssl.cafile accessibility change
Tolerate non-standard newlines when parsing stream CA files
Remove openssl tests that shouldn't have survived last merge
Add openssl.cafile ini check when loading cainfo
Change openssl directives to PHP_INI_PERDIR
Update openssl tests with new server/client test harness
Add peer certificate verification on windows
Daniel Lowrey [Tue, 25 Feb 2014 19:43:52 +0000 (12:43 -0700)]
Merge branch 'windowsPeerVerification' of https://github.com/DaveRandom/php-src into PHP-5.6
* 'windowsPeerVerification' of https://github.com/DaveRandom/php-src:
Update openssl tests with new server/client test harness
Add peer certificate verification on windows
Paul Annesley [Wed, 19 Feb 2014 19:48:40 +0000 (11:48 -0800)]
add clear_env option to FPM config
This makes it possible to leave the envoronment as is on startup and
pass all the variables to the workers.
The default value of clear_env is "yes", preserving previous behaviour.
Patch by Paul Annesley.
Paul Annesley [Wed, 19 Feb 2014 19:48:40 +0000 (11:48 -0800)]
add clear_env option to FPM config
This makes it possible to leave the envoronment as is on startup and
pass all the variables to the workers.
The default value of clear_env is "yes", preserving previous behaviour.
Patch by Paul Annesley.
Paul Annesley [Wed, 19 Feb 2014 19:48:40 +0000 (11:48 -0800)]
add clear_env option to FPM config
This makes it possible to leave the envoronment as is on startup and
pass all the variables to the workers.
The default value of clear_env is "yes", preserving previous behaviour.
Patch by Paul Annesley.
Paul Annesley [Wed, 19 Feb 2014 19:48:40 +0000 (11:48 -0800)]
add clear_env option to FPM config
This makes it possible to leave the envoronment as is on startup and
pass all the variables to the workers.
The default value of clear_env is "yes", preserving previous behaviour.
Patch by Paul Annesley.