php.net |  support |  documentation |  report a bug |  advanced search |  search howto |  statistics |  random bug |  login
Bug #14618 Undefined Symbol: ldap_parse_reference
Submitted: 2001-12-20 05:54 UTC Modified: 2001-12-25 09:49 UTC
From: kv at netuse dot de Assigned: venaas (profile)
Status: Closed Package: LDAP related
PHP Version: 4.1.0 OS: Solaris 2.8
Private report: No CVE-ID: None
 [2001-12-20 05:54 UTC] kv at netuse dot de
This is the same problem as in Bug #11873

Configure options: --enable-force-cgi-redirect --enable-trans-sid --enable-memory-limit --with-ldap

Operating system: SunOS myHost 5.8 Generic_108528-12 sun4u sparc SUNW,Ultra-250

The original Solaris LDAP library is used, no other library is installed.

-rwxr-xr-x   1 root     bin       224200 Jan  5  2000 /usr/lib/libldap.so.4*

There is no ldap_parse_reference() in this library. (Solaris 9 comes with libldap.so.5 including ldap_parse_reference() ). 

LDAP_API_VERSION is defined as 2004 (2005 on Solaris 9) in /usr/include/ldap.h

HAVE_NSLDAP is not defined in main/config_php.h

I looked for references on the web about what API function has to be present in the different API versions. It's definitely possible that Sun wrongly labeled their library in Solaris 8 with 2004 but didn't supply the needed ldap_parse_reference() method.

But it would be useful to make PHP ignore that problem and undefine ldap_parse_reference() on Solaris 8 or at least check for its existance during configure.

Patches

Pull Requests

History

AllCommentsChangesGit/SVN commitsRelated reports
 [2001-12-23 09:09 UTC] venaas@php.net
Yes, this is certainly a SUN bug. LDAP_API_VERSION 2004
should mean version 4 of the draft-ietf-ldapext-ldap-c-api
draft, and it includes ldap_parse_reference(). I have a
couple of questions for you. What are LDAP_VENDOR_NAME and
LDAP_VENDOR_VERSION defined as? Are there other macros you
think could be used to detect that we are using the Solaris
8 lib? Could you try to check what else is missing? Is
ldap_parse_reference() really the only one?

 [2001-12-23 10:00 UTC] kv at netuse dot de
/usr/include/ldap.h contains on Solaris 8

#define LDAP_VENDOR_NAME        "Sun Microsystems Inc."
#define LDAP_VENDOR_VERSION     400

In Solaris 9, LDAP_VENDOR_VERSION is defined as 500.
So this can be used to identify the correct version.

After replacing the ldap_parse_reference() call in
ext/ldap/ldap.c with RETURN_FALSE, PHP compiled. That
means that all other functions are present.

We have filed that problem to Sun as well.





 [2001-12-25 09:49 UTC] venaas@php.net
I decided to make a more generic check for ldap_parse_reference(). Could you please test with latest
CVS or snapshot? Reopen this if there still are problems.

 
PHP Copyright © 2001-2024 The PHP Group
All rights reserved.
Last updated: Wed Oct 30 22:01:28 2024 UTC