>Microsoft Exchange on-premise servers cannot deliver email starting on January 1st, 2022, due to a "Year 2022" bug in the FIP-FS anti-malware scanning engine. > >Starting with Exchange Server 2013, Microsoft enabled the FIP-FS anti-spam and anti-malware scanning engine by default to protect users from malicious email. >...
> this is caused by Microsoft using a signed int32 variable to store the value of a date, which has a maximum value of 2,147,483,647
This is basically a Y2K / Y2K32 bug. We’ve known such things could happen since the late 1990s, so I’m really surprised that #Microsoft didn’t use a wider datatype (int64 at least).
From what I can tell, they were using the decimal digits of the 32-bit number as a sort of BCD, with the base10 digits representing portions of the date. The example used is "the new date value of 2,201,010,001 is over the max value of 'long' int32 being 2,147,483,647". So, YY MMDDHHMM ?
What an extraordinarily stupid way to represent a date.
what's most incredible about this date representation is that it was introduced after Y2K. it wouldn't have worked up to [19]99 think about it. someone implemented that after all the many years of preparation and patching decades-old systems for Y2K, knowing (or, worse, without realizing) that it had at most a couple of decades of use. how screwy and irresponsible is that?
>And how did Microsoft fix this so quickly, when most things Microsoft does takes months or sometimes even years? Ahhhh... they punted: Microsoft released a PowerShell-based script called “Reset-ScanEngineVersion.ps1” which needed to be run on each Exchange mailbox server used for downloading antimalware updates. What does the little PowerShell script do? It adjusts the date back to 21 12 33 0001. > >Yes, that’s right. In Redmond, New Years has been delayed... and December has 33 days.