[HN Gopher] Microsoft confirms Exchange Year 2022 problem
___________________________________________________________________
 
Microsoft confirms Exchange Year 2022 problem
 
Author : niuzeta
Score  : 122 points
Date   : 2022-01-02 18:08 UTC (4 hours ago)
 
web link (borncity.com)
w3m dump (borncity.com)
 
| cpeterso wrote:
| Summary of the bug: Exchange tried to store "2201010001" (i.e.
| date time '22-01-01 00:00) in a 32-bit signed int, but INT_MAX is
| 2147483647 so the result is a negative number.
 
  | 29athrowaway wrote:
  | Or std::numeric_limits::max()
 
  | grishka wrote:
  | Why is anyone using _two-digit years_ anywhere at all? This
  | approach has already caused a lot of trouble 22 years ago. Do
  | people learn nothing from their past mistakes?
 
  | phkahler wrote:
  | Oh they should have used an UNSIGNED number. /sarcasm
 
  | sdoering wrote:
  | Damn. This reminds me of the alleged 'Nuclear Gandhi' [1].
  | 
  | Or the Swiss railway axle counter [2].
  | 
  | [1]: https://en.wikipedia.org/wiki/Nuclear_Gandhi
  | 
  | [2]:
  | https://www.reddit.com/r/programming/comments/4sco75/the_axl...
 
  | hn_throwaway_99 wrote:
  | Storing dates in YYMMDDHHMM format but _then_ saving that as an
  | int seems like such an ... odd choice. Curious to how /why that
  | decision was made, or if it was perhaps unintentional but
  | nobody noticed before (e.g. comparison was done on those date
  | values but nobody realized that they were for some reason
  | coerced to ints, and nobody noticed because it still worked as
  | expected).
 
| dang wrote:
| Submitters: please don't editorialize titles. This is in the site
| guidelines: https://news.ycombinator.com/newsguidelines.html.
| We've reverted the title now. (Submitted title was "Y2K problem
| came back with vengeance in 2022".)
 
  | indigodaddy wrote:
  | Only the mods get to do that
 
    | DoctorOW wrote:
    | Do the mods do that?
 
      | pc86 wrote:
      | I don't think it's particularly widespread, and if _anyone_
      | can do it it makes sense for mods to have that power.
      | However I have on numerous times (in absolute terms) seen
      | mods change titles to something more informative than the
      | original. I wouldn 't necessarily call that
      | "editorializing," though.
 
        | hn_throwaway_99 wrote:
        | There are mods, plural? I.e. someone else besides dang?
 
| sharmin123 wrote:
 
| mproud wrote:
| So many spelling mistakes!
 
  | zinekeller wrote:
  | Originally in German, this is a best-effort translation by the
  | author.
 
| ocdtrekkie wrote:
| I love the solution: They changed their antimalware definition
| files to December 33rd, 2021, until they have a more substantial
| patch ready. The instructions are just to basically clear out the
| existing files and re-download to get rid of that pesky 2022
| year.
 
  | axjmc wrote:
  | Perhaps switch to unsigned int until a sane solution is
  | implemented. Should give them a couple thousand years to work
  | with.
 
    | Fatnino wrote:
    | No, it just kicks the can down the road another 22 years.
 
      | axjmc wrote:
      | At first glance thought they were using yyyy format, it's
      | actually only yy. You are correct.
 
    | ocdtrekkie wrote:
    | It's pretty likely they'll change the data type somehow, but
    | I guess the question is how fast they can test how that
    | interacts with everywhere that might encounter that variable.
    | Presumably the hack they implemented here buys them at least
    | a month or two to test a real code change.
 
| MauranKilom wrote:
| Wow, what a bug.
| 
| The malware scanning service of MS Exchange crashes, because it
| treats a yyMMddHHmm timestamp as a signed integer when verifying
| a signature file.
| 
| Turns out that 2201010001 is negative when treated as a 32 bit
| integer (the greatest positive one is 2147483647, and 2021 had
| fewer than 47 months).
| 
| I can only assume that somebody wrote that "timestamp string as
| integer" code, checked that it worked correctly (at the time) and
| then just assumed they must be good on data type range.
 
  | [deleted]
 
  | crehn wrote:
  | Surprised this sort of hack would even pass code review.
 
    | hn_throwaway_99 wrote:
    | Really? Billions of lines of code is reviewed every year at
    | Microsoft. Not hard for me to imagine that this was coerced
    | to an int somewhere (perhaps even unintentionally) that was
    | non-obvious during a code review.
 
| edoceo wrote:
| I wouldn't call one bug, in one software a "vengeance". Yea, it's
| widly used, and affected lots of mail but was very limited and
| had a trivial work-around.
| 
| But, the Y2K issue, back then, was in 1000s of software from
| 1000s of vendors. The only Y2K affect I remember was the first
| issue of 2600 in 2000.
 
  | Fatnino wrote:
  | I remember the laser-tag place near Google (now long gone)
  | would print out your scorecard with a date like 11/24/102
 
    | throwawayboise wrote:
    | Yeah I saw that sort of thing frequently on smaller websites
    | back then as well.
 
  | laumars wrote:
  | It also wasn't just the tick over to the year 2000. It was
  | various dates and times around the year 2000 (leap years et
  | al). But the Jan 01 2000 problem was the biggest and most high
  | profile.
 
| greenyoda wrote:
| This bug was extensively discussed yesterday:
| 
|  _Microsoft Exchange stops passing mail due to bug on 1 /1/22
| (677 points / 355 comments)_
| 
| https://news.ycombinator.com/item?id=29756714
 
___________________________________________________________________
(page generated 2022-01-02 23:00 UTC)