alecpl
2010-04-01 7fdb9da98e080ad623e3099c05eab17041013cab
program/include/rcmail.php
@@ -292,8 +292,8 @@
  public function get_address_sources($writeable = false)
  {
    $abook_type = strtolower($this->config->get('address_book_type'));
    $ldap_config = (array)$this->config->get('ldap_public');
    $autocomplete = (array)$this->config->get('autocomplete_addressbooks');
    $ldap_config = $this->config->get('ldap_public');
    $autocomplete = (array) $this->config->get('autocomplete_addressbooks');
    $list = array();
    // We are using the DB address book
@@ -308,7 +308,8 @@
      );
    }
    if (is_array($ldap_config)) {
    if ($ldap_config) {
      $ldap_config = (array) $ldap_config;
      foreach ($ldap_config as $id => $prop)
        $list[$id] = array(
          'id' => $id,
@@ -329,7 +330,7 @@
        }
      }
    }
    return $list;
  }
  
@@ -1064,23 +1065,25 @@
      mcrypt_generic_deinit($td);
      mcrypt_module_close($td);
    }
    else if (function_exists('des'))
    {
      define('DES_IV_SIZE', 8);
      $iv = '';
      for ($i = 0; $i < constant('DES_IV_SIZE'); $i++)
        $iv .= sprintf("%c", mt_rand(0, 255));
      $cipher = $iv . des($this->config->get_crypto_key($key), $clear, 1, 1, $iv);
    else {
      @include_once('lib/des.inc');
      if (function_exists('des')) {
        $des_iv_size = 8;
        $iv = '';
        for ($i = 0; $i < $des_iv_size; $i++)
          $iv .= sprintf("%c", mt_rand(0, 255));
        $cipher = $iv . des($this->config->get_crypto_key($key), $clear, 1, 1, $iv);
      }
      else {
        raise_error(array(
          'code' => 500, 'type' => 'php',
          'file' => __FILE__, 'line' => __LINE__,
          'message' => "Could not perform encryption; make sure Mcrypt is installed or lib/des.inc is available"
        ), true, true);
      }
    }
    else
    {
      raise_error(array(
        'code' => 500, 'type' => 'php',
        'file' => __FILE__, 'line' => __LINE__,
        'message' => "Could not perform encryption; make sure Mcrypt is installed or lib/des.inc is available"
      ), true, true);
    }
    return $base64 ? base64_encode($cipher) : $cipher;
  }
@@ -1110,22 +1113,24 @@
      mcrypt_generic_deinit($td);
      mcrypt_module_close($td);
    }
    else if (function_exists('des'))
    {
      define('DES_IV_SIZE', 8);
      $iv = substr($cipher, 0, constant('DES_IV_SIZE'));
      $cipher = substr($cipher, constant('DES_IV_SIZE'));
      $clear = des($this->config->get_crypto_key($key), $cipher, 0, 1, $iv);
    else {
      @include_once('lib/des.inc');
      if (function_exists('des')) {
        $des_iv_size = 8;
        $iv = substr($cipher, 0, $des_iv_size);
        $cipher = substr($cipher, $des_iv_size);
        $clear = des($this->config->get_crypto_key($key), $cipher, 0, 1, $iv);
      }
      else {
        raise_error(array(
          'code' => 500, 'type' => 'php',
          'file' => __FILE__, 'line' => __LINE__,
          'message' => "Could not perform decryption; make sure Mcrypt is installed or lib/des.inc is available"
        ), true, true);
      }
    }
    else
    {
      raise_error(array(
        'code' => 500, 'type' => 'php',
        'file' => __FILE__, 'line' => __LINE__,
        'message' => "Could not perform decryption; make sure Mcrypt is installed or lib/des.inc is available"
      ), true, true);
    }
    /*-
     * Trim PHP's padding and the canary byte; see note in
     * rcmail::encrypt() and http://php.net/mcrypt_generic#68082