From 98a8b74d534475d4e9e64ff846e57c1940f48d7f Mon Sep 17 00:00:00 2001 From: Pierangelo Masarati Date: Tue, 18 Aug 2009 18:47:56 +0000 Subject: [PATCH] expose SASL_USERNAME when it makes sense (EXTERN needs work, much like SASL_SSL) (ITS#6257) --- include/ldap.h | 1 + libraries/libldap/cyrus.c | 26 ++++++++++++++++++++++++++ 2 files changed, 27 insertions(+) diff --git a/include/ldap.h b/include/ldap.h index ca748a23a0..5cda775cfd 100644 --- a/include/ldap.h +++ b/include/ldap.h @@ -186,6 +186,7 @@ LDAP_BEGIN_DECL #define LDAP_OPT_X_SASL_MAXBUFSIZE 0x6109 #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 */ /* 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 57d0304313..c2a4b26289 100644 --- a/libraries/libldap/cyrus.c +++ b/libraries/libldap/cyrus.c @@ -1013,6 +1013,31 @@ ldap_int_sasl_get_option( LDAP *ld, int option, void *arg ) *(int *)arg = (int) LDAP_BOOL_GET(&ld->ld_options, LDAP_BOOL_SASL_NOCANON ); break; + case LDAP_OPT_X_SASL_USERNAME: { + int sc; + char *username; + sasl_conn_t *ctx; + + if( ld->ld_defconn == NULL ) { + return -1; + } + + ctx = ld->ld_defconn->lconn_sasl_sockctx; + + if ( ctx == NULL ) { + return -1; + } + + sc = sasl_getprop( ctx, SASL_USERNAME, + (SASL_CONST void **)(char **) &username ); + + if ( sc != SASL_OK ) { + return -1; + } + + *(char **)arg = username; + } break; + case LDAP_OPT_X_SASL_SECPROPS: /* this option is write only */ return -1; @@ -1034,6 +1059,7 @@ ldap_int_sasl_set_option( LDAP *ld, int option, void *arg ) switch ( option ) { case LDAP_OPT_X_SASL_SSF: + case LDAP_OPT_X_SASL_USERNAME: /* This option is read-only */ return -1; -- 2.39.5