diff --git a/CHANGELOG b/CHANGELOG index b772359900c..5c9d06f1236 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -60,6 +60,7 @@ CHANGELOG Roundcube Webmail - Fix broken long filenames when using imap4d server - workaround server bug (#6048) - Fix so temp_dir misconfiguration prints an error to the log (#6045) - Fix untagged COPYUID responses handling - again (#5982) +- Fix PHP warning "idn_to_utf8(): INTL_IDNA_VARIANT_2003 is deprecated" with PHP 7.2 (#6075) RELEASE 1.3.3 ------------- diff --git a/program/lib/Roundcube/rcube_utils.php b/program/lib/Roundcube/rcube_utils.php index 12857801222..1c0632dbf54 100644 --- a/program/lib/Roundcube/rcube_utils.php +++ b/program/lib/Roundcube/rcube_utils.php @@ -886,13 +886,23 @@ public static function idn_convert($input, $is_utf = false) { if ($at = strpos($input, '@')) { $user = substr($input, 0, $at); - $domain = substr($input, $at+1); + $domain = substr($input, $at + 1); } else { $domain = $input; } - $domain = $is_utf ? idn_to_ascii($domain) : idn_to_utf8($domain); + // Note that in PHP 7.2/7.3 calling idn_to_* functions with default arguments + // throws a warning, so we have to set the variant explicitely (#6075) + $variant = INTL_IDNA_VARIANT_UTS46; + $options = 0; + + if ($is_utf) { + $domain = idn_to_ascii($domain, $options, $variant); + } + else { + $domain = idn_to_utf8($domain, $options, $variant); + } if ($domain === false) { return '';