diff options
author | Pavel Reichl <preichl@redhat.com> | 2015-03-16 06:38:43 -0400 |
---|---|---|
committer | Jakub Hrozek <jhrozek@redhat.com> | 2015-03-23 12:06:59 +0100 |
commit | 0ec41ab7d3fbb021967de16ea000c69dcedf7cb5 (patch) | |
tree | 5eda4c22f19e5f6e696da1ce5b0974524a8a828e /src | |
parent | 50b8a36b0932a510e825ed1ad8103f81ead2b7d8 (diff) | |
download | sssd-0ec41ab7d3fbb021967de16ea000c69dcedf7cb5.tar.gz sssd-0ec41ab7d3fbb021967de16ea000c69dcedf7cb5.tar.xz sssd-0ec41ab7d3fbb021967de16ea000c69dcedf7cb5.zip |
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 <jhrozek@redhat.com>
Diffstat (limited to 'src')
-rw-r--r-- | src/providers/ldap/ldap_auth.c | 30 | ||||
-rw-r--r-- | src/tests/cmocka/test_ldap_auth.c | 4 |
2 files changed, 8 insertions, 26 deletions
diff --git a/src/providers/ldap/ldap_auth.c b/src/providers/ldap/ldap_auth.c index 42899fd0e..6ee570bba 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 814178eb0..925fb0fa5 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); |