[Libreoffice-commits] core.git: sc/source
Stephan Bergmann
sbergman at redhat.com
Mon Jun 20 07:54:43 UTC 2016
sc/source/core/tool/interpr2.cxx | 9 ++++++++-
1 file changed, 8 insertions(+), 1 deletion(-)
New commits:
commit 2606915f0f480af30367a5d0f67adbf930c2c6b9
Author: Stephan Bergmann <sbergman at redhat.com>
Date: Mon Jun 20 09:54:14 2016 +0200
Avoid undefined behavior when converting from double to sal_Int16
Change-Id: Iced9d25a15f25076b1c23b064eabfe5f0899882c
diff --git a/sc/source/core/tool/interpr2.cxx b/sc/source/core/tool/interpr2.cxx
index 812c858..c9a73d4 100644
--- a/sc/source/core/tool/interpr2.cxx
+++ b/sc/source/core/tool/interpr2.cxx
@@ -305,7 +305,14 @@ void ScInterpreter::ScEasterSunday()
if ( MustHaveParamCount( GetByte(), 1 ) )
{
sal_Int16 nDay, nMonth, nYear;
- nYear = (sal_Int16) ::rtl::math::approxFloor( GetDouble() );
+ double x = rtl::math::approxFloor( GetDouble() );
+ if (x <= sal_Int32(SAL_MIN_INT16) - 1
+ || x >= sal_Int32(SAL_MAX_INT16) + 1)
+ {
+ PushIllegalArgument();
+ return;
+ }
+ nYear = static_cast<sal_Int16>(x);
if ( nYear < 100 )
nYear = pFormatter->ExpandTwoDigitYear( nYear );
if (nYear < 1583 || nYear > 9956)
More information about the Libreoffice-commits
mailing list