summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorPavel Reichl <preichl@redhat.com>2015-03-16 06:38:43 -0400
committerJakub Hrozek <jhrozek@redhat.com>2015-03-23 12:06:59 +0100
commit0ec41ab7d3fbb021967de16ea000c69dcedf7cb5 (patch)
tree5eda4c22f19e5f6e696da1ce5b0974524a8a828e /src
parent50b8a36b0932a510e825ed1ad8103f81ead2b7d8 (diff)
downloadsssd-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.c30
-rw-r--r--src/tests/cmocka/test_ldap_auth.c4
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);