diff options
| author | Joas Schilling <nickvergessen@gmx.de> | 2013-12-16 10:18:56 +0100 |
|---|---|---|
| committer | Joas Schilling <nickvergessen@gmx.de> | 2013-12-16 10:18:56 +0100 |
| commit | 4a73ce0933c8bfecf37cf760d3fd96bb7a7f48ca (patch) | |
| tree | 9ff4a74a99cab79322a2fe8cc728f0dc283d77df /phpBB/phpbb/extension/metadata_manager.php | |
| parent | 8da2f349fe39a46fcd70e59ff087071927edbc34 (diff) | |
| parent | c42bd28d172a9ae7439cc3868ebfda87e93f3490 (diff) | |
| download | forums-4a73ce0933c8bfecf37cf760d3fd96bb7a7f48ca.tar forums-4a73ce0933c8bfecf37cf760d3fd96bb7a7f48ca.tar.gz forums-4a73ce0933c8bfecf37cf760d3fd96bb7a7f48ca.tar.bz2 forums-4a73ce0933c8bfecf37cf760d3fd96bb7a7f48ca.tar.xz forums-4a73ce0933c8bfecf37cf760d3fd96bb7a7f48ca.zip | |
Merge remote-tracking branch 'prototech/ticket/12009' into develop
* prototech/ticket/12009:
[ticket/12009] Prevent user from enabling invalid extension through direct URL
[ticket/12009] Update functional test to check for invalid extensions.
[ticket/12009] Fix functional tests.
[ticket/12009] Move valid extensions in tests to correct dir structure.
[ticket/12009] Do not allow incorrectly structured extensions to be installed.
Diffstat (limited to 'phpBB/phpbb/extension/metadata_manager.php')
| -rw-r--r-- | phpBB/phpbb/extension/metadata_manager.php | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/phpBB/phpbb/extension/metadata_manager.php b/phpBB/phpbb/extension/metadata_manager.php index d0323120d8..66cdb86513 100644 --- a/phpBB/phpbb/extension/metadata_manager.php +++ b/phpBB/phpbb/extension/metadata_manager.php @@ -266,8 +266,8 @@ class metadata_manager */ public function validate_enable() { - // Check for phpBB, PHP versions - if (!$this->validate_require_phpbb() || !$this->validate_require_php()) + // Check for valid directory & phpBB, PHP versions + if (!$this->validate_dir() || !$this->validate_require_phpbb() || !$this->validate_require_php()) { return false; } @@ -275,6 +275,16 @@ class metadata_manager return true; } + /** + * Validates the most basic directory structure to ensure it follows <vendor>/<ext> convention. + * + * @return boolean True when passes validation + */ + public function validate_dir() + { + return (substr_count($this->ext_name, '/') === 1 && $this->ext_name == $this->get_metadata('name')); + } + /** * Validates the contents of the phpbb requirement field |
