mirror of
https://git.openldap.org/openldap/openldap.git
synced 2025-12-26 17:49:59 -05:00
ITS#1806, Cyrus 1 doesn't give back our callbacks pointer, must stash it
ourselves.
This commit is contained in:
parent
a039bd97ea
commit
2ca4b0ebfc
2 changed files with 7 additions and 4 deletions
|
|
@ -308,10 +308,11 @@ sb_sasl_write( Sockbuf_IO_Desc *sbiod, void *buf, ber_len_t len)
|
|||
/* now encode the next packet. */
|
||||
#if SASL_VERSION_MAJOR >= 2
|
||||
ber_pvt_sb_buf_init( &p->buf_out );
|
||||
sasl_getprop( p->sasl_context, SASL_MAXOUTBUF, (const void **)&max );
|
||||
#else
|
||||
ber_pvt_sb_buf_destroy( &p->buf_out );
|
||||
sasl_getprop( p->sasl_context, SASL_MAXOUTBUF, (void **)&max );
|
||||
#endif
|
||||
sasl_getprop( p->sasl_context, SASL_MAXOUTBUF, (const void **)&max );
|
||||
if ( len > *max - 100 )
|
||||
len = *max - 100; /* For safety margin */
|
||||
ret = sasl_encode( p->sasl_context, buf, len,
|
||||
|
|
@ -462,6 +463,7 @@ ldap_int_sasl_open(
|
|||
#endif
|
||||
|
||||
if ( rc != SASL_OK ) {
|
||||
LDAP_FREE( session_callbacks );
|
||||
ld->ld_errno = sasl_err2ldap( rc );
|
||||
return ld->ld_errno;
|
||||
}
|
||||
|
|
@ -475,6 +477,7 @@ ldap_int_sasl_open(
|
|||
#endif
|
||||
|
||||
lc->lconn_sasl_ctx = ctx;
|
||||
lc->lconn_sasl_cbs = session_callbacks;
|
||||
|
||||
if( ssf ) {
|
||||
#if SASL_VERSION_MAJOR >= 2
|
||||
|
|
@ -505,11 +508,10 @@ int ldap_int_sasl_close( LDAP *ld, LDAPConn *lc )
|
|||
sasl_conn_t *ctx = lc->lconn_sasl_ctx;
|
||||
|
||||
if( ctx != NULL ) {
|
||||
const void *callbacks;
|
||||
sasl_getprop( ctx, SASL_CALLBACK, &callbacks );
|
||||
sasl_dispose( &ctx );
|
||||
lc->lconn_sasl_ctx = NULL;
|
||||
LDAP_FREE( (void *)callbacks );
|
||||
LDAP_FREE( lc->lconn_sasl_cbs );
|
||||
lc->lconn_sasl_cbs = NULL;
|
||||
}
|
||||
|
||||
return LDAP_SUCCESS;
|
||||
|
|
|
|||
|
|
@ -189,6 +189,7 @@ typedef struct ldap_conn {
|
|||
#endif
|
||||
#ifdef HAVE_CYRUS_SASL
|
||||
void *lconn_sasl_ctx;
|
||||
void *lconn_sasl_cbs;
|
||||
#endif
|
||||
int lconn_refcnt;
|
||||
time_t lconn_lastused; /* time */
|
||||
|
|
|
|||
Loading…
Reference in a new issue