rem: sprintf (idlestr, "%.6s", idle_string (last_change));
add: sprintf (idlestr, "%.*s", IDLESTR_LEN, idle_string (last_change, boottime));
context: print_user (const STRUCT_UTMP *utmp_ent){  struct stat stats;  time_t last_change;  char mesg;  char idlestr[IDLESTR_LEN];  static char *hoststr;  static size_t hostlen;#define DEV_DIR_WITH_TRAILING_SLASH "/dev/"#define DEV_DIR_LEN (sizeof (DEV_DIR_WITH_TRAILING_SLASH) - 1)  char line[sizeof (utmp_ent->ut_line) + DEV_DIR_LEN + 1];  PIDSTR_DECL_AND_INIT (pidstr, utmp_ent);  /* Copy ut_line into LINE, prepending `/dev/' if ut_line is not     already an absolute pathname.  Some system may put the full,     absolute pathname in ut_line.  */  if (utmp_ent->ut_line[0] == '/')    {      strncpy (line, utmp_ent->ut_line, sizeof (utmp_ent->ut_line));      line[sizeof (utmp_ent->ut_line)] = '\0';    }  else    {      strcpy (line, DEV_DIR_WITH_TRAILING_SLASH);      strncpy (line + DEV_DIR_LEN, utmp_ent->ut_line,	       sizeof (utmp_ent->ut_line));      line[DEV_DIR_LEN + sizeof (utmp_ent->ut_line)] = '\0';    }  if (stat (line, &stats) == 0)    {      mesg = (stats.st_mode & S_IWGRP) ? '+' : '-';      last_change = stats.st_atime;    }  else    {      mesg = '?';      last_change = 0;    }  if (last_change)    sprintf (idlestr, "%.6s", idle_string (last_change));  else    sprintf (idlestr, "  ?");#if HAVE_UT_HOST  if (utmp_ent->ut_host[0])    {      char ut_host[sizeof (utmp_ent->ut_host) + 1];      char *host = 0, *display = 0;      /* Copy the host name into UT_HOST, and ensure it's nul terminated. */      strncpy (ut_host, utmp_ent->ut_host, (int) sizeof (utmp_ent->ut_host));      ut_host[sizeof (utmp_ent->ut_host)] = '\0';      /* Look for an X display.  */      display = strrchr (ut_host, ':');      if (display)	*display++ = '\0';      if (*ut_host && do_lookup)	{	  /* See if we can canonicalize it.  */	  host = canon_host (ut_host);	}      if (! host)	host = ut_host;      if (display)	{	  if (hostlen < strlen (host) + strlen (display) + 4)	    {	      hostlen = strlen (host) + strlen (display) + 4;	      hoststr = (char *) realloc (hoststr, hostlen);	    }	  sprintf (hoststr, "(%s:%s)", host, display);	}      else	{	  if (hostlen < strlen (host) + 3)	    {	      hostlen = strlen (host) + 3;	      hoststr = (char *) realloc (hoststr, hostlen);	    }	  sprintf (hoststr, "(%s)", host);	}    }  else    {      if (hostlen < 1)	{	  hostlen = 1;	  hoststr = (char *) realloc (hoststr, hostlen);	}      stpcpy (hoststr, "");    }#endif  print_line (UT_USER (utmp_ent), mesg, utmp_ent->ut_line,	      time_string (utmp_ent), idlestr, pidstr,	      hoststr ? hoststr : "", "");}