• Tatiana A. Nurnberg's avatar
    Bug#41470: DATE_FORMAT() crashes the complete server with a valid date · c42892d6
    Tatiana A. Nurnberg authored
    Passing dubious "year zero" in non-zero date (not "0000-00-00") could
    lead to negative value for year internally, while variable was unsigned.
    This led to Really Bad Things further down the line.
    
    Now doing calculations with signed type for year internally.
    
    mysql-test/r/date_formats.result:
      show that very early dates no longer break DATE_FORMAT(..., '%W')
    mysql-test/t/date_formats.test:
      show that very early dates no longer break DATE_FORMAT(..., '%W')
    sql-common/my_time.c:
      Allow negative years numbers internally while keeping the interface.
      otherwise if somebody passes year zero for whatever reason, we'll
      get an integer wrap-around that can lead to Really Bad Things further
      down the line. Note that amusingly, calcday_nr() already had signed
      output and calc_weekday() already had signed input, anyway.
    c42892d6
date_formats.result 25.5 KB