diff options
Diffstat (limited to 'nslcd/nsswitch.c')
-rw-r--r-- | nslcd/nsswitch.c | 29 |
1 files changed, 15 insertions, 14 deletions
diff --git a/nslcd/nsswitch.c b/nslcd/nsswitch.c index 2a5f124..56cb21b 100644 --- a/nslcd/nsswitch.c +++ b/nslcd/nsswitch.c @@ -32,10 +32,11 @@ #include "common.h" #include "log.h" -/* the cached value of whether shadow lookups use LDAP in nsswitch.conf */ +/* the cached value of whether shadow lookups use our associated + module in nsswitch.conf */ #define NSSWITCH_FILE "/etc/nsswitch.conf" #define CACHED_UNKNOWN 22 -static int cached_shadow_uses_nslcd = CACHED_UNKNOWN; +static int cached_shadow_uses_module = CACHED_UNKNOWN; static time_t cached_shadow_lastcheck = 0; #define CACHED_SHADOW_TIMEOUT (60) static time_t nsswitch_mtime = 0; @@ -44,12 +45,12 @@ static time_t nsswitch_mtime = 0; #define MAX_LINE_LENGTH 4096 /* check whether /etc/nsswitch.conf should be reloaded to update - cached_shadow_uses_nslcd */ + cached_shadow_uses_module */ void nsswitch_check_reload(void) { struct stat buf; time_t t; - if ((cached_shadow_uses_nslcd != CACHED_UNKNOWN) && + if ((cached_shadow_uses_module != CACHED_UNKNOWN) && ((t = time(NULL)) > (cached_shadow_lastcheck + CACHED_SHADOW_TIMEOUT))) { cached_shadow_lastcheck = t; @@ -57,14 +58,14 @@ void nsswitch_check_reload(void) { log_log(LOG_ERR, "stat(%s) failed: %s", NSSWITCH_FILE, strerror(errno)); /* trigger a recheck anyway */ - cached_shadow_uses_nslcd = CACHED_UNKNOWN; + cached_shadow_uses_module = CACHED_UNKNOWN; return; } /* trigger a recheck if file changed */ if (buf.st_mtime != nsswitch_mtime) { nsswitch_mtime = buf.st_mtime; - cached_shadow_uses_nslcd = CACHED_UNKNOWN; + cached_shadow_uses_module = CACHED_UNKNOWN; } } } @@ -128,14 +129,14 @@ static int has_service(const char *services, const char *service, return 0; } -static int shadow_uses_nslcd(void) +static int shadow_uses_module(const char *module_name) { FILE *fp; int lnr = 0; char linebuf[MAX_LINE_LENGTH]; const char *services; int shadow_found = 0; - int passwd_has_nslcd = 0; + int passwd_has_module = 0; /* open config file */ if ((fp = fopen(NSSWITCH_FILE, "r")) == NULL) { @@ -151,7 +152,7 @@ static int shadow_uses_nslcd(void) if (services != NULL) { shadow_found = 1; - if (has_service(services, "ldap", NSSWITCH_FILE, lnr)) + if (has_service(services, NSS_MODULE_NAME, NSSWITCH_FILE, lnr)) { fclose(fp); return 1; @@ -160,22 +161,22 @@ static int shadow_uses_nslcd(void) /* see if we have a passwd line */ services = find_db(linebuf, "passwd"); if (services != NULL) - passwd_has_nslcd = has_service(services, "ldap", NSSWITCH_FILE, lnr); + passwd_has_module = has_service(services, NSS_MODULE_NAME, NSSWITCH_FILE, lnr); } fclose(fp); if (shadow_found) return 0; - return passwd_has_nslcd; + return passwd_has_module; } /* check whether shadow lookups are configured to use nslcd */ int nsswitch_shadow_uses_nslcd(void) { - if (cached_shadow_uses_nslcd == CACHED_UNKNOWN) + if (cached_shadow_uses_module == CACHED_UNKNOWN) { log_log(LOG_INFO, "(re)loading %s", NSSWITCH_FILE); - cached_shadow_uses_nslcd = shadow_uses_nslcd(); + cached_shadow_uses_module = shadow_uses_module(NSS_MODULE_NAME); cached_shadow_lastcheck = time(NULL); } - return cached_shadow_uses_nslcd; + return cached_shadow_uses_module; } |