From 6b2ced9c7565be220449169b6dd74e7aa8b67156 Mon Sep 17 00:00:00 2001 From: ErickSkrauch Date: Thu, 30 Jan 2025 03:36:15 +0100 Subject: [PATCH] Fixes ACCOUNTS-CJ. Handle invalid idna convert result --- common/validators/EmailValidator.php | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/common/validators/EmailValidator.php b/common/validators/EmailValidator.php index 6eefb3b..4abb112 100644 --- a/common/validators/EmailValidator.php +++ b/common/validators/EmailValidator.php @@ -66,9 +66,16 @@ final class EmailValidator extends Validator { } }; - $idnaDomain = new validators\FilterValidator(['filter' => function(string $value): string { + $idnaDomain = new validators\FilterValidator(['filter' => function(string $value) use ($model, $attribute): string { [$name, $domain] = explode('@', $value); - return idn_to_ascii($name) . '@' . idn_to_ascii($domain); + $idnName = idn_to_ascii($name); + $idnDomain = idn_to_ascii($domain); + if ($idnName === false || $idnDomain === false) { + $this->addError($model, $attribute, E::EMAIL_INVALID); + return ''; + } + + return "{$idnName}@{$idnDomain}"; }]); $unique = new validators\UniqueValidator();