From 9b8ededd7b4cbfbb528ddd1cd3c77c84416f88ee Mon Sep 17 00:00:00 2001 From: Ng Kiat Siong Date: Wed, 21 Jun 2023 17:52:00 +0800 Subject: [PATCH] Fixed "passing null to parameter" in Mage_Core_Helper_String (#3341) --- app/code/core/Mage/Core/Helper/String.php | 30 +++++++++++++++++------ 1 file changed, 23 insertions(+), 7 deletions(-) diff --git a/app/code/core/Mage/Core/Helper/String.php b/app/code/core/Mage/Core/Helper/String.php index 80804850d94..de0b038e6d7 100644 --- a/app/code/core/Mage/Core/Helper/String.php +++ b/app/code/core/Mage/Core/Helper/String.php @@ -44,7 +44,7 @@ class Mage_Core_Helper_String extends Mage_Core_Helper_Abstract public function truncate($string, $length = 80, $etc = '...', &$remainder = '', $breakWords = true) { $remainder = ''; - if ($length == 0) { + if (is_null($string) || $length == 0) { return ''; } @@ -75,7 +75,7 @@ public function truncate($string, $length = 80, $etc = '...', &$remainder = '', */ public function strlen($string) { - return iconv_strlen($string, self::ICONV_CHARSET); + return is_null($string) ? 0 : iconv_strlen($string, self::ICONV_CHARSET); } /** @@ -88,6 +88,9 @@ public function strlen($string) */ public function substr($string, $offset, $length = null) { + if (is_null($string)) { + return ''; + } $string = $this->cleanString($string); if (is_null($length)) { $length = $this->strlen($string) - $offset; @@ -246,6 +249,9 @@ public function str_split($str, $length = 1, $keepWords = false, $trim = false, */ public function splitWords($str, $uniqueOnly = false, $maxWordLength = 0, $wordSeparatorRegexp = '\s') { + if (is_null($str)) { + return []; + } $result = []; $split = preg_split('#' . $wordSeparatorRegexp . '#siu', $str, -1, PREG_SPLIT_NO_EMPTY); foreach ($split as $word) { @@ -269,8 +275,12 @@ public function splitWords($str, $uniqueOnly = false, $maxWordLength = 0, $wordS */ public function cleanString($string) { - return '"libiconv"' == ICONV_IMPL ? - iconv(self::ICONV_CHARSET, self::ICONV_CHARSET . '//IGNORE', $string) : $string; + if (is_null($string)) { + return ''; + } + return '"libiconv"' == ICONV_IMPL + ? iconv(self::ICONV_CHARSET, self::ICONV_CHARSET . '//IGNORE', $string) + : $string; } /** @@ -279,11 +289,11 @@ public function cleanString($string) * @param string $haystack * @param string $needle * @param int $offset - * @return int + * @return int|false */ - public function strpos($haystack, $needle, $offset = null) + public function strpos($haystack, $needle, $offset = 0) { - return iconv_strpos($haystack, $needle, $offset, self::ICONV_CHARSET); + return iconv_strpos((string) $haystack, (string) $needle, $offset, self::ICONV_CHARSET); } /** @@ -315,6 +325,9 @@ public function ksortMultibyte(array &$sort) */ public function parseQueryStr($str) { + if (is_null($str)) { + return []; + } $argSeparator = '&'; $result = []; $partsQueryStr = explode($argSeparator, $str); @@ -510,6 +523,9 @@ public function uniOrd($c) */ public function unserialize($str) { + if (is_null($str)) { + return null; + } $reader = new Unserialize_Reader_ArrValue('data'); $prevChar = null; for ($i = 0; $i < strlen($str); $i++) {