diff options
author | Aleksander Machniak <alec@alec.pl> | 2014-09-13 12:36:54 +0200 |
---|---|---|
committer | Aleksander Machniak <alec@alec.pl> | 2014-09-13 12:36:54 +0200 |
commit | 848e204ef9bdaf989e7e48025d4ea6ee21e7678e (patch) | |
tree | 8b0ca330c80077b2cf99247299c7df6756c7a40f /program/lib | |
parent | 050b482b38ce3c2147af976ba6d5b229539c6558 (diff) |
Fix validation of email addresses with IDNA domains (#1490067)
Diffstat (limited to 'program/lib')
-rw-r--r-- | program/lib/Roundcube/rcube_utils.php | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/program/lib/Roundcube/rcube_utils.php b/program/lib/Roundcube/rcube_utils.php index 330322f10..a51247eae 100644 --- a/program/lib/Roundcube/rcube_utils.php +++ b/program/lib/Roundcube/rcube_utils.php @@ -103,13 +103,14 @@ class rcube_utils } foreach ($domain_array as $part) { - if (!preg_match('/^(([A-Za-z0-9][A-Za-z0-9-]{0,61}[A-Za-z0-9])|([A-Za-z0-9]))$/', $part)) { + if (!preg_match('/^((xn--)?([A-Za-z0-9][A-Za-z0-9-]{0,61}[A-Za-z0-9])|([A-Za-z0-9]))$/', $part)) { return false; } } // last domain part - if (preg_match('/[^a-zA-Z]/', array_pop($domain_array))) { + $last_part = array_pop($domain_array); + if (strpos($last_part, 'xn--') !== 0 && preg_match('/[^a-zA-Z]/', $last_part)) { return false; } |