diff options
Diffstat (limited to 'src/interfaces')
-rw-r--r-- | src/interfaces/ecpg/pgtypeslib/interval.c | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/src/interfaces/ecpg/pgtypeslib/interval.c b/src/interfaces/ecpg/pgtypeslib/interval.c index efa775de15a..6d0926882e8 100644 --- a/src/interfaces/ecpg/pgtypeslib/interval.c +++ b/src/interfaces/ecpg/pgtypeslib/interval.c @@ -1036,6 +1036,9 @@ recalc: static int tm2interval(struct tm * tm, fsec_t fsec, interval * span) { + if ((double)tm->tm_year * MONTHS_PER_YEAR + tm->tm_mon > INT_MAX || + (double)tm->tm_year * MONTHS_PER_YEAR + tm->tm_mon < INT_MIN) + return -1; span->month = tm->tm_year * MONTHS_PER_YEAR + tm->tm_mon; #ifdef HAVE_INT64_TIMESTAMP span->time = (((((((tm->tm_mday * INT64CONST(24)) + |