From 99bace93881cbfd792c03baf23a56239cc1bf451 Mon Sep 17 00:00:00 2001 From: Mark Reynolds Date: Nov 14 2014 22:56:47 +0000 Subject: Ticket 47952 - PasswordAdminDN attribute is not properly returned to client Bug Description: Searching for "passwordAdminDN" in "cn=config" returns a garbage value. The internal value is stored in a Slapi_DN, but the pointer to the struct is returned instead of calling the "get function". Fix Description: Create a get function for passwordAdminDN setting, and set the config_get_and_set table entry so that we always call the "get function" https://fedorahosted.org/389/ticket/47952 Reviewed by: rmeggins(Thanks!) (cherry picked from commit c6e10746945262015d0080c7dd0e82b6c7130920) --- diff --git a/ldap/servers/slapd/libglobs.c b/ldap/servers/slapd/libglobs.c index 0e2a202..c68d912 100644 --- a/ldap/servers/slapd/libglobs.c +++ b/ldap/servers/slapd/libglobs.c @@ -412,8 +412,8 @@ static struct config_get_and_set { CONFIG_INT, NULL, DEFAULT_PW_GRACELIMIT}, {CONFIG_PW_ADMIN_DN_ATTRIBUTE, config_set_pw_admin_dn, NULL, 0, - (void**)&global_slapdFrontendConfig.pw_policy.pw_admin, - CONFIG_STRING, NULL, ""}, + NULL, + CONFIG_STRING, (ConfigGetFunc)config_get_pw_admin_dn, ""}, {CONFIG_ACCESSLOG_LOGROTATIONSYNCENABLED_ATTRIBUTE, NULL, log_set_rotationsync_enabled, SLAPD_ACCESS_LOG, (void**)&global_slapdFrontendConfig.accesslog_rotationsync_enabled, @@ -4801,6 +4801,19 @@ config_get_pagedsizelimit() { } char * +config_get_pw_admin_dn() +{ + slapdFrontendConfig_t *slapdFrontendConfig = getFrontendConfig(); + char *retVal; + + CFG_LOCK_READ(slapdFrontendConfig); + retVal = slapi_ch_strdup(slapi_sdn_get_dn(slapdFrontendConfig->pw_policy.pw_admin)); + CFG_UNLOCK_READ(slapdFrontendConfig); + + return retVal; +} + +char * config_get_pw_storagescheme() { slapdFrontendConfig_t *slapdFrontendConfig = getFrontendConfig(); char *retVal = 0; diff --git a/ldap/servers/slapd/proto-slap.h b/ldap/servers/slapd/proto-slap.h index c987b4a..eb926c5 100644 --- a/ldap/servers/slapd/proto-slap.h +++ b/ldap/servers/slapd/proto-slap.h @@ -502,6 +502,7 @@ int config_get_groupevalnestlevel(); struct berval **config_get_defaultreferral(); char *config_get_userat(); int config_get_timelimit(); +char *config_get_pw_admin_dn(); char* config_get_useroc(); char *config_get_accesslog(); char *config_get_errorlog();