Apache更新に伴う.htaccessの修正

  • ページ: BugTrack
  • 投稿者: Ratbeta?
  • 優先順位: 普通
  • 状態: 完了
  • カテゴリー: 本体バグ
  • 投稿日: 2004-10-24 (日) 16:37:20
  • バージョン: 1.4.4

メッセージ

Apacheの更新に伴って、1.4.4に含まれている.htaccessの正規表現が使えなくなっています。
.htaccessを修正する以外に、orgサイトでの告知も必要かと思われます。

解決法:official:PukiWiki/xrea.comへの設置より。

  • 配布されている.htaccessをそのままUPするとまずいようです。index.phpと同じ階層で"?i:"と書かれている部分を取り除けばイイっぽいですが…今日サイトが見れなくなって、サポート連絡したらそのように修正して下さってたので… -- Kevin? 2004-10-24 (日) 15:01:32

  • ふむふむ。Apacheの更新をされたのはどなたで、何から何へですか? -- henoheno 2004-10-24 (日) 17:18:59
  • .htaccessが使えなくなってるのは例えばXREAなどです。Apacheの1.0系、2.0系共通で、バージョンはそれぞれ1.3.31から1.0.32、2.0.50から2.0.51の間での変更です。 -- Ratbeta? 2004-10-24 (日) 17:25:25
  • 私の調べた結果をBugTrack/652の一番後ろに書いてあります(やっぱり完了したペイジに書くのは良くなかったか....)。 -- よっちい? 2004-10-24 (日) 17:54:06
  • Ratbeta?さんよっちい?さんありがとうございます。よっちい?さんの情報は数日前に目を通した気がするのですが、探せませんでした (^^; Apacheの都合の様ですが、事情が良くわかりませんから、ちょっと apache.org を見てこないといけませんかね -- henoheno 2004-10-24 (日) 18:49:43

http://www.apache.org/dist/httpd/CHANGES_1.3

 Changes with Apache 1.3.32
 *) Fix a bunch of cases where the return code of the regex compiler
    was not checked properly. This affects mod_usertrack and
    core. PR 28218.  [André Malo]

