• Michael Paquier's avatar
    Fix out-of-bound memory access for interval -> char conversion · 7a397259
    Michael Paquier authored
    Using Roman numbers (via "RM" or "rm") for a conversion to calculate a
    number of months has never considered the case of negative numbers,
    where a conversion could easily cause out-of-bound memory accesses.  The
    conversions in themselves were not completely consistent either, as
    specifying 12 would result in NULL, but it should mean XII.
    
    This commit reworks the conversion calculation to have a more
    consistent behavior:
    - If the number of months and years is 0, return NULL.
    - If the number of months is positive, return the exact month number.
    - If the number of months is negative, do a backward calculation, with
    -1 meaning December, -2 November, etc.
    
    Reported-by: Theodor Arsenij Larionov-Trichkin
    Author: Julien Rouhaud
    Discussion: https://postgr.es/m/16953-f255a18f8c51f1d5@postgresql.org
    backpatch-through: 9.6
    7a397259
timestamp.out 85.7 KB