diff --git a/library/HTMLPurifier/AttrDef/CSS/Number.php b/library/HTMLPurifier/AttrDef/CSS/Number.php index 8edc159e..ef49d20f 100644 --- a/library/HTMLPurifier/AttrDef/CSS/Number.php +++ b/library/HTMLPurifier/AttrDef/CSS/Number.php @@ -69,7 +69,13 @@ class HTMLPurifier_AttrDef_CSS_Number extends HTMLPurifier_AttrDef return false; } - $left = ltrim($left, '0'); + // Remove leading zeros until positive number or a zero stays left + if (ltrim($left, '0') != '') { + $left = ltrim($left, '0'); + } else { + $left = '0'; + } + $right = rtrim($right, '0'); if ($right === '') { diff --git a/tests/HTMLPurifier/AttrDef/CSS/AlphaValueTest.php b/tests/HTMLPurifier/AttrDef/CSS/AlphaValueTest.php index b360f844..34929f18 100644 --- a/tests/HTMLPurifier/AttrDef/CSS/AlphaValueTest.php +++ b/tests/HTMLPurifier/AttrDef/CSS/AlphaValueTest.php @@ -9,7 +9,7 @@ class HTMLPurifier_AttrDef_CSS_AlphaValueTest extends HTMLPurifier_AttrDefHarnes $this->assertDef('0'); $this->assertDef('1'); - $this->assertDef('.2'); + $this->assertDef('0.2'); // clamping to [0.0, 1,0] $this->assertDef('1.2', '1'); diff --git a/tests/HTMLPurifier/AttrDef/CSS/BackgroundTest.php b/tests/HTMLPurifier/AttrDef/CSS/BackgroundTest.php index 8d826f87..5faff98c 100644 --- a/tests/HTMLPurifier/AttrDef/CSS/BackgroundTest.php +++ b/tests/HTMLPurifier/AttrDef/CSS/BackgroundTest.php @@ -17,7 +17,7 @@ class HTMLPurifier_AttrDef_CSS_BackgroundTest extends HTMLPurifier_AttrDefHarnes ); $this->assertDef( 'rgba(74, 12, 85, 0.35) repeat fixed bottom', - 'rgba(74,12,85,.35) repeat fixed bottom' + 'rgba(74,12,85,0.35) repeat fixed bottom' ); $this->assertDef( 'hsl(244, 47.4%, 88.1%) right center', diff --git a/tests/HTMLPurifier/AttrDef/CSS/ColorTest.php b/tests/HTMLPurifier/AttrDef/CSS/ColorTest.php index 74a6692e..bab74d03 100644 --- a/tests/HTMLPurifier/AttrDef/CSS/ColorTest.php +++ b/tests/HTMLPurifier/AttrDef/CSS/ColorTest.php @@ -20,8 +20,8 @@ class HTMLPurifier_AttrDef_CSS_ColorTest extends HTMLPurifier_AttrDefHarness $this->assertDef('rgb(12%,150%,0%)', 'rgb(12%,100%,0%)'); // percentage max values $this->assertDef('rgba(255, 0, 0, 0)', 'rgba(255,0,0,0)'); // rm spaces - $this->assertDef('rgba(100%,0%,0%,.4)'); - $this->assertDef('rgba(38.1%,59.7%,1.8%,0.7)', 'rgba(38.1%,59.7%,1.8%,.7)'); // decimals okay + $this->assertDef('rgba(100%,0%,0%,0.4)'); + $this->assertDef('rgba(38.1%,59.7%,1.8%,0.7)', 'rgba(38.1%,59.7%,1.8%,0.7)'); // decimals okay $this->assertDef('hsl(275, 45%, 81%)', 'hsl(275,45%,81%)'); // rm spaces $this->assertDef('hsl(100,0%,0%)'); @@ -30,8 +30,8 @@ class HTMLPurifier_AttrDef_CSS_ColorTest extends HTMLPurifier_AttrDefHarness $this->assertDef('hsl(380,125%,0%)', 'hsl(360,100%,0%)'); // max values $this->assertDef('hsla(100, 74%, 29%, 0)', 'hsla(100,74%,29%,0)'); // rm spaces - $this->assertDef('hsla(154,87%,21%,.4)'); - $this->assertDef('hsla(45,94.3%,4.1%,0.7)', 'hsla(45,94.3%,4.1%,.7)'); // decimals okay + $this->assertDef('hsla(154,87%,21%,0.4)'); + $this->assertDef('hsla(45,94.3%,4.1%,0.7)', 'hsla(45,94.3%,4.1%,0.7)'); // decimals okay $this->assertDef('#G00', false); $this->assertDef('cmyk(40, 23, 43, 23)', false); diff --git a/tests/HTMLPurifier/AttrDef/CSS/NumberTest.php b/tests/HTMLPurifier/AttrDef/CSS/NumberTest.php index 943bf5c0..6e9d44d4 100644 --- a/tests/HTMLPurifier/AttrDef/CSS/NumberTest.php +++ b/tests/HTMLPurifier/AttrDef/CSS/NumberTest.php @@ -12,8 +12,8 @@ class HTMLPurifier_AttrDef_CSS_NumberTest extends HTMLPurifier_AttrDefHarness $this->assertDef('1.0', '1'); $this->assertDef('34'); $this->assertDef('4.5'); - $this->assertDef('.5'); - $this->assertDef('0.5', '.5'); + $this->assertDef('0.5'); + $this->assertDef('0.5', '0.5'); $this->assertDef('-56.9'); $this->assertDef('0.', '0'); @@ -21,10 +21,10 @@ class HTMLPurifier_AttrDef_CSS_NumberTest extends HTMLPurifier_AttrDefHarness $this->assertDef('0.0', '0'); $this->assertDef('1.', '1'); - $this->assertDef('.1', '.1'); + $this->assertDef('.1', '0.1'); $this->assertDef('1.0', '1'); - $this->assertDef('0.1', '.1'); + $this->assertDef('0.1', '0.1'); $this->assertDef('000', '0'); $this->assertDef(' 9', '9'); diff --git a/tests/HTMLPurifier/AttrDef/CSSTest.php b/tests/HTMLPurifier/AttrDef/CSSTest.php index 7ad5788e..318f471f 100644 --- a/tests/HTMLPurifier/AttrDef/CSSTest.php +++ b/tests/HTMLPurifier/AttrDef/CSSTest.php @@ -140,8 +140,8 @@ class HTMLPurifier_AttrDef_CSSTest extends HTMLPurifier_AttrDefHarness $this->assertDef('scrollbar-highlight-color:#ff69b4;'); $this->assertDef('scrollbar-shadow-color:#f0f;'); - $this->assertDef('-moz-opacity:.2;'); - $this->assertDef('-khtml-opacity:.2;'); + $this->assertDef('-moz-opacity:0.2;'); + $this->assertDef('-khtml-opacity:0.2;'); $this->assertDef('filter:alpha(opacity=20);'); $this->assertDef('border-top-left-radius:55pt 25pt;'); @@ -160,7 +160,7 @@ class HTMLPurifier_AttrDef_CSSTest extends HTMLPurifier_AttrDefHarness $this->assertDef('display:none;'); $this->assertDef('visibility:visible;'); $this->assertDef('overflow:scroll;'); - $this->assertDef('opacity:.2;'); + $this->assertDef('opacity:0.2;'); } public function testForbidden()