From 9ba6f33ee78e1c15847f11b8f75f8a8413034875 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pawe=C5=82=20Po=C5=82awski?= Date: Tue, 3 Dec 2019 04:13:53 +0100 Subject: [PATCH] sysdb_sudo: Enable LDAP time format compatibility MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit LDAP specification allows to ommit seconds and minutes in time border definition. In that case they defaults to zeros. Current sssd.sudo implementation requires precision up to seconds in time definition. This commit allows to lower the precision up to hours. Resolves: https://pagure.io/SSSD/sssd/issue/4118 Reviewed-by: Pavel Březina --- src/db/sysdb_sudo.c | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/src/db/sysdb_sudo.c b/src/db/sysdb_sudo.c index 59d6824c0..18088b017 100644 --- a/src/db/sysdb_sudo.c +++ b/src/db/sysdb_sudo.c @@ -55,6 +55,22 @@ static errno_t sysdb_sudo_convert_time(const char *str, time_t *unix_time) "%Y%m%d%H%M%S.0%z", "%Y%m%d%H%M%S,0Z", "%Y%m%d%H%M%S,0%z", + /* LDAP specification says that minutes and seconds + might be omitted and in that case these are meant + to be treated as zeros [1]. + */ + "%Y%m%d%H%MZ", /* Discard seconds */ + "%Y%m%d%H%M%z", + "%Y%m%d%H%M.0Z", + "%Y%m%d%H%M.0%z", + "%Y%m%d%H%M,0Z", + "%Y%m%d%H%M,0%z", + "%Y%m%d%HZ", /* Discard minutes and seconds*/ + "%Y%m%d%H%z", + "%Y%m%d%H.0Z", + "%Y%m%d%H.0%z", + "%Y%m%d%H,0Z", + "%Y%m%d%H,0%z", NULL}; for (format = formats; *format != NULL; format++) { -- 2.20.1