Version in base suite: 1.6.11+dfsg-1 Base version: roundcube_1.6.11+dfsg-1 Target version: roundcube_1.6.12+dfsg-0+deb13u1 Base file: /srv/ftp-master.debian.org/ftp/pool/main/r/roundcube/roundcube_1.6.11+dfsg-1.dsc Target file: /srv/ftp-master.debian.org/policy/pool/main/r/roundcube/roundcube_1.6.12+dfsg-0+deb13u1.dsc .htaccess | 4 CHANGELOG.md | 13 ++ debian/changelog | 16 ++ debian/gbp.conf | 2 debian/patches/Fix-FTBFS-with-phpunit-11.patch | 136 +++++++++-------------- debian/patches/map-sqlite3-to-sqlite.patch | 2 debian/salsa-ci.yml | 3 plugins/enigma/lib/enigma_engine.php | 2 plugins/zipdownload/zipdownload.php | 11 + program/actions/mail/import.php | 2 program/js/app.js | 7 + program/lib/Roundcube/bootstrap.php | 29 ++-- program/lib/Roundcube/rcube_contacts.php | 11 + program/lib/Roundcube/rcube_db.php | 11 + program/lib/Roundcube/rcube_imap.php | 17 ++ program/lib/Roundcube/rcube_imap_generic.php | 4 program/lib/Roundcube/rcube_utils.php | 7 + program/lib/Roundcube/rcube_washtml.php | 13 +- program/localization/lv_LV/labels.inc | 2 public_html/.htaccess | 4 public_html/plugins/enigma/lib/enigma_engine.php | 2 public_html/plugins/zipdownload/zipdownload.php | 11 + public_html/program/js/app.js | 7 + tests/Framework/DB.php | 35 ++++- tests/Framework/Utils.php | 10 + tests/Framework/Washtml.php | 17 ++ 26 files changed, 247 insertions(+), 131 deletions(-) diff -Nru roundcube-1.6.11+dfsg/.htaccess roundcube-1.6.12+dfsg/.htaccess --- roundcube-1.6.11+dfsg/.htaccess 2025-06-01 07:44:15.000000000 +0000 +++ roundcube-1.6.12+dfsg/.htaccess 2025-12-14 08:10:51.000000000 +0000 @@ -55,10 +55,6 @@ # Only template - fill with your values #Header always set Public-Key-Pins "max-age=3600; report-uri=\"\"; pin-sha256=\"\"; pin-sha256=\"\"" env=HTTPS -# X-Xss-Protection -# This header is used to configure the built in reflective XSS protection found in Internet Explorer, Chrome and Safari (Webkit). -#Header set X-XSS-Protection "1; mode=block" - # X-Frame-Options # The X-Frame-Options header (RFC), or XFO header, protects your visitors against clickjacking attacks # Already set by php code! Do not activate both options diff -Nru roundcube-1.6.11+dfsg/CHANGELOG.md roundcube-1.6.12+dfsg/CHANGELOG.md --- roundcube-1.6.11+dfsg/CHANGELOG.md 2025-06-01 07:44:15.000000000 +0000 +++ roundcube-1.6.12+dfsg/CHANGELOG.md 2025-12-14 08:10:51.000000000 +0000 @@ -2,6 +2,19 @@ ## Unreleased +- Support IPv6 in database DSN (#9937) +- Don't force specific error_reporting setting +- Fix compatibility with PHP 8.5 regarding array_first() +- Remove X-XSS-Protection example from .htaccess file (#9875) +- Fix "Assign to group" action state after creation of a first group (#9889) +- Fix bug where contacts search would fail if `contactlist_fields` contained vcard fields (#9850) +- Fix bug where an mbox export file could include inconsistent message delimiters (#9879) +- Fix parsing of inline styles that aren't well-formatted (#9948) +- Fix Cross-Site-Scripting vulnerability via SVG's animate tag +- Fix Information Disclosure vulnerability in the HTML style sanitizer + +## Release 1.6.11 + - Managesieve: Fix match-type selector (remove unsupported options) in delete header action (#9610) - Improve installer to fix confusion about disabling SMTP authentication (#9801) - Fix PHP warning in index.php (#9813) diff -Nru roundcube-1.6.11+dfsg/debian/changelog roundcube-1.6.12+dfsg/debian/changelog --- roundcube-1.6.11+dfsg/debian/changelog 2025-06-01 09:12:44.000000000 +0000 +++ roundcube-1.6.12+dfsg/debian/changelog 2025-12-14 10:51:43.000000000 +0000 @@ -1,7 +1,21 @@ +roundcube (1.6.12+dfsg-0+deb13u1) trixie-security; urgency=high + + * New upstream security and bugfix release (closes: #1122899). + + Fix CVE-2025-68461: Cross-Site-Scripting vulnerability via SVG's animate + tag. + + Fix CVE-2025-68460: Information Disclosure vulnerability in the HTML + style sanitizer. + * Refresh d/patches. + * d/gbp.conf: Set debian-branch=debian/trixie. + * Salsa CI: Set RELEASE=trixie, disable reprotest and lintian jobs. + + -- Guilhem Moulin Sun, 14 Dec 2025 11:51:43 +0100 + roundcube (1.6.11+dfsg-1) unstable; urgency=high * New upstream security and bugfix release. - + Fix Post-Auth RCE via PHP Object Deserialization (closes: #1107073). + + Fix CVE-2025-49113: Post-Auth RCE via PHP Object Deserialization. + (Closes: #1107073) * Refresh d/patches. -- Guilhem Moulin Sun, 01 Jun 2025 11:12:44 +0200 diff -Nru roundcube-1.6.11+dfsg/debian/gbp.conf roundcube-1.6.12+dfsg/debian/gbp.conf --- roundcube-1.6.11+dfsg/debian/gbp.conf 2025-06-01 09:12:44.000000000 +0000 +++ roundcube-1.6.12+dfsg/debian/gbp.conf 2025-12-14 10:51:43.000000000 +0000 @@ -1,5 +1,5 @@ [DEFAULT] -debian-branch = debian/latest +debian-branch = debian/trixie upstream-branch = upstream/release-1.6 pristine-tar = True components = ["tinymce", "tinymce-langs"] diff -Nru roundcube-1.6.11+dfsg/debian/patches/Fix-FTBFS-with-phpunit-11.patch roundcube-1.6.12+dfsg/debian/patches/Fix-FTBFS-with-phpunit-11.patch --- roundcube-1.6.11+dfsg/debian/patches/Fix-FTBFS-with-phpunit-11.patch 2025-06-01 09:12:44.000000000 +0000 +++ roundcube-1.6.12+dfsg/debian/patches/Fix-FTBFS-with-phpunit-11.patch 2025-12-14 10:51:43.000000000 +0000 @@ -159,7 +159,7 @@ tests/Framework/Contacts.php | 14 +- tests/Framework/ContentFilter.php | 12 +- tests/Framework/Csv2vcard.php | 18 +- - tests/Framework/DB.php | 31 +-- + tests/Framework/DB.php | 27 +-- tests/Framework/DBMssql.php | 14 +- tests/Framework/DBMysql.php | 14 +- tests/Framework/DBOracle.php | 14 +- @@ -222,7 +222,7 @@ tests/StderrMock.php | 15 +- tests/StorageMock.php | 4 +- tests/bootstrap.php | 21 +- - 213 files changed, 2505 insertions(+), 1799 deletions(-) + 213 files changed, 2503 insertions(+), 1797 deletions(-) diff --git a/plugins/acl/tests/Acl.php b/plugins/acl/tests/Acl.php index 94e0bd4..0ad987f 100644 @@ -7405,7 +7405,7 @@ $result = $csv->export(); diff --git a/tests/Framework/DB.php b/tests/Framework/DB.php -index 09d40ea..b8991df 100644 +index 3ac4f13..853489d 100644 --- a/tests/Framework/DB.php +++ b/tests/Framework/DB.php @@ -1,12 +1,17 @@ @@ -7428,25 +7428,7 @@ { /** * Test script execution and table_prefix replacements -@@ -178,7 +183,7 @@ class Framework_DB extends PHPUnit\Framework\TestCase - { - $dsn = "mysql://USERNAME:PASSWORD@HOST:3306/DATABASE"; - -- $result = rcube_db::parse_dsn($dsn); -+ $result = \rcube_db::parse_dsn($dsn); - - $this->assertSame('mysql', $result['phptype']); - $this->assertSame('USERNAME', $result['username']); -@@ -189,7 +194,7 @@ class Framework_DB extends PHPUnit\Framework\TestCase - - $dsn = "pgsql:///DATABASE"; - -- $result = rcube_db::parse_dsn($dsn); -+ $result = \rcube_db::parse_dsn($dsn); - - $this->assertSame('pgsql', $result['phptype']); - $this->assertTrue(!array_key_exists('username', $result)); -@@ -204,7 +209,7 @@ class Framework_DB extends PHPUnit\Framework\TestCase +@@ -227,7 +232,7 @@ class Framework_DB extends PHPUnit\Framework\TestCase */ function test_list_tables() { @@ -7455,7 +7437,7 @@ $tables = $db->list_tables(); -@@ -216,7 +221,7 @@ class Framework_DB extends PHPUnit\Framework\TestCase +@@ -239,7 +244,7 @@ class Framework_DB extends PHPUnit\Framework\TestCase */ function test_list_cols() { @@ -7464,7 +7446,7 @@ $columns = $db->list_cols('cache'); -@@ -228,7 +233,7 @@ class Framework_DB extends PHPUnit\Framework\TestCase +@@ -251,7 +256,7 @@ class Framework_DB extends PHPUnit\Framework\TestCase */ function test_array2list() { @@ -7473,7 +7455,7 @@ $this->assertSame('', $db->array2list([])); $this->assertSame('\'test\'', $db->array2list(['test'])); -@@ -241,7 +246,7 @@ class Framework_DB extends PHPUnit\Framework\TestCase +@@ -264,7 +269,7 @@ class Framework_DB extends PHPUnit\Framework\TestCase */ function test_concat() { @@ -7482,7 +7464,7 @@ $this->assertSame('(test)', $db->concat('test')); $this->assertSame('(test1 || test2)', $db->concat('test1', 'test2')); -@@ -259,20 +264,20 @@ class Framework_DB extends PHPUnit\Framework\TestCase +@@ -282,20 +287,20 @@ class Framework_DB extends PHPUnit\Framework\TestCase $str .= chr($x); } @@ -10024,7 +10006,7 @@ $idents = $user->list_identities(); diff --git a/tests/Framework/Utils.php b/tests/Framework/Utils.php -index 4e52809..962f3a3 100644 +index 29df81d..cf76834 100644 --- a/tests/Framework/Utils.php +++ b/tests/Framework/Utils.php @@ -1,11 +1,15 @@ @@ -10239,10 +10221,10 @@ + $mod = \rcube_utils::mod_css_styles($style, 'rcmbody', true); $this->assertSame("#rcmbody { content: ''; color: red; }", $mod); - $style = "body { content: '< page: ;/style>< page: ;img src onerror=\"alert(\'hello\');\">'; color: red; }"; + $style = "body { content: '< page: ;/style>< page: ;img src onerror=\"alert(\\'hello\\');\">'; color: red; }"; - $mod = rcube_utils::mod_css_styles($style, 'rcmbody', true); + $mod = \rcube_utils::mod_css_styles($style, 'rcmbody', true); - $this->assertSame("#rcmbody { content: '< page: ;/style>< page: ;img src onerror=\"alert('hello');\">'; color: red; }", $mod); + $this->assertSame("#rcmbody { color: red; }", $mod); // Removing page: property $style = "body { page: test; color: red }"; @@ -10295,19 +10277,19 @@ { return [ [ -@@ -431,9 +440,10 @@ class Framework_Utils extends PHPUnit\Framework\TestCase +@@ -435,9 +444,10 @@ class Framework_Utils extends PHPUnit\Framework\TestCase * * @dataProvider data_parse_css_block */ + #[DataProvider('data_parse_css_block')] - function test_explode_style($input, $output) + function test_parse_css_block($input, $output) { - $this->assertSame($output, rcube_utils::parse_css_block($input)); + $this->assertSame($output, \rcube_utils::parse_css_block($input)); } /** -@@ -448,7 +458,7 @@ class Framework_Utils extends PHPUnit\Framework\TestCase +@@ -452,7 +462,7 @@ class Framework_Utils extends PHPUnit\Framework\TestCase ]; foreach ($data as $text => $res) { @@ -10316,7 +10298,7 @@ $this->assertSame($res, $result); } } -@@ -461,7 +471,7 @@ class Framework_Utils extends PHPUnit\Framework\TestCase +@@ -465,7 +475,7 @@ class Framework_Utils extends PHPUnit\Framework\TestCase $data = ['', 'a,b,c', 'a', ',', ',a']; foreach ($data as $text) { @@ -10325,7 +10307,7 @@ $this->assertSame(explode(',', $text), $result); } } -@@ -476,7 +486,7 @@ class Framework_Utils extends PHPUnit\Framework\TestCase +@@ -480,7 +490,7 @@ class Framework_Utils extends PHPUnit\Framework\TestCase ]; foreach ($input as $idx => $value) { @@ -10334,7 +10316,7 @@ } $input = [ -@@ -484,7 +494,7 @@ class Framework_Utils extends PHPUnit\Framework\TestCase +@@ -488,7 +498,7 @@ class Framework_Utils extends PHPUnit\Framework\TestCase ]; foreach ($input as $idx => $value) { @@ -10343,7 +10325,7 @@ } } -@@ -494,13 +504,13 @@ class Framework_Utils extends PHPUnit\Framework\TestCase +@@ -498,13 +508,13 @@ class Framework_Utils extends PHPUnit\Framework\TestCase function test_get_input_string() { $_GET = []; @@ -10360,7 +10342,7 @@ } /** -@@ -508,18 +518,18 @@ class Framework_Utils extends PHPUnit\Framework\TestCase +@@ -512,18 +522,18 @@ class Framework_Utils extends PHPUnit\Framework\TestCase */ function test_is_simple_string() { @@ -10391,7 +10373,7 @@ } /** -@@ -534,7 +544,7 @@ class Framework_Utils extends PHPUnit\Framework\TestCase +@@ -538,7 +548,7 @@ class Framework_Utils extends PHPUnit\Framework\TestCase ]; foreach ($test as $v) { @@ -10400,7 +10382,7 @@ $this->assertSame($v[2], $result); } } -@@ -564,7 +574,7 @@ class Framework_Utils extends PHPUnit\Framework\TestCase +@@ -568,7 +578,7 @@ class Framework_Utils extends PHPUnit\Framework\TestCase ]; foreach ($test as $datetime => $ts) { @@ -10409,7 +10391,7 @@ $this->assertSame($ts, $result, "Error parsing date: $datetime"); } } -@@ -591,7 +601,7 @@ class Framework_Utils extends PHPUnit\Framework\TestCase +@@ -595,7 +605,7 @@ class Framework_Utils extends PHPUnit\Framework\TestCase ]; foreach ($test as $datetime => $ts) { @@ -10418,7 +10400,7 @@ $this->assertSame($ts, $result ? $result->format('Y-m-d') : false, "Error parsing date: $datetime"); } -@@ -601,7 +611,7 @@ class Framework_Utils extends PHPUnit\Framework\TestCase +@@ -605,7 +615,7 @@ class Framework_Utils extends PHPUnit\Framework\TestCase ]; foreach ($test as $datetime => $ts) { @@ -10427,7 +10409,7 @@ $this->assertSame($ts, $result ? $result->format('Y-m-d H:i:s') : false, "Error parsing date: $datetime"); } -@@ -610,7 +620,7 @@ class Framework_Utils extends PHPUnit\Framework\TestCase +@@ -614,7 +624,7 @@ class Framework_Utils extends PHPUnit\Framework\TestCase ]; foreach ($test as $datetime => $ts) { @@ -10436,7 +10418,7 @@ $this->assertSame($ts, $result ? $result->format('Y-m-d H:i:s O') : false, "Error parsing date: $datetime"); } } -@@ -620,17 +630,17 @@ class Framework_Utils extends PHPUnit\Framework\TestCase +@@ -624,17 +634,17 @@ class Framework_Utils extends PHPUnit\Framework\TestCase */ function test_anytodatetime_timezone() { @@ -10457,7 +10439,7 @@ if ($result) $result->setTimezone($tz); // move to target timezone for comparison $this->assertSame($ts, $result ? $result->format('Y-m-d H:i') : false, "Error parsing date: $datetime"); } -@@ -649,7 +659,7 @@ class Framework_Utils extends PHPUnit\Framework\TestCase +@@ -653,7 +663,7 @@ class Framework_Utils extends PHPUnit\Framework\TestCase ]; foreach ($test as $data) { @@ -10466,7 +10448,7 @@ $this->assertSame($data[2], $result, "Error formatting date: " . $data[0]); } } -@@ -668,7 +678,7 @@ class Framework_Utils extends PHPUnit\Framework\TestCase +@@ -672,7 +682,7 @@ class Framework_Utils extends PHPUnit\Framework\TestCase ]; foreach ($test as $input => $output) { @@ -10475,7 +10457,7 @@ $this->assertSame($output, $result); } } -@@ -693,7 +703,7 @@ class Framework_Utils extends PHPUnit\Framework\TestCase +@@ -697,7 +707,7 @@ class Framework_Utils extends PHPUnit\Framework\TestCase ]; foreach ($test as $input => $output) { @@ -10484,7 +10466,7 @@ $this->assertSame($output, $result, "Error normalizing '$input'"); } } -@@ -716,7 +726,7 @@ class Framework_Utils extends PHPUnit\Framework\TestCase +@@ -720,7 +730,7 @@ class Framework_Utils extends PHPUnit\Framework\TestCase ]; foreach ($test as $idx => $params) { @@ -10493,7 +10475,7 @@ $this->assertSame($params[2], $result, "words_match() at index $idx"); } } -@@ -742,7 +752,7 @@ class Framework_Utils extends PHPUnit\Framework\TestCase +@@ -746,7 +756,7 @@ class Framework_Utils extends PHPUnit\Framework\TestCase } foreach ($test as $input => $output) { @@ -10502,7 +10484,7 @@ $this->assertSame($output, $result); } } -@@ -752,17 +762,17 @@ class Framework_Utils extends PHPUnit\Framework\TestCase +@@ -756,17 +766,17 @@ class Framework_Utils extends PHPUnit\Framework\TestCase */ function test_random_bytes() { @@ -10526,7 +10508,7 @@ { /* -@@ -799,9 +809,10 @@ class Framework_Utils extends PHPUnit\Framework\TestCase +@@ -803,9 +813,10 @@ class Framework_Utils extends PHPUnit\Framework\TestCase * @param string $encoded Encoded email address * @dataProvider data_idn_convert */ @@ -10538,7 +10520,7 @@ } /** -@@ -811,9 +822,10 @@ class Framework_Utils extends PHPUnit\Framework\TestCase +@@ -815,9 +826,10 @@ class Framework_Utils extends PHPUnit\Framework\TestCase * @param string $encoded Encoded email address * @dataProvider data_idn_convert */ @@ -10550,7 +10532,7 @@ } /** -@@ -821,14 +833,14 @@ class Framework_Utils extends PHPUnit\Framework\TestCase +@@ -825,14 +837,14 @@ class Framework_Utils extends PHPUnit\Framework\TestCase */ function test_idn_to_ascii_special() { @@ -10568,7 +10550,7 @@ { return [ ['%z', 'hostname', 'hostname'], -@@ -843,15 +855,16 @@ class Framework_Utils extends PHPUnit\Framework\TestCase +@@ -847,15 +859,16 @@ class Framework_Utils extends PHPUnit\Framework\TestCase * * @dataProvider data_parse_host */ @@ -10587,7 +10569,7 @@ { return [ [['hostname', null, null], ['hostname', null, null]], -@@ -874,15 +887,16 @@ class Framework_Utils extends PHPUnit\Framework\TestCase +@@ -878,15 +891,16 @@ class Framework_Utils extends PHPUnit\Framework\TestCase * * @dataProvider data_parse_host_uri */ @@ -10606,7 +10588,7 @@ return [ ['both', 'Fwd: Re: Test subject both', 'Test subject both'], ['both', 'Re: Fwd: Test subject both', 'Test subject both'], -@@ -900,8 +914,9 @@ class Framework_Utils extends PHPUnit\Framework\TestCase +@@ -904,8 +918,9 @@ class Framework_Utils extends PHPUnit\Framework\TestCase * * @dataProvider data_remove_subject_prefix */ @@ -10617,7 +10599,7 @@ } /** -@@ -909,13 +924,13 @@ class Framework_Utils extends PHPUnit\Framework\TestCase +@@ -913,13 +928,13 @@ class Framework_Utils extends PHPUnit\Framework\TestCase */ function test_server_name() { @@ -10634,7 +10616,7 @@ } /** -@@ -925,31 +940,31 @@ class Framework_Utils extends PHPUnit\Framework\TestCase +@@ -929,31 +944,31 @@ class Framework_Utils extends PHPUnit\Framework\TestCase { $_SERVER['test'] = 'test.com'; @@ -10833,7 +10815,7 @@ $this->assertSame($result, "BEGIN:VCARD\r\nVERSION:3.0\r\nFN:\r\nN:;;;;\r\nEND:VCARD"); diff --git a/tests/Framework/Washtml.php b/tests/Framework/Washtml.php -index 4fdae1a..7e5de5f 100644 +index 0b9e1e9..a3a6d5b 100644 --- a/tests/Framework/Washtml.php +++ b/tests/Framework/Washtml.php @@ -1,11 +1,14 @@ @@ -11007,7 +10989,7 @@ $washed = $washer->wash($html); $this->assertTrue(strpos($washed, $exp) !== false, "Style quotes XSS issue (#1490227)"); -@@ -319,7 +322,7 @@ class Framework_Washtml extends PHPUnit\Framework\TestCase +@@ -326,7 +329,7 @@ class Framework_Washtml extends PHPUnit\Framework\TestCase */ function test_title() { @@ -11016,8 +10998,8 @@ $html = "title1

