[Date Prev][Date Next] [Chronological] [Thread] [Top]

OpenLDAP clients dump core in SSL mode (ITS#889)



Full_Name: Del
Version: 2.0.7
OS: Linux (RH6.2, Kernel 2.2.16)
URL: 
Submission from: (NULL) (203.96.111.201)


The following command core dumps:

ldapsearch -H ldaps://<servername>/ -x

This dumps core regardless of whether the server is an OpenLDAP 2.0.7
server running in SSL mode (slapd -h "ldap:/// ldaps:///") or an NDS
server also set up for SSL mode.

A command line openssl connection to the LDAP server on port 636
appears to work OK, and shows a trace of certificates and certificate
issuers.

... following the debug output of the slapd server, it appears that
the connection gets started OK, and almost completes OK.  I see messages
like these (trimming out the hex dump scribble):

TLS trace: SSL_accept:before/accept initialization
tls_read: want=11, got=11

TLS trace: SSL_accept:SSLv3 read client hello A
TLS trace: SSL_accept:SSLv3 write server hello A
TLS trace: SSL_accept:SSLv3 write certificate A
TLS trace: SSL_accept:SSLv3 write server done A
tls_write: want=1024, written=1024

TLS trace: SSL_accept:SSLv3 flush data
tls_read: want=5 error=Resource temporarily unavailable
TLS trace: SSL_accept:error in SSLv3 read client certificate A
TLS trace: SSL_accept:error in SSLv3 read client certificate A
daemon: select: listen=6 active_threads=0 tvp=NULL
daemon: select: listen=7 active_threads=0 tvp=NULL
daemon: activity on 1 descriptors
daemon: activity on: 8r
daemon: read activity on 8
connection_get(8)
connection_get(8): got connid=0
connection_read(8): checking for input on id=0
tls_read: want=5, got=5

TLS trace: SSL_accept:SSLv3 read client key exchange A
tls_read: want=5, got=5

TLS trace: SSL_accept:SSLv3 read finished A
TLS trace: SSL_accept:SSLv3 write change cipher spec A
TLS trace: SSL_accept:SSLv3 write finished A
tls_write: want=51, written=51

TLS trace: SSL_accept:SSLv3 flush data
daemon: select: listen=6 active_threads=0 tvp=NULL
daemon: select: listen=7 active_threads=0 tvp=NULL
daemon: activity on 1 descriptors
daemon: activity on: 8r
daemon: read activity on 8
connection_get(8)
connection_get(8): got connid=0
connection_read(8): checking for input on id=0
ber_get_next
tls_read: want=5, got=0

ldap_read: want=1, got=0

ber_get_next on fd 8 failed errno=0 (Success)
connection_read(8): input error=-2 id=0, closing.
connection_closing: readying conn=0 sd=8 for close
connection_close: conn=0 sd=8
daemon: removing 8
tls_write: want=29, written=29

TLS trace: SSL3 alert write:warning:close notify
daemon: select: listen=6 active_threads=0 tvp=NULL
daemon: select: listen=7 active_threads=0 tvp=NULL
daemon: activity on 1 descriptors
daemon: select: listen=6 active_threads=0 tvp=NULL
daemon: select: listen=7 active_threads=0 tvp=NULL

... and at this point the client dies with no output.

ldappasswd dumps core also on ldaps, but works fine in -ZZ
mode.  When run in ldaps mode it doesn't appear to write a
password.  In -ZZ mode it does.

also, Julio Sanchez Fernandez wrote:

> It seems to fail in ldap_int_sasl_external in cyrus.c, possibly
> because ld_defconn is garbage.
> 
> But I don't quite understand why it is trying to do an external
> sasl bind, if that is what it is doing...
> 
> Use of -Y does not seem to have any effect.

Del