Backport(バックポート) #3722
opDynamicAclRoute クラスが allow_empty オプションの利用を想定していない
Start date:
2013-11-29
Due date:
% Done:
100%
Description
Overview (現象)¶
opDynamicAclRoute クラスを使用したルートの allow_empty オプションを true にセットした状態で存在しないオブジェクトに対する URL がリクエストされると、 $route->getObject()
で null が返されることなく Fatal Error が発生し異常終了する。
[Fri Nov 29 16:56:45.251504 2013] [fcgid:warn] [pid 32517:tid 139863663769344] [client 115.65.29.61:64752] mod_fcgid: stderr: PHP Fatal error: Call to a member function isAllowed() on a non-object in /home/upsilon/git/openpne3/master/lib/routing/opDynamicAclRoute.class.php on line 44, referer: https://sns.example.com/communityTopic/1
Causes (原因)¶
opDynamicAclRoute::getObject() メソッド内で、parent::getObject() が null を返すことが想定していないことが原因。
public function getObject()
{
$result = parent::getObject();
if (!$role = $this->getCurrentMemberId())
{
$role = 'alien';
}
if ($result instanceof opAccessControlRecordInterface)
{
if (!$result->isAllowed($this->getCurrentMember(), $this->options['privilege']))
{
$this->handleRestriction();
}
}
elseif (!$this->acl->isAllowed($this->getCurrentMemberId(), null, $this->options['privilege']))
{
$this->handleRestriction();
}
return $result;
}
Way to fix (修正内容)¶
parent::getObject() が null を返した場合には何もせずそのまま null を返すように修正する。
Related issues
Associated revisions
History
#1
Updated by isao sano over 8 years ago
- Copied from Bug(バグ) #3507: opDynamicAclRoute クラスが allow_empty オプションの利用を想定していない added
#2
Updated by isao sano over 8 years ago
- Status changed from New(新規) to Accepted(着手)
#3
Updated by isao sano over 8 years ago
- Status changed from Accepted(着手) to Pending Review(レビュー待ち)
- % Done changed from 0 to 50
https://github.com/openpne/OpenPNE3/pull/213
にてプルリクエストをしました
#4
Updated by Shinichi Urabe about 8 years ago
- Assignee set to isao sano
担当を設定ください(差し戻し対応が誰か不明になるため)
#5
Updated by Shinichi Urabe about 8 years ago
- Status changed from Pending Review(レビュー待ち) to Rejected(差し戻し)
#626 の修正が混入しています
#6
Updated by isao sano about 8 years ago
- Status changed from Rejected(差し戻し) to Accepted(着手)
- % Done changed from 50 to 0
#7
Updated by isao sano about 8 years ago
- Status changed from Accepted(着手) to Pending Review(レビュー待ち)
- % Done changed from 0 to 50
#626 の修正を取り除き、再度プルリクエストしました。
https://github.com/openpne/OpenPNE3/pull/237
※ https://github.com/openpne/OpenPNE3/pull/213
のプルリクエストは操作ミスによりclosedにしてしまった為、新しいブランチでプルリクエストしました。申し訳ありません。
#8
Updated by Shinichi Urabe about 8 years ago
- Status changed from Pending Review(レビュー待ち) to Pending Testing(テスト待ち)
- % Done changed from 50 to 70
#9
Updated by isao sano about 8 years ago
- Target version changed from OpenPNE 3.8.14 to OpenPNE 3.8.x
試験を行うためのテストコードが未実装のため、対象バージョンから一旦外します。
#10
Updated by kaoru n over 7 years ago
- Target version changed from OpenPNE 3.8.x to OpenPNE 3.8.18
#11
Updated by Chiharu Nakajima about 7 years ago
- Status changed from Pending Testing(テスト待ち) to Pending Merge(マージ待ち)
- % Done changed from 70 to 80
単体テストOK
#12
Updated by Rimpei Ogawa about 7 years ago
- Status changed from Pending Merge(マージ待ち) to Fixed(完了)
- % Done changed from 80 to 100