From:             
Operating system: Any
PHP version:      5.4.3
Package:          *Compile Issues
Bug Type:         Bug
Bug description:Segfault during inheritance check on method

Description:
------------
When inherited method has different type hinting information for the method
parameters and E_STRICT error reporting level is set - PHP tries to report
method declaration incompatibility and segfaults on attempt to dereference
a null pointer.

Test script:
---------------
<?php

class A {}

class B {
public function b(A $a) {}
}

class C extends B {
public function b($a) {}
}

$a = new C();

Expected result:
----------------
Valid message explaining that inherited method has a different signature.

Actual result:
--------------
$ php a.php 
Segmentation fault (core dumped)

...

(gdb) bt
#0  zend_get_function_declaration (fptr=0x0)
    at /usr/src/debug/php-5.4.3/Zend/zend_compile.c:3046
#1  0x00000000005a2479 in do_inheritance_check_on_method (child=
    0x7ffff7fc3558, parent=0x7ffff7fc3f18)
    at /usr/src/debug/php-5.4.3/Zend/zend_compile.c:3267
#2  0x00000000005a2665 in do_inherit_method_check (
    child_function_table=<value optimized out>, parent=<value optimized
out>, 
    hash_key=<value optimized out>, child_ce=0x7ffff7fc3310)
    at /usr/src/debug/php-5.4.3/Zend/zend_compile.c:3288
#3  0x00000000005d3cf1 in zend_hash_replace_checker_wrapper (target=
    0x7ffff7fc3338, source=<value optimized out>, pCopyConstructor=
    0x5a7bc0 <do_inherit_method>, size=240, pMergeSource=
    0x5a2620 <do_inherit_method_check>, pParam=0x7ffff7fc3310)
    at /usr/src/debug/php-5.4.3/Zend/zend_hash.c:878
#4  zend_hash_merge_ex (target=0x7ffff7fc3338, source=<value optimized
out>, 
    pCopyConstructor=0x5a7bc0 <do_inherit_method>, size=240, pMergeSource=
    0x5a2620 <do_inherit_method_check>, pParam=0x7ffff7fc3310)
    at /usr/src/debug/php-5.4.3/Zend/zend_hash.c:892
#5  0x00000000005a850b in zend_do_inheritance (ce=0x7ffff7fc3310,
parent_ce=
    0x7ffff7fc2ff8) at /usr/src/debug/php-5.4.3/Zend/zend_compile.c:3519
#6  0x00000000005a962c in do_bind_inherited_class (
    op_array=<value optimized out>, opline=<value optimized out>,
class_table=
    0xdf4c30, parent_ce=0x7ffff7fc2ff8, compile_time=1 '\001')
    at /usr/src/debug/php-5.4.3/Zend/zend_compile.c:4569
#7  0x00000000005a985a in zend_do_early_binding ()
    at /usr/src/debug/php-5.4.3/Zend/zend_compile.c:4626
#8  0x000000000058c1ca in zendparse ()
    at /usr/src/debug/php-5.4.3/Zend/zend_language_parser.c:3547
#9  0x000000000058fa0d in compile_file (file_handle=0x7fffffffdec0, 
    type=<value optimized out>) at Zend/zend_language_scanner.l:579
#10 0x00007fffeb6d4042 in phar_compile_file (file_handle=0x7fffffffdec0,
type=
    8) at /usr/src/debug/php-5.4.3/ext/phar/phar.c:3391
#11 0x00007ffff1d8101d in xdebug_compile_file (
    file_handle=<value optimized out>, type=<value optimized out>)
    at /usr/src/debug/php-pecl-xdebug-2.2.0/xdebug-2.2.0/xdebug.c:1537
#12 0x00000000005c70ca in zend_execute_scripts (type=8, retval=0x0,
file_count=
    3) at /usr/src/debug/php-5.4.3/Zend/zend.c:1264
#13 0x0000000000566cc3 in php_execute_script (primary_file=0x7fffffffdec0)
    at /usr/src/debug/php-5.4.3/main/main.c:2473
#14 0x0000000000672395 in do_cli (argc=2, argv=0x7fffffffe1f8)
    at /usr/src/debug/php-5.4.3/sapi/cli/php_cli.c:983
#15 0x0000000000672cbc in main (argc=2, argv=0x7fffffffe1f8)
    at /usr/src/debug/php-5.4.3/sapi/cli/php_cli.c:1356

-- 
Edit bug report at https://bugs.php.net/bug.php?id=62084&edit=1
-- 
Try a snapshot (PHP 5.4):            
https://bugs.php.net/fix.php?id=62084&r=trysnapshot54
Try a snapshot (PHP 5.3):            
https://bugs.php.net/fix.php?id=62084&r=trysnapshot53
Try a snapshot (trunk):              
https://bugs.php.net/fix.php?id=62084&r=trysnapshottrunk
Fixed in SVN:                        
https://bugs.php.net/fix.php?id=62084&r=fixed
Fixed in SVN and need be documented: 
https://bugs.php.net/fix.php?id=62084&r=needdocs
Fixed in release:                    
https://bugs.php.net/fix.php?id=62084&r=alreadyfixed
Need backtrace:                      
https://bugs.php.net/fix.php?id=62084&r=needtrace
Need Reproduce Script:               
https://bugs.php.net/fix.php?id=62084&r=needscript
Try newer version:                   
https://bugs.php.net/fix.php?id=62084&r=oldversion
Not developer issue:                 
https://bugs.php.net/fix.php?id=62084&r=support
Expected behavior:                   
https://bugs.php.net/fix.php?id=62084&r=notwrong
Not enough info:                     
https://bugs.php.net/fix.php?id=62084&r=notenoughinfo
Submitted twice:                     
https://bugs.php.net/fix.php?id=62084&r=submittedtwice
register_globals:                    
https://bugs.php.net/fix.php?id=62084&r=globals
PHP 4 support discontinued:          
https://bugs.php.net/fix.php?id=62084&r=php4
Daylight Savings:                    https://bugs.php.net/fix.php?id=62084&r=dst
IIS Stability:                       
https://bugs.php.net/fix.php?id=62084&r=isapi
Install GNU Sed:                     
https://bugs.php.net/fix.php?id=62084&r=gnused
Floating point limitations:          
https://bugs.php.net/fix.php?id=62084&r=float
No Zend Extensions:                  
https://bugs.php.net/fix.php?id=62084&r=nozend
MySQL Configuration Error:           
https://bugs.php.net/fix.php?id=62084&r=mysqlcfg

Reply via email to