Skip to content

Commit c850122

Browse files
committed
Ensure srcset dimensions are greater than zero
1 parent e32aaf0 commit c850122

File tree

2 files changed

+19
-2
lines changed

2 files changed

+19
-2
lines changed

includes/sanitizers/class-amp-srcset-sanitizer.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ class AMP_Srcset_Sanitizer extends AMP_Base_Sanitizer {
1919
*
2020
* @var string
2121
*/
22-
const SRCSET_REGEX_PATTERN = '/\s*(?:,\s*)?(?<url>[^,\s]\S*[^,\s])\s*(?<dimension>[\d]+[wx]|[\d]+\.[\d]+x)?\s*(?<comma>,)?\s*/';
22+
const SRCSET_REGEX_PATTERN = '/\s*(?:,\s*)?(?<url>[^,\s]\S*[^,\s])\s*(?<dimension>[1-9]\d*[wx]|[1-9]\d*\.\d+x|0.\d*[1-9]\d*x)?\s*(?<comma>,)?\s*/';
2323

2424
/**
2525
* Sanitize the HTML contained in the DOMDocument received by the constructor

tests/php/test-class-amp-srcset-sanitizer.php

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ public function data_sanitize() {
6262
[ AMP_Tag_And_Attribute_Sanitizer::INVALID_ATTR_VALUE ],
6363
],
6464

65-
'amp_img_srcset_invalid_bare_dimension' => [
65+
'amp_img_srcset_invalid_dimension_unit' => [
6666
'<img src="https://example.com/image.jpg" height="100" width="200" srcset="https://example.com/image.jpg 500px">',
6767
'<img src="https://example.com/image.jpg" height="100" width="200">',
6868
[ AMP_Tag_And_Attribute_Sanitizer::INVALID_ATTR_VALUE ],
@@ -86,6 +86,18 @@ public function data_sanitize() {
8686
[ AMP_Tag_And_Attribute_Sanitizer::INVALID_ATTR_VALUE ],
8787
],
8888

89+
'amp_img_srcset_invalid_zero_width' => [
90+
'<img src="https://example.com/image.jpg" height="100" width="200" srcset="https://example.com/image.jpg 0w">',
91+
'<img src="https://example.com/image.jpg" height="100" width="200">',
92+
[ AMP_Tag_And_Attribute_Sanitizer::INVALID_ATTR_VALUE ],
93+
],
94+
95+
'amp_img_srcset_invalid_zero_pixel_density' => [
96+
'<img src="https://example.com/image.jpg" height="100" width="200" srcset="https://example.com/image.jpg 0.0x">',
97+
'<img src="https://example.com/image.jpg" height="100" width="200">',
98+
[ AMP_Tag_And_Attribute_Sanitizer::INVALID_ATTR_VALUE ],
99+
],
100+
89101
'amp_img_srcset_valid_pixel_density' => [
90102
'<img src="https://example.com/image.jpg" height="100" width="200" srcset="https://example.com/image.jpg 5x">',
91103
null,
@@ -96,6 +108,11 @@ public function data_sanitize() {
96108
null,
97109
],
98110

111+
'amp_img_srcset_valid_float_pixel_density_with_leading_zero' => [
112+
'<img src="https://example.com/image.jpg" height="100" width="200" srcset="https://example.com/image.jpg 0.002x">',
113+
null,
114+
],
115+
99116
'amp_img_srcset_invalid_tokens' => [
100117
'<img src="https://example.com/image.jpg" height="100" width="200" srcset="bad bad">',
101118
'<img src="https://example.com/image.jpg" height="100" width="200">',

0 commit comments

Comments
 (0)