From 7b1957f996be566766aec370197dfacdd898592b Mon Sep 17 00:00:00 2001 From: Gianni Genovesi Date: Sat, 23 May 2020 12:49:54 +0200 Subject: [PATCH] fix: issue #1476 crash with numeric string value terminating with new line (#1481) * fix: issue #1476 crash with numeric string value terminating with new line * test: provided tests for issue #1476 --- CHANGELOG.md | 1 + src/PhpSpreadsheet/Cell/DefaultValueBinder.php | 2 ++ tests/PhpSpreadsheetTests/Cell/DefaultValueBinderTest.php | 1 + tests/data/Cell/DefaultValueBinder.php | 4 ++++ 4 files changed, 8 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 27d72197..eb9b3810 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -19,6 +19,7 @@ and this project adheres to [Semantic Versioning](https://semver.org). - Fix RATE, PRICE, XIRR, and XNPV Functions [#1456](https://github.com/PHPOffice/PhpSpreadsheet/pull/1456) - Save Excel 2010+ functions properly in XLSX [#1461](https://github.com/PHPOffice/PhpSpreadsheet/pull/1461) - Several improvements in HTML writer [#1464](https://github.com/PHPOffice/PhpSpreadsheet/pull/1464) +- Fix Crash while trying setting a cell the value "123456\n" [#1476](https://github.com/PHPOffice/PhpSpreadsheet/pull/1481) ### Changed diff --git a/src/PhpSpreadsheet/Cell/DefaultValueBinder.php b/src/PhpSpreadsheet/Cell/DefaultValueBinder.php index 3a676c4f..693446e6 100644 --- a/src/PhpSpreadsheet/Cell/DefaultValueBinder.php +++ b/src/PhpSpreadsheet/Cell/DefaultValueBinder.php @@ -65,6 +65,8 @@ class DefaultValueBinder implements IValueBinder return DataType::TYPE_STRING; } elseif ((strpos($pValue, '.') === false) && ($pValue > PHP_INT_MAX)) { return DataType::TYPE_STRING; + } elseif (!is_numeric($pValue)) { + return DataType::TYPE_STRING; } return DataType::TYPE_NUMERIC; diff --git a/tests/PhpSpreadsheetTests/Cell/DefaultValueBinderTest.php b/tests/PhpSpreadsheetTests/Cell/DefaultValueBinderTest.php index 90dabce3..e13cd942 100644 --- a/tests/PhpSpreadsheetTests/Cell/DefaultValueBinderTest.php +++ b/tests/PhpSpreadsheetTests/Cell/DefaultValueBinderTest.php @@ -57,6 +57,7 @@ class DefaultValueBinderTest extends TestCase ['#REF!'], [new DateTime()], [new DateTimeImmutable()], + ['123456\n'], ]; } diff --git a/tests/data/Cell/DefaultValueBinder.php b/tests/data/Cell/DefaultValueBinder.php index 53ba6281..1f0c40e0 100644 --- a/tests/data/Cell/DefaultValueBinder.php +++ b/tests/data/Cell/DefaultValueBinder.php @@ -73,4 +73,8 @@ return [ 'e', '#DIV/0!', ], + [ + 's', + '123456\n', + ], ];