Commit e57f26c1 authored by Nick Mathewson's avatar Nick Mathewson 🤹
Browse files

Have correct_tm set tm_wday as well.

The tm_wday field had been left uninitialized, which was causing
some assertions to fail on Windows unit tests.

Fixes bug 18977.
parent 97c6e717
Loading
Loading
Loading
Loading

changes/bug18977

0 → 100644
+4 −0
Original line number Diff line number Diff line
  o Minor bugfixes (time handling):
    - When correcting a corrupt 'struct tm' value, fill in the tm_wday
      field. Otherwise, our unit tests crash on Windows.
      Fixes bug 18977; bugfix on 0.2.2.25-alpha.
+3 −0
Original line number Diff line number Diff line
@@ -2462,6 +2462,7 @@ correct_tm(int islocal, const time_t *timep, struct tm *resultbuf,
      r->tm_mon = 11;
      r->tm_mday = 31;
      r->tm_yday = 365;
      r->tm_wday = 6;
      r->tm_hour = 23;
      r->tm_min = 59;
      r->tm_sec = 59;
@@ -2479,6 +2480,7 @@ correct_tm(int islocal, const time_t *timep, struct tm *resultbuf,
      r->tm_mon = 0;
      r->tm_mday = 1;
      r->tm_yday = 1;
      r->tm_wday = 0;
      r->tm_hour = 0;
      r->tm_min = 0 ;
      r->tm_sec = 0;
@@ -2492,6 +2494,7 @@ correct_tm(int islocal, const time_t *timep, struct tm *resultbuf,
      r->tm_mon = 11;
      r->tm_mday = 31;
      r->tm_yday = 365;
      r->tm_wday = 6;
      r->tm_hour = 23;
      r->tm_min = 59;
      r->tm_sec = 59;
+2 −0
Original line number Diff line number Diff line
@@ -1460,6 +1460,7 @@ parse_iso_time(const char *cp, time_t *t)
  st_tm.tm_hour = hour;
  st_tm.tm_min = minute;
  st_tm.tm_sec = second;
  st_tm.tm_wday = 0; /* Should be ignored. */

  if (st_tm.tm_year < 70) {
    char *esc = esc_for_log(cp);
@@ -1517,6 +1518,7 @@ parse_http_time(const char *date, struct tm *tm)
  tm->tm_hour = (int)tm_hour;
  tm->tm_min = (int)tm_min;
  tm->tm_sec = (int)tm_sec;
  tm->tm_wday = 0; /* Leave this unset. */

  month[3] = '\0';
  /* Okay, now decode the month. */