From:             [EMAIL PROTECTED]
Operating system: Linux Redhat 8.0
PHP version:      4.2.2
PHP Bug Type:     Reproducible crash
Bug description:  ldapclose() SEGFAULTs

The following code will segfault with php-4.2.2 on RH-8.0
It queries a Microsoft Active Directory via LDAPv3.
It is suposed to create a session if a given user exists in the directory,
belongs to a given group and can bind to the directory with the given
password.

$ds=ldap_connect($LDAP_SERVER);
if($ds){

        ldap_bind($ds, $QUERYUSER_DN, $QUERYUSER_PASS);
        $err=ldap_errno($ds);
        if($err==0){
                $sr=ldap_search($ds, $BASE_DN, "samaccountname=rsaura",
array ("distinguishedName"), 0, 10000, 30, LDAP_DEREF_NEVER);
                $entry = ldap_first_entry($ds, $sr);
                if($entry == FALSE){
                        exit;
                }
                $attrs = ldap_get_attributes($ds, $entry);
                $dn = $attrs["distinguishedName"][0];

                $test=0;
                $sr = ldap_search($ds, $BASE_DN, $GROUP_MEMBERSHIP, array
("member"), 0, 10000, 30, LDAP_DEREF_NEVER);
                $entry = ldap_first_entry($ds, $sr);
                $attrs = ldap_get_attributes($ds, $entry);
                foreach ($attrs["member"] as $user){
                        if($user==$dn){
                                $test=1;
                                break;
                        }
                }
                if($test==0){
                        exit;
                }
                ldap_close($ds); <---segfaults here!
        } else {
                exit;
        }
} else {
        exit;
}

$ds=ldap_connect($LDAP_SERVER);

if($ds){
        ldap_bind($ds, $dn, $password);
        $err=ldap_errno($ds);
        if($err==0){
                $loginok=1;
        } else {
                exit;   
        }
        ldap_close($ds);
} else {
        exit;
}

if($loginok == 1){
        session_start();
        session_register("loginok");
}
-- 
Edit bug report at http://bugs.php.net/?id=21167&edit=1
-- 
Try a CVS snapshot:         http://bugs.php.net/fix.php?id=21167&r=trysnapshot
Fixed in CVS:               http://bugs.php.net/fix.php?id=21167&r=fixedcvs
Fixed in release:           http://bugs.php.net/fix.php?id=21167&r=alreadyfixed
Need backtrace:             http://bugs.php.net/fix.php?id=21167&r=needtrace
Try newer version:          http://bugs.php.net/fix.php?id=21167&r=oldversion
Not developer issue:        http://bugs.php.net/fix.php?id=21167&r=support
Expected behavior:          http://bugs.php.net/fix.php?id=21167&r=notwrong
Not enough info:            http://bugs.php.net/fix.php?id=21167&r=notenoughinfo
Submitted twice:            http://bugs.php.net/fix.php?id=21167&r=submittedtwice
register_globals:           http://bugs.php.net/fix.php?id=21167&r=globals
PHP 3 support discontinued: http://bugs.php.net/fix.php?id=21167&r=php3
Daylight Savings:           http://bugs.php.net/fix.php?id=21167&r=dst
IIS Stability:              http://bugs.php.net/fix.php?id=21167&r=isapi

Reply via email to