diff -ru sysvinit-2.86/src/utmpdump.c sysvinit-2.86.foo/src/utmpdump.c --- sysvinit-2.86/src/utmpdump.c 2000-09-12 16:14:24.000000000 -0500 +++ sysvinit-2.86.foo/src/utmpdump.c 2008-12-08 15:37:51.000000000 -0500 @@ -81,18 +81,20 @@ time_t strtotime(const char *s_time) { - struct tm *tm = malloc(sizeof(*tm)); + struct tm tm; + + memset(&tm, '\0', sizeof(struct tm)); if (s_time[0] == ' ' || s_time[0] == '\0') return (time_t)0; - strptime(s_time, "%a %b %d %T %Y", tm); + strptime(s_time, "%a %b %d %T %Y", &tm); /* Cheesy way of checking for DST */ if (s_time[26] == 'D') - tm->tm_isdst = 1; + tm.tm_isdst = 1; - return mktime(tm); + return mktime(&tm); } #define cleanse(x) xcleanse(x, sizeof(x))