From 1cab8aa177b12870c2b05d5d9d029906c85125a9 Mon Sep 17 00:00:00 2001 From: Pavel Březina Date: Wed, 29 Jan 2014 12:56:08 +0100 Subject: sudo: memset tm when converting time attributes strptime() which is used to parse LDAP time value does not initialize all fields of tm structure (especially tm_isdst). This results in random behavior - when the tm is converted into timestamp via mktime(), the result depends on current value of tm_isdst. Resolves: https://fedorahosted.org/sssd/ticket/2213 --- src/db/sysdb_sudo.c | 2 ++ 1 file changed, 2 insertions(+) (limited to 'src/db') diff --git a/src/db/sysdb_sudo.c b/src/db/sysdb_sudo.c index 4e98b5b35..ceaecbd26 100644 --- a/src/db/sysdb_sudo.c +++ b/src/db/sysdb_sudo.c @@ -56,6 +56,8 @@ static errno_t sysdb_sudo_convert_time(const char *str, time_t *unix_time) NULL}; for (format = formats; *format != NULL; format++) { + /* strptime() may leave some fields uninitialized */ + memset(&tm, 0, sizeof(struct tm)); tret = strptime(str, *format, &tm); if (tret != NULL && *tret == '\0') { *unix_time = mktime(&tm); -- cgit