aboutsummaryrefslogtreecommitdiffstats
path: root/phpBB/phpbb/passwords
diff options
context:
space:
mode:
authorTristan Darricau <tristan.darricau@sensiolabs.com>2015-09-17 15:36:04 +0200
committerTristan Darricau <tristan.darricau@sensiolabs.com>2015-09-17 15:36:04 +0200
commit25f5e4f18f9aed7272b3f3f9e8647c287b689b29 (patch)
treea73cc675098627b13f49e730255fc0cba145a769 /phpBB/phpbb/passwords
parent087e219a09a301e193c6e425521deeab89318043 (diff)
downloadforums-25f5e4f18f9aed7272b3f3f9e8647c287b689b29.tar
forums-25f5e4f18f9aed7272b3f3f9e8647c287b689b29.tar.gz
forums-25f5e4f18f9aed7272b3f3f9e8647c287b689b29.tar.bz2
forums-25f5e4f18f9aed7272b3f3f9e8647c287b689b29.tar.xz
forums-25f5e4f18f9aed7272b3f3f9e8647c287b689b29.zip
[ticket/12577] Lazy initialize the password manager
PHPBB3-12577
Diffstat (limited to 'phpBB/phpbb/passwords')
-rw-r--r--phpBB/phpbb/passwords/manager.php25
1 files changed, 23 insertions, 2 deletions
diff --git a/phpBB/phpbb/passwords/manager.php b/phpBB/phpbb/passwords/manager.php
index aa9147ecf4..03729815ba 100644
--- a/phpBB/phpbb/passwords/manager.php
+++ b/phpBB/phpbb/passwords/manager.php
@@ -49,6 +49,10 @@ class manager
*/
protected $config;
+ private $initialized = false;
+ private $hashing_algorithms;
+ private $defaults;
+
/**
* Construct a passwords object
*
@@ -62,9 +66,18 @@ class manager
{
$this->config = $config;
$this->helper = $helper;
+ $this->hashing_algorithms = $hashing_algorithms;
+ $this->defaults = $defaults;
+ }
- $this->fill_type_map($hashing_algorithms);
- $this->register_default_type($defaults);
+ protected function initialize()
+ {
+ if (!$this->initialized)
+ {
+ $this->initialized = true;
+ $this->fill_type_map($this->hashing_algorithms);
+ $this->register_default_type($this->defaults);
+ }
}
/**
@@ -144,6 +157,8 @@ class manager
return false;
}
+ $this->initialize();
+
// Be on the lookout for multiple hashing algorithms
// 2 is correct: H\2a > 2, H\P > 2
if (strlen($match[1]) > 2)
@@ -192,6 +207,8 @@ class manager
return false;
}
+ $this->initialize();
+
// Try to retrieve algorithm by service name if type doesn't
// start with dollar sign
if (!is_array($type) && strpos($type, '$') !== 0 && isset($this->algorithms[$type]))
@@ -242,6 +259,8 @@ class manager
return false;
}
+ $this->initialize();
+
// First find out what kind of hash we're dealing with
$stored_hash_type = $this->detect_algorithm($hash);
if ($stored_hash_type == false)
@@ -297,6 +316,8 @@ class manager
*/
public function combined_hash_password($password_hash, $type)
{
+ $this->initialize();
+
$data = array(
'prefix' => '$',
'settings' => '$',