Hi!

I have been digging on this issue and I found the ultimate cause of this
problem.


When sudo/su/passwd/<insert-any-setuid-program-that-calls-getpwent()> on
a system configured with PAM/LDAPs it chains into libldap, which uses
GnuTLS/libgcrypt to manage the TLS channel.


The problem is that when OpenLDAP calls gnutls_global_init(), this
function does nothing because OpenLDAP had previously already
initialized libgcrypt at some point on the stack (probably by mistake).

For the record, there is no mistake in OpenLDAP. And also for the record, we on the OpenLDAP Project warned you guys multiple times that GnuTLS/libgcrypt are broken by design, and should not be used. (E.g. as I noted here https://bugs.launchpad.net/debian/+source/sudo/+bug/423252/comments/62)

The libgcrypt documentation states in section 2.5 that you *must* set the thread callbacks before calling *any* other libgcrypt functions. libldap's code does that. It's not our fault that libgcrypt's design is so broken that even when you use it as documented it doesn't work. We've been telling you for *years* that GnuTLS is broken by design.

--
  -- Howard Chu
  CTO, Symas Corp.           http://www.symas.com
  Director, Highland Sun     http://highlandsun.com/hyc/
  Chief Architect, OpenLDAP  http://www.openldap.org/project/


--
To UNSUBSCRIBE, email to debian-bugs-dist-requ...@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org

Reply via email to