http://www.apache.org/dist/httpd/CHANGES_2.0

 Changes with Apache 2.0.50
 *) Fix a bunch of cases where the return code of the regex compiler
    was not checked properly. This affects: mod_setenvif, mod_usertrack,
    mod_proxy, mod_proxy_ftp and core. PR 28218.  [André Malo]
  • この件で合っていますか? > Ratbeta? -- henoheno 2004-10-24 (日) 18:54:14
  • 手元のFreeBSDではapache-2.0.52_1でこの.htaccessが動いているから、違うかな・・・ -- henoheno 2004-10-24 (日) 19:00:02
  • 手元で再現しているという方は、環境を教えて下さい。(Fedora Core2 etc) -- henoheno 2004-10-24 (日) 19:06:30
    • FreeBSD/i386 4.10-RELEASEにソースからコンパイル&インストールしました。 -- よっちい? 2004-10-25 (月) 09:34:55
  • (手元の環境ではないけれど)XREAサーバはRedHatLinux 7.3で、Apacheは1.3.32のようです。もしかして1.x系だけ? -- Ratbeta? 2004-10-24 (日) 21:02:02
  • 出来れば各ディレクトリの.htaccessもDirectoryMatchを使ってルートの.htaccessに集約できればいいのかもしれませんが…。 -- Ratbeta? 2004-10-24 (日) 21:39:15
  • セキュリティホールmemoによれば、1.3.32が正式リリースでない説あり。 http://www.st.ryukoku.ac.jp/%7Ekjm/security/memo/2004/10.html#20041023_apache -- henoheno 2004-10-28 (木) 22:13:45
  • Ratbetaさん、25日の時点でバージョンを明確に指摘できたのは何故か、それと上にあげたBugzillaのバグのものとそれが一致するかどうかを教えて下さい。 -- henoheno 2004-10-28 (木) 22:15:24
  • 25日->24日ですよね?それなら、XREAとApacheの更新のタイミングがほぼ同じであった事、CHANGESから確認した事、(その後に)XREAサーバinfoでの確認などからバージョンを特定しました。で、Bugzillaのバグですが、(断定は出来ませんが)これと同じ物だと思われます。 -- Ratbeta? 2004-10-28 (木) 22:32:12
  • 某BBSのログを見てたらApacheのバグのような気もしてきました…。仮にApache側の問題だったとしてそれもPukiWiki側で対策するべきなんだろうか…? -- Ratbeta? 2004-10-28 (木) 22:37:35
  • お疲れ様です。コメントありがとうございます :) (Apacheに限らず)関連プロダクトの問題に気づいたときは、どうにかしてその改善を図る(知らせるetc)のがマナーと考えています。現状のPukiWikiについては、既に状況と対処法が明らかになっていますから何も心配していません。 -- henoheno 2004-10-31 (日) 14:16:48
  • (正式リリースとなる)Apache 1.3.33がリリースされましたが、これではこの問題は修正されているのでしょうか?当方にはApache2しかないもので… (^^; -- Ratbeta? 2004-10-31 (日) 21:10:33
    • 1.3.33でもNGでした。なので正規表現の扱いが変わったのは意図的なものではないかと思います。 -- よっちい? 2004-11-03 (水) 18:46:56
  • 確認&お知らせいただきありがとうございます>よっちい?   しかし、それは現在もそうであるというだけで、意図しているとまでは断定できませんね (^^; -- henoheno 2004-11-03 (水) 19:00:59
  • まとまった時間を取って、調べてみました。まず1.3.31と1.3.32の間での変更点としてap_pregcomp()の戻り値を見るようになっていました。
    -       r = ap_pregcomp(cmd->pool, cmd->path, REG_EXTENDED|USE_ICASE);
    +        r = ap_pregcomp(cmd->pool, cmd->path, REG_EXTENDED|USE_ICASE);
    +        if (!r) {
    +            return "Regex could not be compiled";
    +        }
    なので、この変更は妥当な感じがします。さらにもうちょっと調べてみると、apache1とapache2でap_pregcomp()からコールするregcomp()の実体が異なるようです*1
    apache1OSの(libcの)regcomp()
    apache2srclib/pcre/pcreposix.cのregcomp()
    ですから、1.3.32以降の動作はOS(libc)の実装依存になると思われます。が、良くみてみるとUSE_ICASE(= REG_ICASE)を付加しているので
        REG_ICASE     Compile for matching that ignores upper/lower case distinc-
                      tions.  See re_format(7).
    ということ(FreeBSD/i386 4.10-RELEASEのregex(3)より)で.htaccessでの?i:指定はそもそも不要ではないでしょうか。 -- よっちい? 2004-11-05 (金) 12:57:50
  • 情報ありがとうございます。その変更は http://cvs.apache.org/viewcvs.cgi/apache-1.3/src/main/http_core.c (1.337) みたいです。やはりきっかけは上記のBugzilla Bug 28218ですね。 -- henoheno 2004-11-06 (土) 09:01:32
  • そしてこのファイルの上部にはこのようなdefineがあります。 -- henoheno 2004-11-06 (土) 09:06:23
/* We use this in <DirectoryMatch> and <FilesMatch>, to ensure that 
 * people don't get bitten by wrong-cased regex matches
 */

#ifdef WIN32
#define USE_ICASE REG_ICASE
#else
#define USE_ICASE 0
#endif
  • ということで、あくまでもWindowsユーザー向けの措置である様に見えます。 -- henoheno 2004-11-06 (土) 09:09:24
  • そもそもWindowsユーザーを念頭に置いたものである PukiWikiの /.htaccess の ''?:i" 表記は、Apache 1.3 系においては 不要だ(動かないし、冗長だ)、と言う事ができると思います。 -- henoheno 2004-11-06 (土) 09:12:34
  • 次に、Apache2 で同様のProblem Reportを探すと、 http://cvs.apache.org/viewcvs.cgi/httpd-2.0/server/core.c (1.225.2.21) でやはり同様の修正が行われているのがわかります。defineもほぼ同一です。 -- henoheno 2004-11-06 (土) 09:19:24
    /* XXX: Bogus - need to do this differently (at least OS2/Netware suffer
     * the same problem!!!
     * We use this in <DirectoryMatch> and <FilesMatch>, to ensure that
     * people don't get bitten by wrong-cased regex matches
     */
    
    #ifdef WIN32
    #define USE_ICASE REG_ICASE
    #else
    #define USE_ICASE 0
    #endif
  • ということで、Apache2も Apache1.3 と状況は同じであることがわかります。少なくともWindows環境では自動的に ignore case になる(ことを意図している)様ですね。*2 -- henoheno 2004-11-06 (土) 09:21:36
  • CVS版 からこの正規表現を取り除き、official:PukiWiki/Download/1.4.4 にこの件に関する情報を追記しました。 -- henoheno 2004-11-06 (土) 10:50:35
  • 修正を確認しました。ステータスを完了に変更しておきます。 -- Ratbeta? 2004-11-06 (土) 11:40:07
  • さくらで突然 Pukiwiki が動かなくなった http://d.hatena.ne.jp/kohi/20041130 -- 2004-11-30 (火) 23:46:48

*1 objdump -dして調べた
*2 objdump も試してみましたが、1.3.x は追い方がわかりませんでした orz

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2008-12-13 (土) 12:25:52
Site admin: PukiWiki Development Team

PukiWiki 1.5.2+ © 2001-2019 PukiWiki Development Team. Powered by PHP 5.6.40-0+deb8u7. HTML convert time: 0.355 sec.

OSDN