Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
Fix handling of email addresses with quoted domain part (#1490040)
  • Loading branch information
alecpl committed Aug 21, 2014
1 parent f53cb2d commit f01666a
Show file tree
Hide file tree
Showing 3 changed files with 20 additions and 0 deletions.
1 change: 1 addition & 0 deletions CHANGELOG
Expand Up @@ -56,6 +56,7 @@ CHANGELOG Roundcube Webmail
- Fix errors when adding/updating contacts in active search (#1490015)
- Fix incorrect thumbnail rotation with GD and exif orientation data (#1490029)
- Fix contacts list update after adding/deleting/moving a contact (#1490028, #1490033)
- Fix handling of email addresses with quoted domain part (#1490040)

RELEASE 1.0.2
-------------
Expand Down
16 changes: 16 additions & 0 deletions program/lib/Roundcube/rcube_mime.php
Expand Up @@ -394,6 +394,7 @@ private static function parse_address_list($str, $decode = true, $fallback = nul
}

if ($address) {
$address = self::fix_email($address);
$result[$key] = array('name' => $name, 'address' => $address);
}
}
Expand Down Expand Up @@ -906,4 +907,19 @@ public static function image_content_type($data)
return 'image/' . $type;
}

/**
* Try to fix invalid email addresses
*/
public static function fix_email($email)
{
$parts = rcube_utils::explode_quoted_string('@', $email);
foreach ($parts as $idx => $part) {
// remove redundant quoting (#1490040)
if ($part[0] == '"' && preg_match('/^"([a-zA-Z0-9._+=-]+)"$/', $part, $m)) {
$parts[$idx] = $m[1];
}
}

return implode('@', $parts);
}
}
3 changes: 3 additions & 0 deletions tests/Framework/Mime.php
Expand Up @@ -44,6 +44,8 @@ function test_decode_single_address()
23 => '=?UTF-8?B?IlRlc3QsVGVzdCI=?= <test@domain.tld>',
// invalid, but we do our best to parse correctly
24 => '"email@test.com" <>',
// valid with redundant quoting (#1490040)
25 => '"user"@"domain.tld"',
);

$results = array(
Expand Down Expand Up @@ -73,6 +75,7 @@ function test_decode_single_address()
22 => array(1, 'John Doe @ SomeBusinessName', 'MAILER-DAEMON'),
23 => array(1, 'Test,Test', 'test@domain.tld'),
24 => array(1, '', 'email@test.com'),
25 => array(1, '', 'user@domain.tld'),
);

foreach ($headers as $idx => $header) {
Expand Down

0 comments on commit f01666a

Please sign in to comment.