From f7fcb521f9c7b41bdf27fd1be691e097706f961a Mon Sep 17 00:00:00 2001 From: Mark Reynolds Date: Nov 14 2014 22:57:25 +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 1ce1fea..806b6fe 100644 --- a/ldap/servers/slapd/libglobs.c +++ b/ldap/servers/slapd/libglobs.c @@ -411,8 +411,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, @@ -4737,6 +4737,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 b8d563d..6328a74 100644 --- a/ldap/servers/slapd/proto-slap.h +++ b/ldap/servers/slapd/proto-slap.h @@ -500,6 +500,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();