Project

General

Profile

Backport(バックポート) #3721

opDynamicAclRoute クラスが allow_empty オプションの利用を想定していない

Added by isao sano almost 7 years ago. Updated almost 6 years ago.

Status:
Fixed(完了)
Priority:
Normal(通常)
Assignee:
Target version:
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

Copied from OpenPNE 3 - Bug(バグ) #3507: opDynamicAclRoute クラスが allow_empty オプションの利用を想定していない Won't fix(対応せず) 2013-11-29

Associated revisions

Revision 88d1fbc3 (diff)
Added by isao sano almost 7 years ago

fix opDynamicAclRoute throws fatal error when using allow_empty option (fixes #3721, BP from #3507)

Conflicts:
lib/routing/opDynamicAclRoute.class.php

Revision 2f4e58a6 (diff)
Added by isao sano almost 7 years ago

Revert "fix opDynamicAclRoute throws fatal error when using allow_empty option (fixes #3721, BP from #3507)"

This reverts commit 88d1fbc37505c9f3fd0e76d3c299f5030673bffe.

Revision 629e4a4f (diff)
Added by isao sano almost 7 years ago

fix opDynamicAclRoute throws fatal error when using allow_empty option (fixes #3721, BP from #3507)

Revision 9e2c5b7f
Added by Rimpei Ogawa almost 6 years ago

Merge pull request #204 from isaosano/t-3721

fix opDynamicAclRoute throws fatal error when using allow_empty option (fixes #3721, BP from #3507)

History

#1 Updated by isao sano almost 7 years ago

  • Copied from Bug(バグ) #3507: opDynamicAclRoute クラスが allow_empty オプションの利用を想定していない added

#2 Updated by isao sano almost 7 years ago

  • Status changed from New(新規) to Accepted(着手)

#3 Updated by isao sano almost 7 years ago

  • Status changed from Accepted(着手) to Pending Review(レビュー待ち)
  • % Done changed from 0 to 50

https://github.com/openpne/OpenPNE3/pull/204
にてプルリクエストをおこないしまた

#4 Updated by Shinichi Urabe almost 7 years ago

  • Assignee set to isao sano

担当を設定ください(差し戻し対応が誰か不明になるため)

#5 Updated by Shinichi Urabe almost 7 years ago

  • Status changed from Pending Review(レビュー待ち) to Rejected(差し戻し)

#626 の修正が混入しています

#6 Updated by isao sano almost 7 years ago

  • Status changed from Rejected(差し戻し) to Accepted(着手)
  • % Done changed from 50 to 0

#7 Updated by isao sano almost 7 years ago

  • Status changed from Accepted(着手) to Pending Review(レビュー待ち)
  • % Done changed from 0 to 50

#626 の修正が混入を取り除き、再度プルリクエストしました。

#8 Updated by Shinichi Urabe almost 7 years ago

  • Status changed from Pending Review(レビュー待ち) to Pending Testing(テスト待ち)
  • % Done changed from 50 to 70

#9 Updated by isao sano almost 7 years ago

  • Target version changed from OpenPNE 3.6.17 to OpenPNE 3.6.x

試験を行うためのテストコードが未実装のため、対象バージョンから一旦外します。

#10 Updated by kaoru n almost 6 years ago

  • Target version changed from OpenPNE 3.6.x to OpenPNE 3.6.21

#11 Updated by isao sano almost 6 years ago

  • Status changed from Pending Testing(テスト待ち) to Pending Merge(マージ待ち)
  • % Done changed from 70 to 80

単体試験完了しました。
問題ありません。
マージお願いします。

#12 Updated by Rimpei Ogawa almost 6 years ago

  • Status changed from Pending Merge(マージ待ち) to Fixed(完了)
  • % Done changed from 80 to 100

Also available in: Atom PDF