test

"; $washed = $washer->wash($html); -@@ -365,7 +368,7 @@ class Framework_Washtml extends PHPUnit\Framework\TestCase - +@@ -372,7 +375,7 @@ class Framework_Washtml extends PHPUnit\Framework\TestCase + '; - $washer = new rcube_washtml; @@ -11025,7 +11007,7 @@ $washed = $washer->wash($svg); $this->assertSame($washed, $exp, "SVG content"); -@@ -374,7 +377,7 @@ class Framework_Washtml extends PHPUnit\Framework\TestCase +@@ -381,7 +384,7 @@ class Framework_Washtml extends PHPUnit\Framework\TestCase /** * Test cases for SVG tests */ @@ -11034,7 +11016,7 @@ { $svg1 = ""; -@@ -485,9 +488,10 @@ class Framework_Washtml extends PHPUnit\Framework\TestCase +@@ -500,9 +503,10 @@ class Framework_Washtml extends PHPUnit\Framework\TestCase * * @dataProvider data_wash_svg_tests */ @@ -11046,7 +11028,7 @@ $washed = $washer->wash($input); $this->assertSame($expected, $this->cleanupResult($washed), "SVG content"); -@@ -496,7 +500,7 @@ class Framework_Washtml extends PHPUnit\Framework\TestCase +@@ -511,7 +515,7 @@ class Framework_Washtml extends PHPUnit\Framework\TestCase /** * Test cases for various XSS issues */ @@ -11055,7 +11037,7 @@ { return [ [ -@@ -551,9 +555,10 @@ class Framework_Washtml extends PHPUnit\Framework\TestCase +@@ -566,9 +570,10 @@ class Framework_Washtml extends PHPUnit\Framework\TestCase * * @dataProvider data_wash_xss_tests */ @@ -11067,7 +11049,7 @@ $washed = $washer->wash($input); $this->assertSame($expected, $this->cleanupResult($washed), "XSS issues"); -@@ -567,7 +572,7 @@ class Framework_Washtml extends PHPUnit\Framework\TestCase +@@ -582,7 +587,7 @@ class Framework_Washtml extends PHPUnit\Framework\TestCase $html = ""; $exp = ""; @@ -11076,7 +11058,7 @@ $washed = $washer->wash($html); $this->assertTrue(strpos($washed, $exp) !== false, "Position:fixed (#5264)"); -@@ -611,7 +616,7 @@ class Framework_Washtml extends PHPUnit\Framework\TestCase +@@ -626,7 +631,7 @@ class Framework_Washtml extends PHPUnit\Framework\TestCase I_D = \frac{1}{2} k_n \frac{W}{L} (V_{GS}-V_t)^2 '; @@ -11085,7 +11067,7 @@ $washed = $washer->wash($mathml); // remove whitespace between tags -@@ -628,7 +633,7 @@ class Framework_Washtml extends PHPUnit\Framework\TestCase +@@ -643,7 +648,7 @@ class Framework_Washtml extends PHPUnit\Framework\TestCase { $html = ""; @@ -11094,7 +11076,7 @@ $washed = $washer->wash($html); $this->assertTrue($washer->extlinks); -@@ -636,7 +641,7 @@ class Framework_Washtml extends PHPUnit\Framework\TestCase +@@ -651,7 +656,7 @@ class Framework_Washtml extends PHPUnit\Framework\TestCase $html = "