From 0ec41ab7d3fbb021967de16ea000c69dcedf7cb5 Mon Sep 17 00:00:00 2001 From: Pavel Reichl Date: Mon, 16 Mar 2015 06:38:43 -0400 Subject: ldap: refactor check_pwexpire_kerberos to use util func Refactor check_pwexpire_kerberos() to use utility function sss_utc_to_time_t(). Modify test to handle new error code ERR_TIMESPEC_NOT_SUPPORTED Reviewed-by: Jakub Hrozek --- src/providers/ldap/ldap_auth.c | 30 ++++++------------------------ src/tests/cmocka/test_ldap_auth.c | 4 ++-- 2 files changed, 8 insertions(+), 26 deletions(-) (limited to 'src') diff --git a/src/providers/ldap/ldap_auth.c b/src/providers/ldap/ldap_auth.c index 42899fd0..6ee570bb 100644 --- a/src/providers/ldap/ldap_auth.c +++ b/src/providers/ldap/ldap_auth.c @@ -83,36 +83,18 @@ static errno_t check_pwexpire_kerberos(const char *expire_date, time_t now, struct pam_data *pd, int pwd_exp_warning) { - char *end; - struct tm tm; time_t expire_time; int expiration_warning; int ret = ERR_INTERNAL; - memset(&tm, 0, sizeof(tm)); - - end = strptime(expire_date, "%Y%m%d%H%M%SZ", &tm); - if (end == NULL) { - DEBUG(SSSDBG_CRIT_FAILURE, - "Kerberos expire date [%s] invalid.\n", expire_date); - return EINVAL; - } - if (*end != '\0') { - DEBUG(SSSDBG_CRIT_FAILURE, - "Kerberos expire date [%s] contains extra characters.\n", - expire_date); - return EINVAL; - } - - expire_time = mktime(&tm); - if (expire_time == -1) { - DEBUG(SSSDBG_CRIT_FAILURE, - "mktime failed to convert [%s].\n", expire_date); - return EINVAL; + ret = sss_utc_to_time_t(expire_date, "%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 ret; } - tzset(); - expire_time -= timezone; DEBUG(SSSDBG_TRACE_ALL, "Time info: tzname[0] [%s] tzname[1] [%s] timezone [%ld] " "daylight [%d] now [%ld] expire_time [%ld].\n", tzname[0], diff --git a/src/tests/cmocka/test_ldap_auth.c b/src/tests/cmocka/test_ldap_auth.c index 814178eb..925fb0fa 100644 --- a/src/tests/cmocka/test_ldap_auth.c +++ b/src/tests/cmocka/test_ldap_auth.c @@ -58,11 +58,11 @@ static void test_pwexpire_krb(void **state) ret = check_pwexpire_policy(type, (void*) tc->invalid_longer_format, NULL, 0); - assert_true(ret == EINVAL); + assert_true(ret == ERR_TIMESPEC_NOT_SUPPORTED); ret = check_pwexpire_policy(type, (void*) tc->invalid_format, NULL, 0); - assert_true(ret == EINVAL); + assert_true(ret == ERR_TIMESPEC_NOT_SUPPORTED); ret = check_pwexpire_policy(type, (void*) tc->past_time, NULL, 0); -- cgit