fluxbb-1.5.2 to fluxbb-1.5.3 Legend
Lines removed 
Lines changed
 Lines added

a/db_update.php b/db_update.php
  7:  */  7:  */
  8:   8: 
  9: // The FluxBB version this script updates to  9: // The FluxBB version this script updates to
 10: define('UPDATE_TO', '1.5.2'); 10: define('UPDATE_TO', '1.5.3');
 11:  11: 
 12: define('UPDATE_TO_DB_REVISION', 18); 12: define('UPDATE_TO_DB_REVISION', 18);
 13: define('UPDATE_TO_SI_REVISION', 2); 13: define('UPDATE_TO_SI_REVISION', 2);


a/include/common.php b/include/common.php
 10:     exit('The constant PUN_ROOT must be defined and point to a valid FluxBB installation root directory.'); 10:     exit('The constant PUN_ROOT must be defined and point to a valid FluxBB installation root directory.');
 11:  11: 
 12: // Define the version and database revision that this code was written for 12: // Define the version and database revision that this code was written for
 13: define('FORUM_VERSION', '1.5.2'); 13: define('FORUM_VERSION', '1.5.3');
 14:  14: 
 15: define('FORUM_DB_REVISION', 18); 15: define('FORUM_DB_REVISION', 18);
 16: define('FORUM_SI_REVISION', 2); 16: define('FORUM_SI_REVISION', 2);


a/include/functions.php b/include/functions.php
  6:  * License: http://www.gnu.org/licenses/gpl.html GPL version 2 or higher  6:  * License: http://www.gnu.org/licenses/gpl.html GPL version 2 or higher
  7:  */  7:  */
  8:   8: 
   9: include PUN_ROOT.'include/srand.php';
  10: 
  9:  11: 
 10: // 12: //
 11: // Return current timestamp (with microseconds) as a float 13: // Return current timestamp (with microseconds) as a float
984: //986: //
985: function random_key($len, $readable = false, $hash = false)987: function random_key($len, $readable = false, $hash = false)
986: {988: {
987:     $key = '';989:     $key = secure_random_bytes($len);
988: 990: 
989:     if ($hash)991:     if ($hash)
990:         $key = substr(pun_hash(uniqid(rand(), true)), 0, $len);992:         $key = substr(bin2hex($key), 0, $len);
991:     else if ($readable)993:     else if ($readable)
992:     {994:         $key = substr(base64_encode($key), 0, $len);
993:         $chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'; 
994:  
995:         for ($i = 0; $i < $len; ++$i) 
996:             $key .= substr($chars, (mt_rand() % strlen($chars)), 1); 
997:     } 
998:     else 
999:     { 
1000:         for ($i = 0; $i < $len; ++$i) 
1001:             $key .= chr(mt_rand(33, 126)); 
1002:     } 
1003: 995: 
1004:     return $key;996:     return $key;
1005: }997: }


