ajaxSearch1.10.1J の不具合(&withTvsパラメータ利用時などエラーになる)  【解決済み】

質問全般・改善要望
返信する
noka
メンバー
メンバー
記事: 94
登録日時: 2013年6月19日(水) 10:02

ajaxSearch1.10.1J の不具合(&withTvsパラメータ利用時などエラーになる)

投稿記事 by noka »

こんばんは。

ajaxSearchの脆弱性対応ために、いくつかのサイトでアップデートを行なったのですが、その際に気付いた不具合について、ご報告したいと思います。
ajaxSearch 1.9.3 → 1.10.1J
において、
あまり活用することが無いので発現し辛いようですが、
&withTvs = `-:tv1,tv2,tv3`
などのようにパラメータ &withTvsを+とか-指定して運用しているケースでは、
------------------------------
Execution of a query to the database failed - You have an error in your SQL syntax; 〜
SQL > SELECT GROUP_CONCAT( DISTINCT name SEPARATOR FROM ) AS list WHERE 〜
------------------------------
のようなsqlのシンタックスエラーが出ると思います。

その原因は、
classses/ajaxSearchRequest.class.inc.php
の698行目

コード: 全て選択

        $rs = $modx->db->select("GROUP_CONCAT( DISTINCT name SEPARATOR "," ) AS list", $tblName, "type='text'");
の記述に間違いがあって、

コード: 全て選択

        $rs = $modx->db->select("GROUP_CONCAT( DISTINCT name SEPARATOR ',' ) AS list", $tblName, "type='text'");
とすべきだと思います。

update前の1.9.3では、以下のように、$modx->db->selectを利用していないので問題がなかったみたいです。

コード: 全て選択

        $sql = 'SELECT GROUP_CONCAT( DISTINCT name SEPARATOR "," ) AS list FROM ' . $tblName . ' WHERE type=\'text\'';

修正を検討いただけると幸いです。

-----
ご利用のサーバ:(省略)
MODXのバージョン:1.0.10Jとか1.0.12J-r1とか。
PHPのバージョン:5.3系
MySQLのバージョン:5.0系、5.1系
ブラウザ:(省略)
-----
返信する