diff options
Diffstat (limited to 'src/providers/ldap/sdap_access.c')
-rw-r--r-- | src/providers/ldap/sdap_access.c | 29 |
1 files changed, 6 insertions, 23 deletions
diff --git a/src/providers/ldap/sdap_access.c b/src/providers/ldap/sdap_access.c index 9e9cfc9e3..537ea7193 100644 --- a/src/providers/ldap/sdap_access.c +++ b/src/providers/ldap/sdap_access.c @@ -530,10 +530,9 @@ static errno_t sdap_account_expired_rhds(struct pam_data *pd, bool nds_check_expired(const char *exp_time_str) { - char *end; - struct tm tm; time_t expire_time; time_t now; + errno_t ret; if (exp_time_str == NULL) { DEBUG(SSSDBG_TRACE_ALL, @@ -541,30 +540,14 @@ bool nds_check_expired(const char *exp_time_str) return false; } - memset(&tm, 0, sizeof(tm)); - - end = strptime(exp_time_str, "%Y%m%d%H%M%SZ", &tm); - if (end == NULL) { - DEBUG(SSSDBG_CRIT_FAILURE, - "NDS expire date [%s] invalid.\n", exp_time_str); - return true; - } - if (*end != '\0') { - DEBUG(SSSDBG_CRIT_FAILURE, - "NDS expire date [%s] contains extra characters.\n", - exp_time_str); - return true; - } - - expire_time = mktime(&tm); - if (expire_time == -1) { - DEBUG(SSSDBG_CRIT_FAILURE, - "mktime failed to convert [%s].\n", exp_time_str); + ret = sss_utc_to_time_t(exp_time_str, "%Y%m%d%H%M%SZ", + &expire_time); + if (ret != EOK) { + DEBUG(SSSDBG_MINOR_FAILURE, "sss_utc_to_time_t failed with %d:%s.\n", + ret, sss_strerror(ret)); return true; } - tzset(); - expire_time -= timezone; now = time(NULL); DEBUG(SSSDBG_TRACE_ALL, "Time info: tzname[0] [%s] tzname[1] [%s] timezone [%ld] " |