![]() Server : Apache System : Linux server2.corals.io 4.18.0-348.2.1.el8_5.x86_64 #1 SMP Mon Nov 15 09:17:08 EST 2021 x86_64 User : corals ( 1002) PHP Version : 7.4.33 Disable Function : exec,passthru,shell_exec,system Directory : /home/corals/old/vendor/laminas/laminas-mail/src/Header/ |
<?php namespace Laminas\Mail\Header; use function in_array; use function ord; use function strlen; final class HeaderValue { /** * No public constructor. */ private function __construct() { } /** * Filter the header value according to RFC 2822 * * @see http://www.rfc-base.org/txt/rfc-2822.txt (section 2.2) * * @param string $value * @return string */ public static function filter($value) { $result = ''; $total = strlen($value); // Filter for CR and LF characters, leaving CRLF + WSP sequences for // Long Header Fields (section 2.2.3 of RFC 2822) for ($i = 0; $i < $total; $i += 1) { $ord = ord($value[$i]); if ($ord === 10 || $ord > 127) { continue; } if ($ord === 13) { if ($i + 2 >= $total) { continue; } $lf = ord($value[$i + 1]); $sp = ord($value[$i + 2]); if ($lf !== 10 || $sp !== 32) { continue; } $result .= "\r\n "; $i += 2; continue; } $result .= $value[$i]; } return $result; } /** * Determine if the header value contains any invalid characters. * * @see http://www.rfc-base.org/txt/rfc-2822.txt (section 2.2) * * @param string $value * @return bool */ public static function isValid($value) { $total = strlen($value); for ($i = 0; $i < $total; $i += 1) { $ord = ord($value[$i]); // bare LF means we aren't valid if ($ord === 10 || $ord > 127) { return false; } if ($ord === 13) { if ($i + 2 >= $total) { return false; } $lf = ord($value[$i + 1]); $sp = ord($value[$i + 2]); if ($lf !== 10 || ! in_array($sp, [9, 32], true)) { return false; } // skip over the LF following this $i += 2; } } return true; } /** * Assert that the header value is valid. * * Raises an exception if invalid. * * @param string $value * @throws Exception\RuntimeException * @return void */ public static function assertValid($value) { if (! self::isValid($value)) { throw new Exception\RuntimeException('Invalid header value detected'); } } }