thomascube
2011-03-08 fb061aaecead8248d1a5cc43cc9593832d7bbdc0
Use PHPs session_regenerte_id() instead of using (unreliable) mt_rand() function (#1486281)

2 files modified
17 ■■■■ changed files
CHANGELOG 1 ●●●● patch | view | raw | blame | history
program/include/rcube_session.php 16 ●●●● patch | view | raw | blame | history
CHANGELOG
@@ -1,6 +1,7 @@
CHANGELOG Roundcube Webmail
===========================
- Get around unreliable rand() and mt_rand() in session ID generation (#1486281)
- Fix some emails are not shown using Cyrus IMAP (#1487820)
- Fix handling of mime-encoded words with non-integral number of octets in a word (#1487801)
- New config option for custom logo
program/include/rcube_session.php
@@ -212,20 +212,8 @@
    $this->destroy(session_id());
    $this->vars = false;
    $randval = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
    for ($random = '', $i=1; $i <= 32; $i++) {
      $random .= substr($randval, mt_rand(0,(strlen($randval) - 1)), 1);
    }
    // use md5 value for id
    $this->key = md5($random);
    session_id($this->key);
    $cookie   = session_get_cookie_params();
    $lifetime = $cookie['lifetime'] ? time() + $cookie['lifetime'] : 0;
    rcmail::setcookie(session_name(), $this->key, $lifetime);
    session_regenerate_id(false);
    $this->key = session_id();
    return true;
  }