From:             jaroslav dot pulchart at centrum dot cz
Operating system: All
PHP version:      5.2.10
PHP Bug Type:     *Directory Services problems
Bug description:  ldap_search segfault Apache procees

Description:
------------
Fix 48441 in PHP 5.2.10 (http://bugs.php.net/bug.php?id=48441) restore
previous LDAP options, but it doesn't test if LDAP link pointer is NULL.
This issue segfault Apache/PHP process.




Reproduce code:
---------------
ext/ldap/ldap.c
... 
ld = (ldap_linkdata *) zend_fetch_resource(link TSRMLS_CC, -1, "ldap
link", NULL, 1, le_link);
if (ld == NULL) {
        ret = 0;
        goto cleanup;     /* "ld" is NULL !!!!!! */
}
...
cleanup: 
        // Restoring previous options
        php_set_opts(ld->link, old_ldap_sizelimit, old_ldap_timelimit,
old_ldap_deref, &ldap_sizelimit, &ldap_timelimit, &ldap_deref);   /* set
options on ld == NULL !!!!!!! */
...

Expected result:
----------------
No segfault ;)


cleanup: 

        if (ld!=NULL){
        // Restoring previous options
                php_set_opts(ld->link, old_ldap_sizelimit, old_ldap_timelimit,
old_ldap_deref, &ldap_sizelimit, &ldap_timelimit, &ldap_deref);
        }


Actual result:
--------------
#0  0x0000002a9a546437 in php_ldap_do_search (ht=7,
return_value=0x2a9d41bda0, 
    return_value_ptr=0x0, this_ptr=0x0, return_value_used=1, scope=2) at
./php-5.2.10/ext/ldap/ldap.c:909
909             php_set_opts(ld->link, old_ldap_sizelimit, old_ldap_timelimit,
old_ldap_deref, &ldap_sizelimit, &ldap_timelimit, &ldap_deref);
(gdb) bt full
#0  0x0000002a9a546437 in php_ldap_do_search (ht=7,
return_value=0x2a9d41bda0, return_value_ptr=0x0, this_ptr=0x0,
return_value_used=1, scope=2)
    at ./php-5.2.10/ext/ldap/ldap.c:907
        link = (zval **) 0x2a997fd500
        base_dn = (zval **) 0x2a997fd508
        filter = (zval **) 0x2a997fd510
        attrs = (zval **) 0x2a997fd518
        attr = (zval **) 0x34
        attrsonly = (zval **) 0x2a997fd520
        sizelimit = (zval **) 0x2a997fd528
        timelimit = (zval **) 0x2a997fd530
        deref = (zval **) 0x2a98fb475d
        ldap_base_dn = 0x0
        ldap_filter = 0x2a9d41be10 "Array"
        ldap_attrs = (char **) 0x2a9d41bb88
        ld = (ldap_linkdata *) 0x0
        ldap_res = (LDAPMessage *) 0x8
        ldap_attrsonly = 0
        ldap_sizelimit = 0
        ldap_timelimit = 0
        ldap_deref = -1
        old_ldap_sizelimit = -1
        old_ldap_timelimit = -1
        old_ldap_deref = -1
        num_attribs = 0
        i = 0
        myargcount = 7
        ret = 0
#1  0x0000002a9a54655c in zif_ldap_search (ht=7,
return_value=0x2a9d41bda0, return_value_ptr=0x0, this_ptr=0x0,
return_value_used=1)
    at ./php-5.2.10/ext/ldap/ldap.c:936
No locals.
#2  0x0000002a98fd4b6e in execute () from ./apache/modules/libphp5.so
No symbol table info available.
#3  0x0000002a98fd4181 in execute () from ./apache/modules/libphp5.so
No symbol table info available.
#4  0x0000002a98fd4483 in execute () from ./apache/modules/libphp5.so
No symbol table info available.
#5  0x0000002a98fd4181 in execute () from ./apache/modules/libphp5.so
No symbol table info available.
#6  0x0000002a98fd4483 in execute () from ./apache/modules/libphp5.so
No symbol table info available.
#7  0x0000002a98fd4181 in execute () from ./apache/modules/libphp5.so
No symbol table info available.
#8  0x0000002a98fd4483 in execute () from ./apache/modules/libphp5.so
No symbol table info available.
#9  0x0000002a98fd4181 in execute () from ./apache/modules/libphp5.so
No symbol table info available.
#10 0x0000002a98fd4483 in execute () from ./apache/modules/libphp5.so
No symbol table info available.
#11 0x0000002a98fd4181 in execute () from ./apache/modules/libphp5.so
No symbol table info available.
#12 0x0000002a98fd4483 in execute () from ./apache/modules/libphp5.so
No symbol table info available.
#13 0x0000002a98fd4181 in execute () from ./apache/modules/libphp5.so
No symbol table info available.
#14 0x0000002a98fe317c in execute () from ./apache/modules/libphp5.so
No symbol table info available.
#15 0x0000002a98fd4181 in execute () from ./apache/modules/libphp5.so
No symbol table info available.
#16 0x0000002a98fd4483 in execute () from ./apache/modules/libphp5.so
No symbol table info available.
#17 0x0000002a98fd4181 in execute () from ./apache/modules/libphp5.so
No symbol table info available.
#18 0x0000002a98fd4483 in execute () from ./apache/modules/libphp5.so
No symbol table info available.
#19 0x0000002a98fd4181 in execute () from ./apache/modules/libphp5.so
No symbol table info available.
#20 0x0000002a98fb5214 in zend_execute_scripts () from
./apache/modules/libphp5.so
No symbol table info available.
#21 0x0000002a98f723ad in php_execute_script () from
./apache/modules/libphp5.so
No symbol table info available.
#22 0x0000002a990443e6 in zend_get_zval_ptr_ptr () from
./apache/modules/libphp5.so
No symbol table info available.
#23 0x0000000000435c63 in ap_run_handler ()
No symbol table info available.
#24 0x0000000000436101 in ap_invoke_handler ()
No symbol table info available.
#25 0x0000000000442860 in ap_process_request ()
No symbol table info available.
#26 0x000000000043ffad in ap_filter_protocol ()
No symbol table info available.
#27 0x000000000043c653 in ap_run_process_connection ()
No symbol table info available.
#28 0x0000000000446970 in ap_graceful_stop_signalled ()
No symbol table info available.
#29 0x0000000000446b94 in ap_graceful_stop_signalled ()
No symbol table info available.
#30 0x0000000000446c2e in ap_graceful_stop_signalled ()
No symbol table info available.
#31 0x000000000044743d in ap_mpm_run ()
No symbol table info available.
#32 0x00000000004237e5 in main ()
No symbol table info available.


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

Reply via email to