On March 26, 2019 we launched new MODX Forums. Please join us at the new MODX Community Forums.
Subscribe: RSS
  • プログラムを眺めていて、なんか変だなと思った場合はこちらへ。。

    バグは、バグトラックに報告して頂くのが助かるのですが、バグかどうか
    はっきりしない場合や、英語でなんかかけねーと言う場合は、こちにお願いします。
    で、慣れてる方に報告していただけるととても助かります。 grin

    それと、もし、セキュリティホールくさいものを見つけてしまった場合は、フォーラムには、
    書き込まず、PMでお知らせ下さい。本当に危険なものだった場合、公開してしまうのは、まずいと思いますので。。

    よろしくお願いします。
    • ■インストーラ(1)

      install/instprocessor.php
      182行目
      $dbase = \'`' . str_replace("`", "", $dbase) . '`\';
      

      のバッククォートは、mysql_select_dbを誤動作させるので、
      バッククォートはつけるべきではないと思います。

      参考)
      http://modxcms.com/forums/index.php/topic,20957.msg173167.html#msg173167
        ★日本公式フォーラム2009年9月1日本格始動!★
        http://modxcms-jp.com/bb/

        ▼ウェブ屋のCMS→modxヒキダス流(備忘録)
        http://d.hatena.ne.jp/hikidas_ikeda/
        ▼制作済みHTMLページをmodxで更新するデモ
        http://www.hikidas.com/hikidas/modx_document/modx_demo_osc2009kansai.php
      • ■インストーラ(2)
         新規インストールにおける「database_collation」と「database_connection_charset」について

        新規インストールの場合、
        「Connection Information」のフォーム(install/action.connection.php)で、
        「database_collation」は、デフォルトとして「utf8_general_ci」が入った状態で表示されます。
        が、この項目の入力値は、インストールに反映されません。

        もしかすると、
        install/action.summary.phpの116行目~
        $database_charset = substr($database_collation, 0, strpos($database_collation, '_') - 1);
        $database_connection_charset = $_POST['database_connection_charset'];
        

        のあたりで「$database_charset」の代わりに、
        「$database_connection_charset」に入れるつもりだったのではないかと想像しています。

        の部分の2行目(117行目)は、
        $database_connection_charset = $database_charset;
        

        とするつもりだったのではないかと想像しています。(※1)
        (この116行目でセットした「$database_charset」は、この後、どこにも使われていないようです。)

        また、上記116行目のコード中の「-1」は間違いかと思われます。
        (「utf8_general_ci」→「utf」になってしまいます。)
        これと同様の「-1」が、145行目にもあります。

        さらに、217行目では、
        <input type="hidden" value="<?php echo $_POST['database_connection_charset'] ?>" name="database_connection_charset" />
        

        となっていて、せっかく146行目で生成した「$database_connection_charset」が捨て去られているようです。

        結果的に、新規インストールでは、
        manager/includes/config.inc.php10行目9行目(※2)の「$database_connection_charset」には、何も入りません。

        普段、新規インストールぐらいしか使っていないので、新規インストールに関してのみ、ご報告いたします。

        (※1)(※2)訂正しました。

        2008-09-03追記)
        0.9.6.2に関して、「modx-0.9.6.2-rc2」のソースを見る限りでは、
        上記の箇所は修正されていませんが、
        「action.options.php」の3行目~
        if ($installMode == 0) {
          $_POST['database_connection_charset'] = substr($_POST['database_collation'], 0, strpos($_POST['database_collation'], '_'));
        }
        

        を追加することによって、
        「database_collation」に値が入っている場合に関して、問題は回避しているようです。
          ★日本公式フォーラム2009年9月1日本格始動!★
          http://modxcms-jp.com/bb/

          ▼ウェブ屋のCMS→modxヒキダス流(備忘録)
          http://d.hatena.ne.jp/hikidas_ikeda/
          ▼制作済みHTMLページをmodxで更新するデモ
          http://www.hikidas.com/hikidas/modx_document/modx_demo_osc2009kansai.php
        • ■インストーラ(1)
          の、データベース名に関して、

          バッククォートは、mysql_select_dbを誤動作させるので、バッククォートはつけるべきではないと思います。
          について、自己レス(大きく訂正)です。

          SQLでテーブルの指定に「<データベース名>.<テーブル名>」としている箇所がかなりありますので、単純にデータベース名からバッククォートを抜くと問題がありそうです。
          (データベース名にハイフンが含まれている場合等)

          MODx0.9.6.1p2では、「mysql_select_db」を使っている箇所が15箇所あり、
          そのうち、データベース名からバッククォートを取り除かずにmysql_select_dbを使っていると思われる箇所が、以下の6箇所あります。(使われてなさそうなものも含む)
          --------
          manager/index.php(140):
          manager/includes/document.parser.class.inc.php(2480):
          manager/includes/veriword.php(79):
          manager/media/browser/mcpuk/connectors/php/config.php(49):
          manager/media/ImageEditor/config.inc.php(22):
          manager/processors/login.processor.php(23):
          --------
          ちなみに、以下の2箇所に関しては、現状では呼び出し側でデータベース名の処理を行なっているようです。
          --------
          install/sqlParser.class.php(28):
          manager/actions/bkmanager.static.php(269):
          --------

          追記)
          これは、バージョン0.9.6.2でも、「modx-0.9.6.2-rc2」のソースを見る限り同様です。
          (行番号は多少移動していますが)
            ★日本公式フォーラム2009年9月1日本格始動!★
            http://modxcms-jp.com/bb/

            ▼ウェブ屋のCMS→modxヒキダス流(備忘録)
            http://d.hatena.ne.jp/hikidas_ikeda/
            ▼制作済みHTMLページをmodxで更新するデモ
            http://www.hikidas.com/hikidas/modx_document/modx_demo_osc2009kansai.php
          • スニペットwebloginのソースを眺めていて気がついたのですが、

            ----weblogin.common.inc.php
            13:        if (preg_match_all("/<\!-- \#declare\:(.*)[^-->]?-->/i",$html,$matches)) {

            ----weblogin.common.inc.php

            正規表現のパターンに[^-->]と書かれた場合、-か>以外の一文字を表すことになるので
            [^->]でもいいのではないかと思いました。
            作者の意図はわかりませんが、気になったのでご報告。
            (明示的に-->以外の文字という意味にしているのかもしれません)
            • みなさんこんにちは。sama55と申します。

              Dittoに障害がありましたので報告させていただきます。

              1.現象

               Dittoのフィルタ機能(&filter=`field,criteria,mode’ という指定)で、modeに5(<=)または6(>=)を指定するとページが正しく絞り込まれない。

              2.原因

               コーディングミス

              3.修正/対処法

               assets/snippets/ditto/classes/filter.class.inc.phpの70行目近辺を以下のように修正 (比較演算子を逆にします)
              case "<=" :
              case 5 :
              	// BUG-FIX if (!($value[$this->array_key] < $this->filterValue)) 
              	if (!($value[$this->array_key] > $this->filterValue))
              		$unset = 0;
              	break;
              case ">=" :
              case 6 :
              	// BUG-FIX if (!($value[$this->array_key] > $this->filterValue))
              	if (!($value[$this->array_key] < $this->filterValue))
              		$unset = 0;
              	break;
              

              4.影響範囲

               V2.0.0からV2.1.0までのダウンロード可能なすべてのバージョン(V1は未確認)
               (V2初期からの潜在障害の模様)

              以上です。

              >管理者の皆さんへ
              毎度お手数をお掛けしますが、本家ないしはDItto製作者の方への通知よろしくお願いします。

              • みなさんこんにちは。

                コアソースに軽微な障害がありましたので報告させていただきます。

                1.現象

                 アクセス許可(管理画面/ウェブから)のグループリンク作成で、ドキュメントグループが名前順でソートされない。

                2.原因

                 テスト漏れ?

                3.修正/対処法

                 manager/actions/access_permissions.dynamic.phpの200行目近辺を以下のように修正 (ORDER BY句にdg_nameを追加)
                /* BUG FIX (order by document groups)
                $sql = 'SELECT groupnames.*, groupacc.id AS link_id, dgnames.id AS dg_id, dgnames.name AS dg_name '.
                       'FROM '.$tbl_membergroup_names.' AS groupnames '.
                       'LEFT JOIN '.$tbl_membergroup_access.' AS groupacc ON groupacc.membergroup = groupnames.id '.
                       'LEFT JOIN '.$tbl_documentgroup_names.' AS dgnames ON dgnames.id = groupacc.documentgroup '.
                       'ORDER BY name';
                */
                $sql = 'SELECT groupnames.*, groupacc.id AS link_id, dgnames.id AS dg_id, dgnames.name AS dg_name '.
                       'FROM '.$tbl_membergroup_names.' AS groupnames '.
                       'LEFT JOIN '.$tbl_membergroup_access.' AS groupacc ON groupacc.membergroup = groupnames.id '.
                       'LEFT JOIN '.$tbl_documentgroup_names.' AS dgnames ON dgnames.id = groupacc.documentgroup '.
                       'ORDER BY name, dg_name';
                

                4.影響範囲

                 V0.9.6.2 / 0.9.6.3-RC2(これ以前のバージョンは未確認)
                 ドキュメントの更新権限管理を細かく行う場合のみ(個人/少人数の運用では問題なし)

                以上です。
                • みなさんこんにちは。

                  アクセス許可の処理で障害がありましたので報告させていただきます。

                  1.現象

                  アクセス許可権限を持たないユーザのドキュメント作成・編集画面に「アクセス許可」が表示されてしまう場合がある。

                  2.発生条件

                   グループリンクが未設定のドキュメントグループを作った場合(他の条件もあるかもしれません)

                  3.再現手順

                   (1)「管理画面へのアクセス許可」または「ウェブからのアクセス許可」で「ドキュメントグループ」を作成
                   (2)作成したドキュメントグループにグループリンクを設定しない
                   (3)アクセス許可権限のないユーザで管理画面にログインし、ドキュメント作成/編集

                   ※(2)は制作者の意図に合わない中途半端な操作ですが、そもそもアクセス許可権限のないユーザの画面に
                    「アクセス許可」が表示されてしまうこと自体まずいと思いましたので障害と判断しました。
                     
                  4.修正方法(※サンプル)

                   manager/actions/mutate_content.dynamic.phpの1040行目近辺を以下のように修正(private_memgroupとprivate_webgroupの判断を判り易い論理で対応)
                  // Skip the access permission if the user doesn't have access...
                  // BUG FIX if ((!$isManager && $row['private_memgroup'] == '1') || (!$isWeb && $row['private_webgroup'] == '1'))
                  // BUG FIX 	continue;
                  if (($isManager && $row['private_memgroup'] == '1') || ($isWeb && $row['private_webgroup'] == '1')) {
                  
                  ~途中10行ほど省略
                  
                  // Make the <input> HTML
                  $inputHTML = '<input '.implode(' ', $inputString).' />';
                  
                  $permissions[] = "\t\t".'<li>'.$inputHTML.'<label for="'.$inputId.'">'.$row['name'].'</label></li>';
                  
                  /* BUG FIX */
                  }
                  /* BUG FIX */
                  

                  5.影響範囲

                   V0.9.6.3-RC2 / V0.9.6.3
                   パーミッション管理を行う場合のみ(個人運用では問題なし)

                  6.備考
                   こちらのトピにも関係するかもしれません。 → http://modxcms.com/forums/index.php/topic,31071.0.html

                  以上です。
                  • すいません、こちらの情報ノーチェックでした。orz
                    開発チームに報告入れておきますね。ほんとにありがとうございます。
                    • yamaさん

                      いつもお世話になってます。少しでもお役に立てて嬉しいです。
                      0.9.6.3のリリースもホントお疲れ様です。大変ですよね。

                      下記に0.9.6.3のUpdate障害対応の記事も載せました。確認してみてください。
                      http://modxcms.com/forums/index.php/topic,31681.0.html
                      (管理画面にログインできるユーザ数が多い場合はちょっと改修が大変かも・・・ですね)