mnetについてバグらしきものを見つけました

mnetについてバグらしきものを見つけました

- Yoshiyuki Owa の投稿
返信数: 2
Moodleに関連する研究を行っている大和と言います。
Moodleが標準で持っているmnetの機能を利用して、外部からXML-RPCによりMoodleを操作しようと考えています。

$CFG->mnet_dispatcher_mode = 'dangerous';
として、XML-RPCを利用したところ、エラーが出てしまいました。
そこでMoodleのソースコードを確認してみたところ、バグらしき点を見つけました。
確認したのは1.9.2+ (Build: 20081002)です。

mnet/xmlrpc/server.php の 504行目ですが
$includefile = $CFG->dirroot.'/'.$filename;
となっているところがありますが、正しくは
$includefile = '/'.$filename;
こうだと思われます。

この$includefileが使われているところをたどっていくと
506行目のmnet_server_invoke_methodに入り、
691行目のmnet_permit_rpc_callに入ります。
これは/mnet/lib.php にある関数です。
lib.phpの 414行目で、わたってきた$includefileがあるかどうかを確認します。
そのときに、file_existsの中で$CFG->dirrootが付け加えられて調べられます。

バグの箇所で一度付け加えられた上に、もう一度ここでつけられて
/home/.../moodle/home/.../moodle/filename
のようなパスを探そうとして、RPC_NOSUCHFILEのエラーになってしまっています。

どなたか、この問題をご存知の方、いらっしゃいませんか?
Yoshiyuki Owa への返信

Re: mnetについてバグらしきものを見つけました

- Tatsuya Shirai の投稿

 私はmnetについて全く詳しくないのですが,確かに仰るとおり,ソースリストを追うとそのようになっていますね.mnetフォルダ以下を$includefileでgrepしても特に他に影響している箇所は見当たらないようです.

 Trackerへ報告しては如何でしょう?

Tatsuya Shirai への返信

Re: mnetについてバグらしきものを見つけました

- Yoshiyuki Owa の投稿
ありがとうございます。
変更後の影響が他に関わっていないかまで調べていませんでした。

Trakerへ報告させていただきます。