diff options
author | Andreas Hansson <andreas.hansson@arm.com> | 2014-10-20 18:03:55 -0400 |
---|---|---|
committer | Andreas Hansson <andreas.hansson@arm.com> | 2014-10-20 18:03:55 -0400 |
commit | 6290f981940394a4768b566a6d55aa5e5ca5e839 (patch) | |
tree | 337cf915a15a7f18d80dacb44af3fb1778a2b73f | |
parent | a4a8568bd2e3300b5dc9d3deee5181a7db2a76c7 (diff) | |
download | gem5-6290f981940394a4768b566a6d55aa5e5ca5e839.tar.xz |
misc: Use gmtime for conversion to UTC to avoid getenv/setenv
This patch changes how we turn time into UTC. Previously we
manipulated the TZ environment variable, but this has issues as the
strings that are manipulated could be tainted (see e.g. CERT
ENV34-C). Now we simply rely on the built-in gmtime function and avoid
touching getenv/setenv all together.
-rw-r--r-- | src/base/time.cc | 15 | ||||
-rw-r--r-- | src/dev/sparc/dtod.cc | 13 |
2 files changed, 4 insertions, 24 deletions
diff --git a/src/base/time.cc b/src/base/time.cc index dd9e72a09..c265c1c47 100644 --- a/src/base/time.cc +++ b/src/base/time.cc @@ -150,18 +150,7 @@ sleep(const Time &time) time_t mkutctime(struct tm *time) { - time_t ret; - char *tz; - - tz = getenv("TZ"); - setenv("TZ", "", 1); - tzset(); - ret = mktime(time); - if (tz) - setenv("TZ", tz, 1); - else - unsetenv("TZ"); - tzset(); - return ret; + time_t local = mktime(time); + return mktime(gmtime(&local)); } diff --git a/src/dev/sparc/dtod.cc b/src/dev/sparc/dtod.cc index abbab2dee..0d57b1f83 100644 --- a/src/dev/sparc/dtod.cc +++ b/src/dev/sparc/dtod.cc @@ -53,17 +53,8 @@ DumbTOD::DumbTOD(const Params *p) : BasicPioDevice(p, 0x08) { struct tm tm = p->time; - char *tz; - - tz = getenv("TZ"); - setenv("TZ", "", 1); - tzset(); - todTime = mktime(&tm); - if (tz) - setenv("TZ", tz, 1); - else - unsetenv("TZ"); - tzset(); + time_t local = mktime(&tm); + todTime = mktime(gmtime(&local)); DPRINTFN("Real-time clock set to %s\n", asctime(&tm)); DPRINTFN("Real-time clock set to %d\n", todTime); |