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

(ITS#4954) must clear c_sasl_dn after error



Full_Name: Donn Cave
Version: 2.4.4
OS: Red Hat RHEL 3
URL: ftp://ftp.openldap.org/incoming/
Submission from: (NULL) (128.95.135.150)


After SASL bind failure, c_sasl_dn is not cleared, and eventually causes a crash
when it is encountered in a subsequent bind attempt, in ch_free,
slap_sasl_authorize ca. line 676.  (Depending on platform malloc - NetBSD
complains here but doesn't crash, Linux/glibc may or may not complain but does
corrupt heap and eventually crashes.)

Duplicate:  Attempt SASL PLAIN bind as "" with password "" (for example) to get
SASL "User not found" error.  Then make one or more SASL EXTERNAL binds, until
server crashes - shouldn't take but one or two.  I make a supportSASLMechanisms
search before the PLAIN bind, because that's what our user did when he crashed
our service, but this is probably irrelevant.  I do not specify a bind name in
the EXTERNAL bind.

Fix:  in slap_sasl_bind, ca. line 1713, BER_BVZERO(&op->o_conn->c_sasl_dn) after
bind fails (sc neither SASL_OK nor SASL_CONTINUE)

Problem initially encountered in 2.3.24, also observed in 2.3.21 and 2.4.4.  Fix
tested on 2.3.21 and 2.3.24.