/dev/null b/include/srand.php
   1: <?php
   2: 
   3: /*
   4:  * Author:
   5:  * George Argyros <argyros.george@gmail.com>
   6:  *
   7:  * Copyright (c) 2012, George Argyros
   8:  * All rights reserved.
   9:  *
  10:  * Redistribution and use in source and binary forms, with or without
  11:  * modification, are permitted provided that the following conditions are met:
  12:  *    * Redistributions of source code must retain the above copyright
  13:  *      notice, this list of conditions and the following disclaimer.
  14:  *    * Redistributions in binary form must reproduce the above copyright
  15:  *      notice, this list of conditions and the following disclaimer in the
  16:  *      documentation and/or other materials provided with the distribution.
  17:  *    * Neither the name of the <organization> nor the
  18:  *      names of its contributors may be used to endorse or promote products
  19:  *      derived from this software without specific prior written permission.
  20:  *
  21:  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
  22:  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
  23:  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
  24:  * DISCLAIMED. IN NO EVENT SHALL GEORGE ARGYROS BE LIABLE FOR ANY
  25:  * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
  26:  * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
  27:  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
  28:  * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
  29:  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
  30:  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  31:  *
  32:  *
  33:  *
  34:  * The function is providing, at least at the systems tested :), 
  35:  * $len bytes of entropy under any PHP installation or operating system.
  36:  * The execution time should be at most 10-20 ms in any system.
  37:  */
  38: function secure_random_bytes($len = 10)
  39: {  
  40:  
  41:    /*
  42:     * Our primary choice for a cryptographic strong randomness function is
  43:     * openssl_random_pseudo_bytes. 
  44:     */
  45:    $SSLstr = '4'; // http://xkcd.com/221/
  46:    if (function_exists('openssl_random_pseudo_bytes') && 
  47:        (version_compare(PHP_VERSION, '5.3.4') >= 0 || 
  48:     substr(PHP_OS, 0, 3) !== 'WIN'))
  49:    {
  50:       $SSLstr = openssl_random_pseudo_bytes($len, $strong);
  51:       if ($strong)
  52:          return $SSLstr;
  53:    }
  54: 
  55:    /*
  56:     * If mcrypt extension is available then we use it to gather entropy from 
  57:     * the operating system's PRNG. This is better than reading /dev/urandom 
  58:     * directly since it avoids reading larger blocks of data than needed. 
  59:     * Older versions of mcrypt_create_iv may be broken or take too much time 
  60:     * to finish so we only use this function with PHP 5.3 and above.
  61:     */
  62:    if (function_exists('mcrypt_create_iv') && 
  63:       (version_compare(PHP_VERSION, '5.3.0') >= 0 || 
  64:        substr(PHP_OS, 0, 3) !== 'WIN')) 
  65:    {
  66:       $str = mcrypt_create_iv($len, MCRYPT_DEV_URANDOM);
  67:       if ($str !== false)
  68:          return $str;    
  69:    }
  70: 
  71: 
  72:    /*
  73:     * No build-in crypto randomness function found. We collect any entropy 
  74:     * available in the PHP core PRNGs along with some filesystem info and memory
  75:     * stats. To make this data cryptographically strong we add data either from 
  76:     * /dev/urandom or if its unavailable, we gather entropy by measuring the 
  77:     * time needed to compute a number of SHA-1 hashes. 
  78:     */
  79:    $str = '';
  80:    $bits_per_round = 2; // bits of entropy collected in each clock drift round
  81:    $msec_per_round = 400; // expected running time of each round in microseconds
  82:    $hash_len = 20; // SHA-1 Hash length
  83:    $total = $len; // total bytes of entropy to collect
  84: 
  85:    $handle = @fopen('/dev/urandom', 'rb');   
  86:    if ($handle && function_exists('stream_set_read_buffer'))
  87:       @stream_set_read_buffer($handle, 0);
  88: 
  89:    do
  90:    {
  91:       $bytes = ($total > $hash_len)? $hash_len : $total;
  92:       $total -= $bytes;
  93: 
  94:       //collect any entropy available from the PHP system and filesystem
  95:       $entropy = rand() . uniqid(mt_rand(), true) . $SSLstr;
  96:       $entropy .= implode('', @fstat(@fopen( __FILE__, 'r')));
  97:       $entropy .= memory_get_usage();
  98:       if ($handle) 
  99:       {
 100:          $entropy .= @fread($handle, $bytes);
 101:       }
 102:       else
 103:       {                   
 104:          // Measure the time that the operations will take on average
 105:          for ($i = 0; $i < 3; $i ++) 
 106:          {
 107:             $c1 = microtime(true);
 108:             $var = sha1(mt_rand());
 109:             for ($j = 0; $j < 50; $j++)
 110:             {
 111:                $var = sha1($var);
 112:             }
 113:             $c2 = microtime(true);
 114:             $entropy .= $c1 . $c2;
 115:          }
 116: 
 117:          // Based on the above measurement determine the total rounds
 118:          // in order to bound the total running time.    
 119:          $rounds = (int)($msec_per_round*50 / (int)(($c2-$c1)*1000000));
 120: 
 121:          // Take the additional measurements. On average we can expect
 122:          // at least $bits_per_round bits of entropy from each measurement.
 123:          $iter = $bytes*(int)(ceil(8 / $bits_per_round));
 124:          for ($i = 0; $i < $iter; $i ++)
 125:          {
 126:             $c1 = microtime();
 127:             $var = sha1(mt_rand());
 128:             for ($j = 0; $j < $rounds; $j++)
 129:             {
 130:                $var = sha1($var);
 131:             }
 132:             $c2 = microtime();
 133:             $entropy .= $c1 . $c2;
 134:          }
 135:             
 136:       } 
 137:       // We assume sha1 is a deterministic extractor for the $entropy variable.
 138:       $str .= sha1($entropy, true);
 139:    } while ($len > strlen($str));
 140:    
 141:    if ($handle) 
 142:       @fclose($handle);
 143:    
 144:    return substr($str, 0, $len);
 145: }
  0: 146: 


a/install.php b/install.php
  7:  */  7:  */
  8:   8: 
  9: // The FluxBB version this script installs  9: // The FluxBB version this script installs
 10: define('FORUM_VERSION', '1.5.2'); 10: define('FORUM_VERSION', '1.5.3');
 11:  11: 
 12: define('FORUM_DB_REVISION', 18); 12: define('FORUM_DB_REVISION', 18);
 13: define('FORUM_SI_REVISION', 2); 13: define('FORUM_SI_REVISION', 2);


a/profile.php b/profile.php
1783:                         if ($cur_category != 0)1783:                         if ($cur_category != 0)
1784:                             echo "\n\t\t\t\t\t\t\t".'</div>'."\n";1784:                             echo "\n\t\t\t\t\t\t\t".'</div>'."\n";
1785: 1785: 
1786:                         echo "\t\t\t\t\t\t\t".'<div class="conl">'."\n\t\t\t\t\t\t\t\t".'<p><strong>'.$cur_forum['cat_name'].'</strong></p>'."\n\t\t\t\t\t\t\t\t".'<div class="rbox">';1786:                         echo "\t\t\t\t\t\t\t".'<div class="conl">'."\n\t\t\t\t\t\t\t\t".'<p><strong>'.pun_htmlspecialchars($cur_forum['cat_name']).'</strong></p>'."\n\t\t\t\t\t\t\t\t".'<div class="rbox">';
1787:                         $cur_category = $cur_forum['cid'];1787:                         $cur_category = $cur_forum['cid'];
1788:                     }1788:                     }
1789: 1789: 


hdiff - version: 2.1.0 (modified)