diff --git a/CHANGES b/CHANGES index d037893c4068c417dfa66f8eae94e7ed3a5d0020..7187d5aed8b5ba39237313faa690249372ac6366 100644 --- a/CHANGES +++ b/CHANGES @@ -3,6 +3,7 @@ OpenLDAP 2.4 Change Log OpenLDAP 2.4.24 Engineering Fixed liblber to not close invalid sockets (ITS#6585) Fixed libldap dnssrv port format specifier (ITS#6644) + Fixed libldap sasl partial write handling (ITS#6639) Fixed ldapsearch segfault with deref (ITS#6638) Fixed slapd acl parsing overflow (ITS#6611) Fixed slapd modify to return actual error (ITS#6581) diff --git a/libraries/libldap/sasl.c b/libraries/libldap/sasl.c index 6aa8cce49791cda8720636d6f88c8589c4cee24d..8856ef78d556b74607390d2e2b548460565af3b7 100644 --- a/libraries/libldap/sasl.c +++ b/libraries/libldap/sasl.c @@ -733,8 +733,9 @@ sb_sasl_generic_write( Sockbuf_IO_Desc *sbiod, void *buf, ber_len_t len) return ret; } else if ( p->buf_out.buf_ptr != p->buf_out.buf_end ) { /* partial write? pretend nothing got written */ - len2 = 0; p->flags |= LDAP_PVT_SASL_PARTIAL_WRITE; + sock_errset(EAGAIN); + len2 = -1; } /* return number of bytes encoded, not written, to ensure