diff options
-rw-r--r-- | ldap/servers/slapd/main.c | 34 |
1 files changed, 20 insertions, 14 deletions
diff --git a/ldap/servers/slapd/main.c b/ldap/servers/slapd/main.c index d118a04b..2ad53b70 100644 --- a/ldap/servers/slapd/main.c +++ b/ldap/servers/slapd/main.c @@ -266,23 +266,29 @@ fix_ownership() slapdFrontendConfig_t *slapdFrontendConfig = getFrontendConfig(); - if (slapdFrontendConfig->localuser != NULL) { - if (slapdFrontendConfig->localuserinfo == NULL) { - pw = getpwnam( slapdFrontendConfig->localuser ); - if ( NULL == pw ) { - LDAPDebug(LDAP_DEBUG_ANY, - "Unable to find user %s in system account database, " - "errno %d (%s)\n", - slapdFrontendConfig->localuser, errno, strerror(errno)); - return; - } - slapdFrontendConfig->localuserinfo = - (struct passwd *)slapi_ch_malloc(sizeof(struct passwd)); - memcpy(slapdFrontendConfig->localuserinfo, pw, sizeof(struct passwd)); + if (slapdFrontendConfig->localuser == NULL) { + LDAPDebug(LDAP_DEBUG_ANY, + "Local user missing from frontend configuration\n", + 0, 0, 0); + return; + } + + if (slapdFrontendConfig->localuserinfo == NULL) { + pw = getpwnam( slapdFrontendConfig->localuser ); + if ( NULL == pw ) { + LDAPDebug(LDAP_DEBUG_ANY, + "Unable to find user %s in system account database, " + "errno %d (%s)\n", + slapdFrontendConfig->localuser, errno, strerror(errno)); + return; } - pw = slapdFrontendConfig->localuserinfo; + slapdFrontendConfig->localuserinfo = + (struct passwd *)slapi_ch_malloc(sizeof(struct passwd)); + memcpy(slapdFrontendConfig->localuserinfo, pw, sizeof(struct passwd)); } + pw = slapdFrontendConfig->localuserinfo; + /* config directory needs to be owned by the local user */ if (slapdFrontendConfig->configdir) { chown_dir_files(slapdFrontendConfig->configdir, pw, PR_FALSE); |