- Affected version
- 2.1.8
Because
Example error;
Triggering code;
It feels like
But the bug is that there isn't any feedback on the blatantly invalid value passed into
filterCriteria
/validateCriteriaValue
do not discard malformed numerical values, this causes castValueToColumnType
to trigger an a "[E_WARNING] A non-numeric value encountered" when given a non-numerical string for a numerical field.Example error;
Code:
ErrorException: [E_WARNING] A non-numeric value encountered src/XF/Searcher/AbstractSearcher.php:488
Stack trace
#0 src/XF/Searcher/AbstractSearcher.php(488): XF::handlePhpError(2, '[E_WARNING] A n...', '/var/www/sites/...', 488, Array)
#1 src/XF/Searcher/AbstractSearcher.php(442): XF\Searcher\AbstractSearcher->castValueToColumnType('test', 2)
#2 src/XF/Searcher/AbstractSearcher.php(397): XF\Searcher\AbstractSearcher->applyCriteriaValue(Object(DBTech\eCommerce\Finder\Order), 'order_id', 'test', Array, NULL, NULL)
#3 src/XF/Searcher/AbstractSearcher.php(364): XF\Searcher\AbstractSearcher->applyCriteria(Object(DBTech\eCommerce\Finder\Order), Array)
#4 src/addons/DBTech/eCommerce/Admin/Controller/Log.php(162): XF\Searcher\AbstractSearcher->getFinder()
#5 src/XF/Mvc/Dispatcher.php(350): DBTech\eCommerce\Admin\Controller\Log->actionOrder(Object(XF\Mvc\ParameterBag))
#6 src/XF/Mvc/Dispatcher.php(257): XF\Mvc\Dispatcher->dispatchClass('DBTech\\eCommerc...', 'Order', Object(XF\Mvc\RouteMatch), Object(DBTech\eCommerce\Admin\Controller\Log), NULL)
#7 src/XF/Mvc/Dispatcher.php(113): XF\Mvc\Dispatcher->dispatchFromMatch(Object(XF\Mvc\RouteMatch), Object(DBTech\eCommerce\Admin\Controller\Log), NULL)
#8 src/XF/Mvc/Dispatcher.php(55): XF\Mvc\Dispatcher->dispatchLoop(Object(XF\Mvc\RouteMatch))
#9 src/XF/App.php(2184): XF\Mvc\Dispatcher->run()
#10 src/XF.php(391): XF\App->run()
#11 admin.php(13): XF::runApp('XF\\Admin\\App')
#12 {main}
Triggering code;
PHP:
case Entity::INT:
case Entity::UINT:
case Entity::FLOAT:
return $value + 0;
It feels like
XF\Mvc\Entity\ValueFormatter::castValueToType
should be called instead of the contents of castValueToColumnType
, or the very least more checks added.But the bug is that there isn't any feedback on the blatantly invalid value passed into
AbstractSearcher
via extracting column named fields from the response.