Fix possible performance issue when parsing malformed and long Date header (#6087)

pull/6088/merge
Aleksander Machniak 7 years ago
parent 05d1b1947e
commit 3cdc8af297

@ -63,6 +63,7 @@ CHANGELOG Roundcube Webmail
- Fix untagged COPYUID responses handling - again (#5982) - Fix untagged COPYUID responses handling - again (#5982)
- Fix PHP warning "idn_to_utf8(): INTL_IDNA_VARIANT_2003 is deprecated" with PHP 7.2 (#6075) - Fix PHP warning "idn_to_utf8(): INTL_IDNA_VARIANT_2003 is deprecated" with PHP 7.2 (#6075)
- Fix bug where Archive folder wasn't auto-created on login with create_default_folders=true - Fix bug where Archive folder wasn't auto-created on login with create_default_folders=true
- Fix performance issue when parsing malformed and long Date header (#6087)
RELEASE 1.3.3 RELEASE 1.3.3
------------- -------------

@ -729,15 +729,19 @@ class rcube_utils
return (int) $date; return (int) $date;
} }
// It can be very slow when provided string is not a date and very long
if (strlen($date) > 128) {
$date = substr($date, 0, 128);
}
// if date parsing fails, we have a date in non-rfc format. // if date parsing fails, we have a date in non-rfc format.
// remove token from the end and try again // remove token from the end and try again
while ((($ts = @strtotime($date . $tzname)) === false) || ($ts < 0)) { while (($ts = @strtotime($date . $tzname)) === false || $ts < 0) {
$d = explode(' ', $date); if (($pos = strrpos($date, ' ')) === false) {
array_pop($d);
if (!$d) {
break; break;
} }
$date = implode(' ', $d);
$date = rtrim(substr($date, 0, $pos));
} }
return (int) $ts; return (int) $ts;

Loading…
Cancel
Save