Aleksander Machniak
2016-05-20 ab6fdfa8bc3a441590778b026b52225473424eec
plugins/password/password.php
@@ -256,6 +256,7 @@
            $rules = html::tag('ul', array('id' => 'ruleslist'), $rules);
        }
        $disabled_msg = '';
        if ($form_disabled) {
            $disabled_msg = is_string($form_disabled) ? $form_disabled : $this->gettext('disablednotice');
            $disabled_msg = html::div(array('class' => 'boxwarning', 'id' => 'password-notice'), $disabled_msg);
@@ -316,6 +317,7 @@
        $object = new $class;
        $result = $object->save($curpass, $passwd);
        $message = '';
        if (is_array($result)) {
            $message = $result['message'];
@@ -367,7 +369,7 @@
        // Host exceptions
        $hosts = $rcmail->config->get('password_hosts');
        if (!empty($hosts) && !in_array($_SESSION['storage_host'], $hosts)) {
        if (!empty($hosts) && !in_array($_SESSION['storage_host'], (array) $hosts)) {
            return false;
        }
@@ -403,6 +405,9 @@
    {
        $method = strtolower($method);
        $rcmail = rcmail::get_instance();
        $prefix = '';
        $crypted = '';
        $default = false;
        if (empty($method) || $method == 'default') {
            $method   = $rcmail->config->get('password_algorithm');
@@ -547,7 +552,7 @@
        case 'samba':
            if (function_exists('hash')) {
                $crypted = hash('md4', rcube_charset::convert($password, RCUBE_CHARSET, 'UTF-16LE'));
                $crypted = strtoupper($crypted_password);
                $crypted = strtoupper($crypted);
            }
            else {
                rcube::raise_error(array(
@@ -585,14 +590,14 @@
                return false;
            }
            else {
                fwrite($pipe, $passwd . "\n", 1+strlen($passwd)); usleep(1000);
                fwrite($pipe, $passwd . "\n", 1+strlen($passwd));
                fwrite($pipe, $password . "\n", 1+strlen($password)); usleep(1000);
                fwrite($pipe, $password . "\n", 1+strlen($password));
                pclose($pipe);
                $crypted = trim(file_get_contents($tmpfile), "\n");
                unlink($tmpfile);
                if (!preg_match('/^\{' . $method . '\}/', $newpass)) {
                if (!preg_match('/^\{' . $method . '\}/', $crypted)) {
                    return false;
                }