#19434 [Opn->Fbk]: oci8 + ldap -> crash
| From: | sniper@php.net | Date: | Wed, 15 Oct 2003 01:02:50 +0000 |
| Subject: | #19434 [Opn->Fbk]: oci8 + ldap -> crash | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-49034@lists.php.net to get a copy of this message | ||
ID: 19434
Updated by: sniper@php.net
Reported By: ronan dot salmon at staff dot ittralee dot ie
-Status: Open
+Status: Feedback
Bug Type: OCI8 related
Operating System: redhat 7.3
PHP Version: 4.3.3RC4-dev
New Comment:
Please try using this CVS snapshot:
http://snaps.php.net/php4-STABLE-latest.tar.gz
For Windows:
http://snaps.php.net/win32/php4-win32-STABLE-latest.zip
Previous Comments:
------------------------------------------------------------------------
[2003-07-17 03:40:47] ronan dot salmon at staff dot ittralee dot ie
Sorry, I don't know what I've done yesterday but in fact LDAP doesn't
work alone anymore.
Here the script :
<?php
include('config.php');
$connLDAP = ldap_connect('10.10.1.19');
if (!$connLDAP)
{
echo 'Failed to connect to 10.10.1.19';
exit;
}
// Lookup user
@ldap_bind($connLDAP);
$ldapsearch = ldap_search($connLDAP,
'ou=people,ou=staff,dc=ittralee,dc=ie', "uid=$strLogin");
$arrInfo = ldap_get_entries($connLDAP, $ldapsearch);
$boolLogin = @ldap_bind($connLDAP, $strDN, $strPasswd);
if (!$boolLogin)
{
echo "<BR>Wrong username or password!<P>\n";
exit;
}
?>
I'm using the same php as yesterday.
[~/php]# gdb ./php4-STABLE-200307160330/sapi/cgi/php login.php
(gdb) run login.php
Starting program: /root/php/php4-STABLE-200307160330/sapi/cgi/php
login.php
[New Thread 16384 (LWP 23469)]
Program received signal SIGSEGV, Segmentation fault.
[Switching to Thread 16384 (LWP 23469)]
0x40a71a34 in _int_free () from /lib/libc.so.6
(gdb) bt
#0 0x40a71a34 in _int_free () from /lib/libc.so.6
#1 0x40a709cc in free () from /lib/libc.so.6
#2 0x08065d81 in zif_ldap_get_entries (ht=2, return_value=0x8208040,
this_ptr=0x0, return_value_used=1, tsrm_ls=0x40d76440)
at /root/php/php4-STABLE-200307160330/ext/ldap/ldap.c:953
#3 0x0813ce45 in execute (op_array=0x8203028, tsrm_ls=0x81876b0)
at /root/php/php4-STABLE-200307160330/Zend/zend_execute.c:1616
#4 0x0812f7f1 in zend_execute_scripts (type=8, tsrm_ls=0x81876b0,
retval=0x0,
file_count=3) at
/root/php/php4-STABLE-200307160330/Zend/zend.c:886
#5 0x08106305 in php_execute_script (primary_file=0xbffff980,
tsrm_ls=0x81876b0) at
/root/php/php4-STABLE-200307160330/main/main.c:1685
#6 0x08142609 in main (argc=2, argv=0xbffffa14)
at /root/php/php4-STABLE-200307160330/sapi/cgi/cgi_main.c:1542
#7 0x40a195cd in __libc_start_main () from /lib/libc.so.6
------------------------------------------------------------------------
[2003-07-16 14:31:31] sniper@php.net
Can you try and reduce your script to smallest possible that causes the
crash? (like with only the ldap stuff?)
------------------------------------------------------------------------
[2002-09-26 20:22:44] sniper@php.net
Please try using this CVS snapshot:
http://snaps.php.net/php4-latest.tar.gz
For Windows:
http://snaps.php.net/win32/php4-win32-latest.zip
Reduce your configure options to bare minimum,
only use --with-apxs, --with-oci8 and --with-ldap and
don't compile them as shared!
Do this using the latest snapshot above.
------------------------------------------------------------------------
[2002-09-16 07:13:50] sniper@php.net
Oracle has it's own ldap stuff. You can't compile both openldap and
oracle together. But you don't need to:
--with-ldap=/home/oracle/Oracle-9.0.1
works too.
------------------------------------------------------------------------
[2002-09-16 06:49:24] ronan dot salmon at staff dot ittralee dot ie
php-4.2.3
apache-1.3.23-14
redhat 7.3
kernel 2.4.18-10 i686
oracle 9.0.1
openldap 2.0.23
Configure command :
'./configure' 'i386-redhat-linux' '--prefix=/usr'
'--exec-prefix=/usr'
'--bindir=/usr/bin' '--sbindir=/usr/sbin' '--sysconfdir=/etc'
'--datadir=/usr/share' '--includedir=/usr/include' '--libdir=/usr/lib'
'--libexecdir=/usr/libexec' '--localstatedir=/var'
'--sharedstatedir=/usr/com' '--mandir=/usr/share/man'
'--infodir=/usr/share/info' '--prefix=/usr'
'--with-config-file-path=/etc' '--enable-force-cgi-redirect'
'--disable-debug' '--enable-pic' '--disable-rpath'
'--enable-inline-optimization' '--with-bz2' '--with-db3'
'--with-curl'
'--with-dom=/usr' '--with-exec-dir=/usr/bin'
'--with-freetype-dir=/usr'
'--with-png-dir=/usr' '--with-gd' '--enable-gd-native-ttf'
'--with-ttf'
'--with-gdbm' '--with-gettext' '--with-ncurses' '--with-gmp'
'--with-iconv' '--with-jpeg-dir=/usr' '--with-openssl'
'--with-png'
'--with-pspell' '--with-regex=system' '--with-xml'
'--with-expat-dir=/usr' '--with-zlib' '--with-layout=GNU'
'--enable-bcmath' '--enable-debugger' '--enable-exif'
'--enable-ftp'
'--enable-magic-quotes' '--enable-safe-mode' '--enable-sockets'
'--enable-sysvsem' '--enable-sysvshm' '--enable-discard-path'
'--enable-track-vars' '--enable-trans-sid' '--enable-yp'
'--enable-wddx' '--without-oci8' '--with-imap=shared'
'--with-imap-ssl'
'--with-kerberos=/usr/kerberos' '--with-ldap=shared'
'--with-mysql=shared,/usr'
'--with-oci8=shared,/home/oracle/Oracle-9.0.1' '--enable-sigchild'
'--with-pgsql=shared' '--with-snmp=shared,/usr' '--with-snmp=shared'
'--enable-ucd-snmp-hack' '--with-unixODBC=shared'
'--enable-memory-limit' '--enable-bcmath' '--enable-shmop'
'--enable-versioning' '--enable-calendar' '--enable-dbx'
'--enable-dio'
'--enable-mcal' '--enable-mbstring' '--enable-mbstr-enc-trans'
'--with-apxs=/usr/sbin/apxs'
If I use ldap functions only, everything is fine.
If I use oci8 functions only, everything is fine.
If in the same script I use oci8 and ldap functions, apache crashes :
[Mon Sep 16 12:44:39 2002] [notice] child pid 31257 exit signal
Segmentation fault (11)
here the script :
<?
include("../config/oci8.php");
include("../config/settings.php");
$strLogin = "test";
$strPasswd = "test";
$connLDAP = ldap_connect(DEFAULT_LDAP_HOSTNAME);
if (!$connLDAP)
{
echo "Failed to connect to " . DEFAULT_LDAP_HOSTNAME;
exit;
}
if (!$strPasswd)
{
// generate a bogus password to pass if the user doesn't give us one
// this gets around systems that are anonymous search enabled
$strPasswd = crypt(microtime());
}
// Lookup user
@ldap_bind($connLDAP);
$arrInfo = ldap_get_entries($connLDAP, ldap_search($connLDAP,
DEFAULT_STAFF_EMAIL_PEOPLE, "uid=$strLogin"));
$strDN = $arrInfo[0]["dn"];
$boolLogin = @ldap_bind($connLDAP, $strDN, $strPasswd);
if (!$boolLogin)
{
echo "<BR>Wrong username or password!<P>\n";
exit;
}
// Logged in successfully
$DB = ocilogon($strUser, $strPassword, $strDB);
if (! $DB)
{
$err = OCIError();
echo "Can not connect to $strDB : $err<B>\n";
die();
}
$strSQL = "SELECT * FROM Account_Users WHERE ID = '$strLogin'";
$stmt = ociparse($DB, $strSQL);
ociexecute($stmt, OCI_DEFAULT);
if (ocifetch($stmt))
{
echo "Success";
} else {
echo "Failed";
}
ocilogoff($DB);
?>
------------------------------------------------------------------------
--
Edit this bug report at http://bugs.php.net/?id=19434&edit=1