From 2dd75cf206f8bcd35c3e7784a4094a1b43b41347 Mon Sep 17 00:00:00 2001 From: Howard Chu Date: Thu, 13 May 2010 06:08:21 +0000 Subject: [PATCH] Support option SASL_GSS_CREDS --- include/ldap.h | 1 + libraries/libldap/cyrus.c | 34 ++++++++++++++++++++++++++++++++++ 2 files changed, 35 insertions(+) diff --git a/include/ldap.h b/include/ldap.h index 7021146c2a..5c05d58b40 100644 --- a/include/ldap.h +++ b/include/ldap.h @@ -187,6 +187,7 @@ LDAP_BEGIN_DECL #define LDAP_OPT_X_SASL_MECHLIST 0x610a /* read-only */ #define LDAP_OPT_X_SASL_NOCANON 0x610b #define LDAP_OPT_X_SASL_USERNAME 0x610c /* read-only */ +#define LDAP_OPT_X_SASL_GSS_CREDS 0x610d /* OpenLDAP GSSAPI options */ #define LDAP_OPT_X_GSSAPI_DO_NOT_FREE_CONTEXT 0x6200 diff --git a/libraries/libldap/cyrus.c b/libraries/libldap/cyrus.c index 5843f0c08e..9e5de05690 100644 --- a/libraries/libldap/cyrus.c +++ b/libraries/libldap/cyrus.c @@ -1042,6 +1042,23 @@ ldap_int_sasl_get_option( LDAP *ld, int option, void *arg ) /* this option is write only */ return -1; + case LDAP_OPT_X_SASL_GSS_CREDS: { + sasl_conn_t *ctx; + int sc; + + if ( ld->ld_defconn == NULL ) + return -1; + + ctx = ld->ld_defconn->lconn_sasl_authctx; + if ( ctx == NULL ) + return -1; + + sc = sasl_getprop( ctx, SASL_GSS_CREDS, arg ); + if ( sc != SASL_OK ) + return -1; + } + break; + default: return -1; } @@ -1124,6 +1141,23 @@ ldap_int_sasl_set_option( LDAP *ld, int option, void *arg ) return sc == LDAP_SUCCESS ? 0 : -1; } + case LDAP_OPT_X_SASL_GSS_CREDS: { + sasl_conn_t *ctx; + int sc; + + if ( ld->ld_defconn == NULL ) + return -1; + + ctx = ld->ld_defconn->lconn_sasl_authctx; + if ( ctx == NULL ) + return -1; + + sc = sasl_setprop( ctx, SASL_GSS_CREDS, arg ); + if ( sc != SASL_OK ) + return -1; + } + break; + default: return -1; }