From c70cab0083ace209bf7a1861fe755c18edf332e2 Mon Sep 17 00:00:00 2001 From: Quanah Gibson-Mount <quanah@openldap.org> Date: Wed, 26 Aug 2009 00:52:16 +0000 Subject: [PATCH] ITS#6257 --- CHANGES | 1 + include/ldap.h | 1 + libraries/libldap/cyrus.c | 26 ++++++++++++++++++++++++++ 3 files changed, 28 insertions(+) diff --git a/CHANGES b/CHANGES index 3927a82352..08209d4069 100644 --- a/CHANGES +++ b/CHANGES @@ -3,6 +3,7 @@ OpenLDAP 2.4 Change Log OpenLDAP 2.4.18 Engineering Fixed client tools common options (ITS#6049) Fixed liblber speed and other problems (ITS#6215) + Added libldap option for SASL_USERNAME (ITS#6257) Fixed libldap error parsing (ITS#6197) Fixed libldap native getpass usage (ITS#4643) Fixed libldap tls_check_hostname for OpenSSL and MozNSS (ITS#6239) 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..5591682746 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_authctx; + + 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; -- GitLab