From 8118a7c30e02b96a9dde9da590892c498681227f Mon Sep 17 00:00:00 2001 From: Eike Rathke Date: Thu, 9 Jun 2016 14:43:44 +0200 Subject: Resolves: tdf#100285 EASTERSUNDAY() check valid year between 1583 and 9956 Change-Id: I4b25f1eb8e3cf0236b69607bb9ab9b4c57ae918a (cherry picked from commit 2c08ec226e771de10c8863b7f1cda016fea442d2) Reviewed-on: https://gerrit.libreoffice.org/26109 Tested-by: Jenkins Reviewed-by: Markus Mohrhard --- sc/source/core/tool/interpr2.cxx | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/sc/source/core/tool/interpr2.cxx b/sc/source/core/tool/interpr2.cxx index ef2277ada4bd..2a35f833a23e 100644 --- a/sc/source/core/tool/interpr2.cxx +++ b/sc/source/core/tool/interpr2.cxx @@ -282,6 +282,12 @@ void ScInterpreter::ScEasterSunday() nYear = (sal_Int16) ::rtl::math::approxFloor( GetDouble() ); if ( nYear < 100 ) nYear = pFormatter->ExpandTwoDigitYear( nYear ); + if (nYear < 1583 || nYear > 9956) + { + // Valid Gregorian and maximum year constraints not met. + PushIllegalArgument(); + return; + } // don't worry, be happy :) int B,C,D,E,F,G,H,I,K,L,M,N,O; N = nYear % 19; -- cgit