WP_Query's "m" parameter is cast to an int which is a problem due to 32-bit signed intergers
|Reported by:||Viper007Bond||Owned by:||nacin|
Description (last modified by Viper007Bond)
WP_Query's m parameter accepts MySQL datetimes basically. These values can be up to 14 characters long (YYYYMMDDHHMMSS). For the long values, you end up with 2147483647 when the passed value is run through absint(). While in the process of being used to create a query, it is further validated by being run through preg_replace( '|[^0-9]|', '', $q['m'] ) which makes the integer casting redundant.
Attached is a patch that fixes this issue by just using regex to validate the value.
I discovered this while writing unit tests for #18694 and with the patch on this ticket applied, the unit tests now work as expected. This is another case of unit tests saving the day! :)