0
0
mirror of https://github.com/ezyang/htmlpurifier.git synced 2024-12-22 16:31:53 +00:00

Add support for encoded tel URI schemes. (#354)

This commit is contained in:
Michael S 2022-11-24 21:31:20 +00:00 committed by GitHub
parent becc9d40cf
commit 1424f17cf3
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 16 additions and 1 deletions

View File

@ -37,7 +37,7 @@ class HTMLPurifier_URIScheme_tel extends HTMLPurifier_URIScheme
// from phone number, EXCEPT for a leading plus sign. // from phone number, EXCEPT for a leading plus sign.
$uri->path = preg_replace('/(?!^\+)[^\dx]/', '', $uri->path = preg_replace('/(?!^\+)[^\dx]/', '',
// Normalize e(x)tension to lower-case // Normalize e(x)tension to lower-case
str_replace('X', 'x', $uri->path)); str_replace('X', 'x', rawurldecode($uri->path)));
return true; return true;
} }

View File

@ -23,6 +23,8 @@ class HTMLPurifier_AttrDef_URITest extends HTMLPurifier_AttrDefHarness
$this->assertDef('nntp://news.example.com/324234'); $this->assertDef('nntp://news.example.com/324234');
$this->assertDef('mailto:bob@example.com'); $this->assertDef('mailto:bob@example.com');
$this->assertDef('tel:+15555555555'); $this->assertDef('tel:+15555555555');
$this->assertDef('tel:+15555 555 555', 'tel:+15555555555');
$this->assertDef('tel:+15555%20555%20555', 'tel:+15555555555');
} }
public function testIntegrationWithPercentEncoder() public function testIntegrationWithPercentEncoder()

View File

@ -40,6 +40,8 @@ class HTMLPurifier_URIFilter_MakeAbsoluteTest extends HTMLPurifier_URIFilterHarn
public function testPreserveAltSchemeWithTel() public function testPreserveAltSchemeWithTel()
{ {
$this->assertFiltering('tel:+15555555555'); $this->assertFiltering('tel:+15555555555');
$this->assertFiltering('tel:+15555 555 555');
$this->assertFiltering('tel:+15555%20555%20555');
} }
public function testFilterIgnoreHTTPSpecialCase() public function testFilterIgnoreHTTPSpecialCase()

View File

@ -75,6 +75,10 @@ class HTMLPurifier_URIParserTest extends HTMLPurifier_Harness
'tel:+1 (555) 555-5555', 'tel:+1 (555) 555-5555',
'tel', null, null, null, '+1 (555) 555-5555', null, null 'tel', null, null, null, '+1 (555) 555-5555', null, null
); );
$this->assertParsing(
'tel:+1%20(555)%20555-5555',
'tel', null, null, null, '+1%20(555)%20555-5555', null, null
);
} }
public function testIPv4Address() public function testIPv4Address()

View File

@ -179,6 +179,13 @@ class HTMLPurifier_URISchemeTest extends HTMLPurifier_URIHarness
); );
} }
public function test_tel_with_url_encoding()
{
$this->assertValidation(
'tel:+1%20(555)%20555-5555', 'tel:+15555555555'
);
}
public function test_tel_regular() public function test_tel_regular()
{ {
$this->assertValidation( $this->assertValidation(