diff options
author | Gleb Natapov <gleb@redhat.com> | 2011-11-06 18:00:22 +0200 |
---|---|---|
committer | Anthony Liguori <aliguori@us.ibm.com> | 2011-11-07 10:57:37 -0600 |
commit | f54c556c08c57a317ad54f5d2d9ad549b931cda2 (patch) | |
tree | 293870306848da862733cd30edbf52995d5ee12f /vl.c | |
parent | 47113ab6b8c5659ad94c69aacca572f731ebb0ac (diff) |
qemu_timedate_diff() shouldn't modify its argument.
The caller of qemu_timedate_diff() does not expect that tm it passes to
the function will be modified, but mktime() is destructive and modifies
its argument. Pass a copy of tm to it and set tm_isdst so that mktime()
will not rely on it since its value may be outdated.
Signed-off-by: Gleb Natapov <gleb@redhat.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
Diffstat (limited to 'vl.c')
-rw-r--r-- | vl.c | 7 |
1 files changed, 5 insertions, 2 deletions
@@ -460,8 +460,11 @@ int qemu_timedate_diff(struct tm *tm) if (rtc_date_offset == -1) if (rtc_utc) seconds = mktimegm(tm); - else - seconds = mktime(tm); + else { + struct tm tmp = *tm; + tmp.tm_isdst = -1; /* use timezone to figure it out */ + seconds = mktime(&tmp); + } else seconds = mktimegm(tm) + rtc_date_offset; |