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

Re: GSSAPI (SASL) + LDAP



Le jeudi 09 fÃvrier 2012 Ã 17:21 -0600, Dan White a Ãcrit :
> On 02/09/12 17:15 -0500, Daniel Savard wrote:
(...)
> 
> This could be a libsasl2 problem. What version of cyrus sasl do you have
> installed, and what kerberos library/version is it compiled against?
> 
> If you're running libsasl2 > 2.1.23, see if either of these apply to you:
> 
> https://bugzilla.cyrusimap.org/show_bug.cgi?id=3480
> https://bugzilla.cyrusimap.org/show_bug.cgi?id=3445
> 

MIT Kerberos 1.9.2-r2
Cyrus-Sasl 2.1.23-r6
OpenLDAP 2.4.24

Linux distro: Gentoo

Code fragment from plugins/gssapi.c compared to bug 3445 and its patch:

    if (output_token->value && output) {
        int len;

        ret = _plug_buf_alloc(text->utils, &(text->encode_buf),
                              &(text->encode_buf_len),
output_token->length + 4);

        if (ret != SASL_OK) {
            GSS_LOCK_MUTEX(text->utils);
            gss_release_buffer(&min_stat, output_token);
            GSS_UNLOCK_MUTEX(text->utils);
            return ret;
        }

        len = htonl(output_token->length);
        memcpy(text->encode_buf, &len, 4);
        memcpy(text->encode_buf + 4, output_token->value,
output_token->length);
    }

This one seems correct. And code fragment compared to patch for bug
3480:

        /* Setup req_flags properly */
        req_flags = GSS_C_MUTUAL_FLAG | GSS_C_SEQUENCE_FLAG;
        if(params->props.max_ssf > params->external_ssf) {
            /* We are requesting a security layer */
            req_flags |= GSS_C_INTEG_FLAG;
            /* Any SSF bigger than 1 is confidentiality. */
            /* Let's check if the client of the API requires
confidentiality,
               and it wasn't already provided by an external layer */

Seems correct too.

-- 
Daniel Savard