parser: Validate $length in padleft/padright parser functions
authorKunal Mehta <legoktm@member.fsf.org>
Sun, 10 Jun 2018 18:09:07 +0000 (11:09 -0700)
committerLegoktm <legoktm@member.fsf.org>
Tue, 12 Jun 2018 00:41:03 +0000 (00:41 +0000)
commit0eb4eaefd3373bbc58bcf7025cfefe42ce8ff36d
tree785e5ae68ef9a972f1e30a72817aa9c8ca937534
parent49053c905a072e4b0e3a132854aad1d9cc274bb0
parser: Validate $length in padleft/padright parser functions

$length is user input, so cast it to an int before passing it to min().
If there is nothing to add at that point, return immediately.

In PHP 7.1+ this raised a warning of "A non-numeric value encountered"
because min() will return the junk value, returning a string. Then we
try and subtract an int from it (return value of mb_strlen()),
triggering the warning.

Added a parser test to verify the behavior, and confirmed that it
triggers warnings without the patch.

Bug: T180403
Change-Id: I614750962104f6251a864519035366ac9798fc0f
(cherry picked from commit dc96f656affd1f8fab0ae72b0d96e77055e5b336)
includes/parser/CoreParserFunctions.php
tests/parser/parserTests.txt