summaryrefslogtreecommitdiffstats
path: root/src/db
diff options
context:
space:
mode:
authorPavel Březina <pbrezina@redhat.com>2014-01-29 12:56:08 +0100
committerJakub Hrozek <jhrozek@redhat.com>2014-01-29 17:25:15 +0100
commite6f4dbf8474e928ca7da33d6be18e94cbc66a5de (patch)
treedccd2469495a03f1442594aba79dbdfbe8e22d39 /src/db
parentb4ffa4d19e912740af6df3c1a4fabcea69729885 (diff)
downloadsssd-e6f4dbf8474e928ca7da33d6be18e94cbc66a5de.tar.gz
sssd-e6f4dbf8474e928ca7da33d6be18e94cbc66a5de.tar.xz
sssd-e6f4dbf8474e928ca7da33d6be18e94cbc66a5de.zip
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
Diffstat (limited to 'src/db')
-rw-r--r--src/db/sysdb_sudo.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/src/db/sysdb_sudo.c b/src/db/sysdb_sudo.c
index d729db187..7253a3ab4 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);