fluxbb-1.4.9 to fluxbb-1.4.12 Legend
Lines removed 
Lines changed
 Lines added

a/admin_bans.php b/admin_bans.php
127:                                 <tr>127:                                 <tr>
128:                                     <th scope="row"><?php echo $lang_admin_bans['IP label'] ?></th>128:                                     <th scope="row"><?php echo $lang_admin_bans['IP label'] ?></th>
129:                                     <td>129:                                     <td>
130:                                         <input type="text" name="ban_ip" size="45" maxlength="255" value="<?php if (isset($ban_ip)) echo $ban_ip; ?>" tabindex="2" />130:                                         <input type="text" name="ban_ip" size="45" maxlength="255" value="<?php if (isset($ban_ip)) echo pun_htmlspecialchars($ban_ip); ?>" tabindex="2" />
131:                                         <span><?php echo $lang_admin_bans['IP help'] ?><?php if ($ban_user != '' && isset($user_id)) printf(' '.$lang_admin_bans['IP help link'], '<a href="admin_users.php?ip_stats='.$user_id.'">'.$lang_admin_common['here'].'</a>') ?></span>131:                                         <span><?php echo $lang_admin_bans['IP help'] ?><?php if ($ban_user != '' && isset($user_id)) printf(' '.$lang_admin_bans['IP help link'], '<a href="admin_users.php?ip_stats='.$user_id.'">'.$lang_admin_common['here'].'</a>') ?></span>
132:                                     </td>132:                                     </td>
133:                                 </tr>133:                                 </tr>
435:                 <tr>435:                 <tr>
436:                     <td class="tcl"><?php echo ($ban_data['username'] != '') ? pun_htmlspecialchars($ban_data['username']) : '&#160;' ?></td>436:                     <td class="tcl"><?php echo ($ban_data['username'] != '') ? pun_htmlspecialchars($ban_data['username']) : '&#160;' ?></td>
437:                     <td class="tc2"><?php echo ($ban_data['email'] != '') ? $ban_data['email'] : '&#160;' ?></td>437:                     <td class="tc2"><?php echo ($ban_data['email'] != '') ? $ban_data['email'] : '&#160;' ?></td>
438:                     <td class="tc3"><?php echo ($ban_data['ip'] != '') ? $ban_data['ip'] : '&#160;' ?></td>438:                     <td class="tc3"><?php echo ($ban_data['ip'] != '') ? pun_htmlspecialchars($ban_data['ip']) : '&#160;' ?></td>
439:                     <td class="tc4"><?php echo $expire ?></td>439:                     <td class="tc4"><?php echo $expire ?></td>
440:                     <td class="tc5"><?php echo ($ban_data['message'] != '') ? pun_htmlspecialchars($ban_data['message']) : '&#160;' ?></td>440:                     <td class="tc5"><?php echo ($ban_data['message'] != '') ? pun_htmlspecialchars($ban_data['message']) : '&#160;' ?></td>
441:                     <td class="tc6"><?php echo ($ban_data['ban_creator_username'] != '') ? '<a href="profile.php?id='.$ban_data['ban_creator'].'">'.pun_htmlspecialchars($ban_data['ban_creator_username']).'</a>' : $lang_admin_bans['Unknown'] ?></td>441:                     <td class="tc6"><?php echo ($ban_data['ban_creator_username'] != '') ? '<a href="profile.php?id='.$ban_data['ban_creator'].'">'.pun_htmlspecialchars($ban_data['ban_creator_username']).'</a>' : $lang_admin_bans['Unknown'] ?></td>


a/admin_users.php b/admin_users.php
 83:  83: 
 84: ?> 84: ?>
 85:                 <tr> 85:                 <tr>
 86:                     <td class="tcl"><a href="moderate.php?get_host=<?php echo $cur_ip['poster_ip'] ?>"><?php echo $cur_ip['poster_ip'] ?></a></td> 86:                     <td class="tcl"><a href="moderate.php?get_host=<?php echo pun_htmlspecialchars($cur_ip['poster_ip']) ?>"><?php echo pun_htmlspecialchars($cur_ip['poster_ip']) ?>"><?php echo $cur_ip['poster_ip'] ?></a></td>
 87:                     <td class="tc2"><?php echo format_time($cur_ip['last_used']) ?></td> 87:                     <td class="tc2"><?php echo format_time($cur_ip['last_used']) ?></td>
 88:                     <td class="tc3"><?php echo $cur_ip['used_times'] ?></td> 88:                     <td class="tc3"><?php echo $cur_ip['used_times'] ?></td>
 89:                     <td class="tcr"><a href="admin_users.php?show_users=<?php echo $cur_ip['poster_ip'] ?>"><?php echo $lang_admin_users['Results find more link'] ?></a></td> 89:                     <td class="tcr"><a href="admin_users.php?show_users=<?php echo pun_htmlspecialchars($cur_ip['poster_ip']) ?>"><?php echo $lang_admin_users['Results find more link'] ?></a></td>
 90:                 </tr> 90:                 </tr>
 91: <?php 91: <?php
 92:  92: 


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.4.9'); 10: define('UPDATE_TO', '1.4.12');
 11:  11: 
 12: define('UPDATE_TO_DB_REVISION', 15); 12: define('UPDATE_TO_DB_REVISION', 15);
 13: define('UPDATE_TO_SI_REVISION', 2); 13: define('UPDATE_TO_SI_REVISION', 2);
512: <title><?php echo $lang_update['Update'] ?></title>512: <title><?php echo $lang_update['Update'] ?></title>
513: <link rel="stylesheet" type="text/css" href="style/<?php echo $default_style ?>.css" />513: <link rel="stylesheet" type="text/css" href="style/<?php echo $default_style ?>.css" />
514: </head>514: </head>
515: <body onload="document.getElementById('install').req_db_pass.focus();document.getElementById('install').start.disabled=false;">515: <body onLoad="document.getElementById('install').req_db_pass.focus();document.getElementById('install').start.disabled=false;">
516: 516: 
517: <div id="pundb_update" class="pun">517: <div id="pundb_update" class="pun">
518: <div class="top-box"><div><!-- Top Corners --></div></div>518: <div class="top-box"><div><!-- Top Corners --></div></div>


a/delete.php b/delete.php
 48:  48: 
 49: if (isset($_POST['delete'])) 49: if (isset($_POST['delete']))
 50: { 50: {
 51:     if ($is_admmod) 51:     // Make sure they got here from the site
 52:         confirm_referrer('delete.php'); 52:     confirm_referrer('delete.php');
 53:  53: 
 54:     require PUN_ROOT.'include/search_idx.php'; 54:     require PUN_ROOT.'include/search_idx.php';
 55:  55: 


a/edit.php b/edit.php
 53:  53: 
 54: if (isset($_POST['form_sent'])) 54: if (isset($_POST['form_sent']))
 55: { 55: {
 56:     if ($is_admmod) 56:     // Make sure they got here from the site
 57:         confirm_referrer('edit.php'); 57:     confirm_referrer('edit.php');
 58:  58: 
 59:     // If it's a topic it must contain a subject 59:     // If it's a topic it must contain a subject
 60:     if ($can_edit_subject) 60:     if ($can_edit_subject)


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.4.9'); 13: define('FORUM_VERSION', '1.4.12');
 14:  14: 
 15: define('FORUM_DB_REVISION', 15); 15: define('FORUM_DB_REVISION', 15);
 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'; 
  9:  10: 
 10: // 11: //
 11: // Return current timestamp (with microseconds) as a float 12: // Return current timestamp (with microseconds) as a float
244:     $remote_addr = get_remote_address();245:     $remote_addr = get_remote_address();
245: 246: 
246:     // Fetch guest user247:     // Fetch guest user
247:     $result = $db->query('SELECT u.*, g.*, o.logged, o.last_post, o.last_search FROM '.$db->prefix.'users AS u INNER JOIN '.$db->prefix.'groups AS g ON u.group_id=g.g_id LEFT JOIN '.$db->prefix.'online AS o ON o.ident=\''.$remote_addr.'\' WHERE u.id=1') or error('Unable to fetch guest information', __FILE__, __LINE__, $db->error());248:     $result = $db->query('SELECT u.*, g.*, o.logged, o.last_post, o.last_search FROM '.$db->prefix.'users AS u INNER JOIN '.$db->prefix.'groups AS g ON u.group_id=g.g_id LEFT JOIN '.$db->prefix.'online AS o ON o.ident=\''.$db->escape($remote_addr).'\' WHERE u.id=1') or error('Unable to fetch guest information', __FILE__, __LINE__, $db->error());
248:     if (!$db->num_rows($result))249:     if (!$db->num_rows($result))
249:         exit('Unable to fetch guest information. Your database must contain both a guest user and a guest user group.');250:         exit('Unable to fetch guest information. Your database must contain both a guest user and a guest user group.');
250: 251: 
1013: //1014: //
1014: function random_key($len, $readable = false, $hash = false)1015: function random_key($len, $readable = false, $hash = false)
1015: {1016: {
1016:     $key = '';1017:     $key = secure_random_bytes($len); 
1017: 1018:     if ($hash)  
1018:     if ($hash)1019:         $key = substr(bin2hex($key), 0, $len);  
1019:         $key = substr(pun_hash(uniqid(rand(), true)), 0, $len);1020:     else if ($readable)  
1020:     else if ($readable)1021:         $key = substr(base64_encode($key), 0, $len);  
1021:     { 
1022:         $chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'; 
1023:  
1024:         for ($i = 0; $i < $len; ++$i) 
1025:             $key .= substr($chars, (mt_rand() % strlen($chars)), 1); 
1026:     } 
1027:     else 
1028:     { 
1029:         for ($i = 0; $i < $len; ++$i) 
1030:             $key .= chr(mt_rand(33, 126)); 
1031:     } 
1032: 1022: 
1033:     return $key;1023:     return $key;
1034: }1024: }
1037: //1027: //
1038: // Make sure that HTTP_REFERER matches base_url/script1028: // Make sure that HTTP_REFERER matches base_url/script
1039: //1029: //
1040: function confirm_referrer($script, $error_msg = false)1030: function confirm_referrer($scripts, $error_msg = false)
1041: {1031: {
1042:     global $pun_config, $lang_common;1032:     global $pun_config, $lang_common;
1043: 1033: 
 1034:     if (!is_array($scripts))
 1035:         $scripts = array($scripts);
 1036: 
1044:     // There is no referrer1037:     // There is no referrer
1045:     if (empty($_SERVER['HTTP_REFERER']))1038:     if (empty($_SERVER['HTTP_REFERER']))
1046:         message($error_msg ? $error_msg : $lang_common['Bad referrer']);1039:         message($error_msg ? $error_msg : $lang_common['Bad referrer']);
1050:     if (strpos($referrer['host'], 'www.') === 0)1043:     if (strpos($referrer['host'], 'www.') === 0)
1051:         $referrer['host'] = substr($referrer['host'], 4);1044:         $referrer['host'] = substr($referrer['host'], 4);
1052: 1045: 
1053:     $valid = parse_url(strtolower(get_base_url().'/'.$script));1046:     $valid_paths = array();
1054:     // Remove www subdomain if it exists1047:     foreach ($scripts as $script)
1055:     if (strpos($valid['host'], 'www.') === 0)1048:     {
1056:         $valid['host'] = substr($valid['host'], 4);1049:         $valid = parse_url(strtolower(get_base_url().'/'.$script));
 1050:         // Remove www subdomain if it exists
 1051:         if (strpos($valid['host'], 'www.') === 0)
 1052:             $valid['host'] = substr($valid['host'], 4);
 1053: 
 1054:         $valid_host = $valid['host'];
 1055:         $valid_paths[] = $valid['path'];
 1056:     }
1057: 1057: 
1058:     // Check the host and path match. Ignore the scheme, port, etc.1058:     // Check the host and path match. Ignore the scheme, port, etc.
1059:     if ($referrer['host'] != $valid['host'] || $referrer['path'] != $valid['path'])1059:     if ($referrer['host'] != $valid_host || !in_array($referrer['path'], $valid_paths, true))
1060:         message($error_msg ? $error_msg : $lang_common['Bad referrer']);1060:         message($error_msg ? $error_msg : $lang_common['Bad referrer']);
1061: }1061: }
1062: 1062: 


/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 = get_microtime();
 108:             $var = sha1(mt_rand());
 109:             for ($j = 0; $j < 50; $j++)
 110:             {
 111:                $var = sha1($var);
 112:             }
 113:             $c2 = get_microtime();
 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 = time();
 127:             $var = sha1(mt_rand());
 128:             for ($j = 0; $j < $rounds; $j++)
 129:             {
 130:                $var = sha1($var);
 131:             }
 132:             $c2 = get_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.4.9'); 10: define('FORUM_VERSION', '1.4.12');
 11:  11: 
 12: define('FORUM_DB_REVISION', 15); 12: define('FORUM_DB_REVISION', 15);
 13: define('FORUM_SI_REVISION', 2); 13: define('FORUM_SI_REVISION', 2);
1573:     $db->query('INSERT INTO '.$db_prefix.'users (group_id, username, password, email) VALUES(3, \''.$db->escape($lang_install['Guest']).'\', \''.$db->escape($lang_install['Guest']).'\', \''.$db->escape($lang_install['Guest']).'\')')1573:     $db->query('INSERT INTO '.$db_prefix.'users (group_id, username, password, email) VALUES(3, \''.$db->escape($lang_install['Guest']).'\', \''.$db->escape($lang_install['Guest']).'\', \''.$db->escape($lang_install['Guest']).'\')')
1574:         or error('Unable to add guest user. Please check your configuration and try again', __FILE__, __LINE__, $db->error());1574:         or error('Unable to add guest user. Please check your configuration and try again', __FILE__, __LINE__, $db->error());
1575: 1575: 
1576:     $db->query('INSERT INTO '.$db_prefix.'users (group_id, username, password, email, language, style, num_posts, last_post, registered, registration_ip, last_visit) VALUES(1, \''.$db->escape($username).'\', \''.pun_hash($password1).'\', \''.$email.'\', \''.$db->escape($default_lang).'\', \''.$db->escape($default_style).'\', 1, '.$now.', '.$now.', \''.get_remote_address().'\', '.$now.')')1576:     $db->query('INSERT INTO '.$db_prefix.'users (group_id, username, password, email, language, style, num_posts, last_post, registered, registration_ip, last_visit) VALUES(1, \''.$db->escape($username).'\', \''.pun_hash($password1).'\', \''.$email.'\', \''.$db->escape($default_lang).'\', \''.$db->escape($default_style).'\', 1, '.$now.', '.$now.', \''.$db->escape(get_remote_address()).'\', '.$now.')')
1577:         or error('Unable to add administrator user. Please check your configuration and try again', __FILE__, __LINE__, $db->error());1577:         or error('Unable to add administrator user. Please check your configuration and try again', __FILE__, __LINE__, $db->error());
1578: 1578: 
1579:     // Enable/disable avatars depending on file_uploads setting in PHP configuration1579:     // Enable/disable avatars depending on file_uploads setting in PHP configuration
1686:     $db->query('INSERT INTO '.$db_prefix.'topics (poster, subject, posted, first_post_id, last_post, last_post_id, last_poster, forum_id) VALUES(\''.$db->escape($username).'\', \''.$db->escape($subject).'\', '.$now.', 1, '.$now.', 1, \''.$db->escape($username).'\', 1)')1686:     $db->query('INSERT INTO '.$db_prefix.'topics (poster, subject, posted, first_post_id, last_post, last_post_id, last_poster, forum_id) VALUES(\''.$db->escape($username).'\', \''.$db->escape($subject).'\', '.$now.', 1, '.$now.', 1, \''.$db->escape($username).'\', 1)')
1687:         or error('Unable to insert into table '.$db_prefix.'topics. Please check your configuration and try again', __FILE__, __LINE__, $db->error());1687:         or error('Unable to insert into table '.$db_prefix.'topics. Please check your configuration and try again', __FILE__, __LINE__, $db->error());
1688: 1688: 
1689:     $db->query('INSERT INTO '.$db_prefix.'posts (poster, poster_id, poster_ip, message, posted, topic_id) VALUES(\''.$db->escape($username).'\', 2, \''.get_remote_address().'\', \''.$db->escape($message).'\', '.$now.', 1)')1689:     $db->query('INSERT INTO '.$db_prefix.'posts (poster, poster_id, poster_ip, message, posted, topic_id) VALUES(\''.$db->escape($username).'\', 2, \''.$db->escape(get_remote_address()).'\', \''.$db->escape($message).'\', '.$now.', 1)')
1690:         or error('Unable to insert into table '.$db_prefix.'posts. Please check your configuration and try again', __FILE__, __LINE__, $db->error());1690:         or error('Unable to insert into table '.$db_prefix.'posts. Please check your configuration and try again', __FILE__, __LINE__, $db->error());
1691: 1691: 
1692:     // Index the test post so searching for it works1692:     // Index the test post so searching for it works


a/misc.php b/misc.php
 99:  99: 
100:     if (isset($_POST['form_sent']))100:     if (isset($_POST['form_sent']))
101:     {101:     {
 102:         confirm_referrer('misc.php');
 103: 
102:         // Clean up message and subject from POST104:         // Clean up message and subject from POST
103:         $subject = pun_trim($_POST['req_subject']);105:         $subject = pun_trim($_POST['req_subject']);
104:         $message = pun_trim($_POST['req_message']);106:         $message = pun_trim($_POST['req_message']);
211: 213: 
212:     if (isset($_POST['form_sent']))214:     if (isset($_POST['form_sent']))
213:     {215:     {
 216:         // Make sure they got here from the site
 217:         confirm_referrer('misc.php');
 218:     
214:         // Clean up reason from POST219:         // Clean up reason from POST
215:         $reason = pun_linebreaks(pun_trim($_POST['req_reason']));220:         $reason = pun_linebreaks(pun_trim($_POST['req_reason']));
216:         if ($reason == '')221:         if ($reason == '')


a/post.php b/post.php
 63:     if (!isset($_POST['preview']) && $pun_user['last_post'] != '' && (time() - $pun_user['last_post']) < $pun_user['g_post_flood']) 63:     if (!isset($_POST['preview']) && $pun_user['last_post'] != '' && (time() - $pun_user['last_post']) < $pun_user['g_post_flood'])
 64:         $errors[] = $lang_post['Flood start'].' '.$pun_user['g_post_flood'].' '.$lang_post['flood end']; 64:         $errors[] = $lang_post['Flood start'].' '.$pun_user['g_post_flood'].' '.$lang_post['flood end'];
 65:  65: 
  66:     // Make sure they got here from the site
  67:     confirm_referrer(array('post.php', 'viewtopic.php'));
  68: 
 66:     // If it's a new topic 69:     // If it's a new topic
 67:     if ($fid) 70:     if ($fid)
 68:     { 71:     {
171:                 $new_tid = $tid;174:                 $new_tid = $tid;
172: 175: 
173:                 // Insert the new post176:                 // Insert the new post
174:                 $db->query('INSERT INTO '.$db->prefix.'posts (poster, poster_id, poster_ip, message, hide_smilies, posted, topic_id) VALUES(\''.$db->escape($username).'\', '.$pun_user['id'].', \''.get_remote_address().'\', \''.$db->escape($message).'\', '.$hide_smilies.', '.$now.', '.$tid.')') or error('Unable to create post', __FILE__, __LINE__, $db->error());177:                 $db->query('INSERT INTO '.$db->prefix.'posts (poster, poster_id, poster_ip, message, hide_smilies, posted, topic_id) VALUES(\''.$db->escape($username).'\', '.$pun_user['id'].', \''.$db->escape(get_remote_address()).'\', \''.$db->escape($message).'\', '.$hide_smilies.', '.$now.', '.$tid.')') or error('Unable to create post', __FILE__, __LINE__, $db->error());
175:                 $new_pid = $db->insert_id();178:                 $new_pid = $db->insert_id();
176: 179: 
177:                 // To subscribe or not to subscribe, that ...180:                 // To subscribe or not to subscribe, that ...
187:             {190:             {
188:                 // It's a guest. Insert the new post191:                 // It's a guest. Insert the new post
189:                 $email_sql = ($pun_config['p_force_guest_email'] == '1' || $email != '') ? '\''.$db->escape($email).'\'' : 'NULL';192:                 $email_sql = ($pun_config['p_force_guest_email'] == '1' || $email != '') ? '\''.$db->escape($email).'\'' : 'NULL';
190:                 $db->query('INSERT INTO '.$db->prefix.'posts (poster, poster_ip, poster_email, message, hide_smilies, posted, topic_id) VALUES(\''.$db->escape($username).'\', \''.get_remote_address().'\', '.$email_sql.', \''.$db->escape($message).'\', '.$hide_smilies.', '.$now.', '.$tid.')') or error('Unable to create post', __FILE__, __LINE__, $db->error());193:                 $db->query('INSERT INTO '.$db->prefix.'posts (poster, poster_ip, poster_email, message, hide_smilies, posted, topic_id) VALUES(\''.$db->escape($username).'\', \''.$db->escape(get_remote_address()).'\', '.$email_sql.', \''.$db->escape($message).'\', '.$hide_smilies.', '.$now.', '.$tid.')') or error('Unable to create post', __FILE__, __LINE__, $db->error());
191:                 $new_pid = $db->insert_id();194:                 $new_pid = $db->insert_id();
192:             }195:             }
193: 196: 
293:                     $db->query('INSERT INTO '.$db->prefix.'topic_subscriptions (user_id, topic_id) VALUES('.$pun_user['id'].' ,'.$new_tid.')') or error('Unable to add subscription', __FILE__, __LINE__, $db->error());296:                     $db->query('INSERT INTO '.$db->prefix.'topic_subscriptions (user_id, topic_id) VALUES('.$pun_user['id'].' ,'.$new_tid.')') or error('Unable to add subscription', __FILE__, __LINE__, $db->error());
294: 297: 
295:                 // Create the post ("topic post")298:                 // Create the post ("topic post")
296:                 $db->query('INSERT INTO '.$db->prefix.'posts (poster, poster_id, poster_ip, message, hide_smilies, posted, topic_id) VALUES(\''.$db->escape($username).'\', '.$pun_user['id'].', \''.get_remote_address().'\', \''.$db->escape($message).'\', '.$hide_smilies.', '.$now.', '.$new_tid.')') or error('Unable to create post', __FILE__, __LINE__, $db->error());299:                 $db->query('INSERT INTO '.$db->prefix.'posts (poster, poster_id, poster_ip, message, hide_smilies, posted, topic_id) VALUES(\''.$db->escape($username).'\', '.$pun_user['id'].', \''.$db->escape(get_remote_address()).'\', \''.$db->escape($message).'\', '.$hide_smilies.', '.$now.', '.$new_tid.')') or error('Unable to create post', __FILE__, __LINE__, $db->error());
297:             }300:             }
298:             else301:             else
299:             {302:             {
300:                 // Create the post ("topic post")303:                 // Create the post ("topic post")
301:                 $email_sql = ($pun_config['p_force_guest_email'] == '1' || $email != '') ? '\''.$db->escape($email).'\'' : 'NULL';304:                 $email_sql = ($pun_config['p_force_guest_email'] == '1' || $email != '') ? '\''.$db->escape($email).'\'' : 'NULL';
302:                 $db->query('INSERT INTO '.$db->prefix.'posts (poster, poster_ip, poster_email, message, hide_smilies, posted, topic_id) VALUES(\''.$db->escape($username).'\', \''.get_remote_address().'\', '.$email_sql.', \''.$db->escape($message).'\', '.$hide_smilies.', '.$now.', '.$new_tid.')') or error('Unable to create post', __FILE__, __LINE__, $db->error());305:                 $db->query('INSERT INTO '.$db->prefix.'posts (poster, poster_ip, poster_email, message, hide_smilies, posted, topic_id) VALUES(\''.$db->escape($username).'\', \''.$db->escape(get_remote_address()).'\', '.$email_sql.', \''.$db->escape($message).'\', '.$hide_smilies.', '.$now.', '.$new_tid.')') or error('Unable to create post', __FILE__, __LINE__, $db->error());
303:             }306:             }
304:             $new_pid = $db->insert_id();307:             $new_pid = $db->insert_id();
305: 308: 


a/profile.php b/profile.php
 81:  81: 
 82:     if (isset($_POST['form_sent'])) 82:     if (isset($_POST['form_sent']))
 83:     { 83:     {
 84:         if ($pun_user['is_admmod']) 84:         // Make sure they got here from the site
 85:             confirm_referrer('profile.php'); 85:         confirm_referrer('profile.php');
 86:  86: 
 87:         $old_password = isset($_POST['req_old_password']) ? pun_trim($_POST['req_old_password']) : ''; 87:         $old_password = isset($_POST['req_old_password']) ? pun_trim($_POST['req_old_password']) : '';
 88:         $new_password1 = pun_trim($_POST['req_new_password1']); 88:         $new_password1 = pun_trim($_POST['req_new_password1']);
196:         if (pun_hash($_POST['req_password']) !== $pun_user['password'])196:         if (pun_hash($_POST['req_password']) !== $pun_user['password'])
197:             message($lang_profile['Wrong pass']);197:             message($lang_profile['Wrong pass']);
198: 198: 
 199:         // Make sure they got here from the site
 200:         confirm_referrer('profile.php');
 201: 
199:         require PUN_ROOT.'include/email.php';202:         require PUN_ROOT.'include/email.php';
200: 203: 
201:         // Validate the email address204:         // Validate the email address
323:         if (!isset($_FILES['req_file']))326:         if (!isset($_FILES['req_file']))
324:             message($lang_profile['No file']);327:             message($lang_profile['No file']);
325: 328: 
 329:         // Make sure they got here from the site
 330:         confirm_referrer('profile.php');
 331: 
326:         $uploaded_file = $_FILES['req_file'];332:         $uploaded_file = $_FILES['req_file'];
327: 333: 
328:         // Make sure the upload went smooth334:         // Make sure the upload went smooth
691:         $is_moderator))))                                                                            // or the user is another mod697:         $is_moderator))))                                                                            // or the user is another mod
692:         message($lang_common['No permission'], false, '403 Forbidden');698:         message($lang_common['No permission'], false, '403 Forbidden');
693: 699: 
694:     if ($pun_user['is_admmod'])700:     // Make sure they got here from the site
695:         confirm_referrer('profile.php');701:     confirm_referrer('profile.php');
696: 702: 
697:     $username_updated = false;703:     $username_updated = false;
698: 704: 
1771:                         if ($cur_category != 0)1777:                         if ($cur_category != 0)
1772:                             echo "\n\t\t\t\t\t\t\t".'</div>'."\n";1778:                             echo "\n\t\t\t\t\t\t\t".'</div>'."\n";
1773: 1779: 
1774:                         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">';1780:                         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">';
1775:                         $cur_category = $cur_forum['cid'];1781:                         $cur_category = $cur_forum['cid'];
1776:                     }1782:                     }
1777: 1783: 


a/register.php b/register.php
 66: if (isset($_POST['form_sent'])) 66: if (isset($_POST['form_sent']))
 67: { 67: {
 68:     // Check that someone from this IP didn't register a user within the last hour (DoS prevention) 68:     // Check that someone from this IP didn't register a user within the last hour (DoS prevention)
 69:     $result = $db->query('SELECT 1 FROM '.$db->prefix.'users WHERE registration_ip=\''.get_remote_address().'\' AND registered>'.(time() - 3600)) or error('Unable to fetch user info', __FILE__, __LINE__, $db->error()); 69:     $result = $db->query('SELECT 1 FROM '.$db->prefix.'users WHERE registration_ip=\''.$db->escape(get_remote_address()).'\' AND registered>'.(time() - 3600)) or error('Unable to fetch user info', __FILE__, __LINE__, $db->error());
 70:  70: 
 71:     if ($db->num_rows($result)) 71:     if ($db->num_rows($result))
 72:         message($lang_register['Registration flood']); 72:         message($lang_register['Registration flood']);
156:         $password_hash = pun_hash($password1);156:         $password_hash = pun_hash($password1);
157: 157: 
158:         // Add the user158:         // Add the user
159:         $db->query('INSERT INTO '.$db->prefix.'users (username, group_id, password, email, email_setting, timezone, dst, language, style, registered, registration_ip, last_visit) VALUES(\''.$db->escape($username).'\', '.$intial_group_id.', \''.$password_hash.'\', \''.$db->escape($email1).'\', '.$email_setting.', '.$timezone.' , '.$dst.', \''.$db->escape($language).'\', \''.$pun_config['o_default_style'].'\', '.$now.', \''.get_remote_address().'\', '.$now.')') or error('Unable to create user', __FILE__, __LINE__, $db->error());159:         $db->query('INSERT INTO '.$db->prefix.'users (username, group_id, password, email, email_setting, timezone, dst, language, style, registered, registration_ip, last_visit) VALUES(\''.$db->escape($username).'\', '.$intial_group_id.', \''.$password_hash.'\', \''.$db->escape($email1).'\', '.$email_setting.', '.$timezone.' , '.$dst.', \''.$db->escape($language).'\', \''.$pun_config['o_default_style'].'\', '.$now.', \''.$db->escape(get_remote_address()).'\', '.$now.')') or error('Unable to create user', __FILE__, __LINE__, $db->error());
160:         $new_uid = $db->insert_id();160:         $new_uid = $db->insert_id();
161: 161: 
162:         // If the mailing list isn't empty, we may need to send out some alerts162:         // If the mailing list isn't empty, we may need to send out some alerts


a/viewtopic.php b/viewtopic.php
276: 276: 
277:         if ($pun_user['is_admmod'])277:         if ($pun_user['is_admmod'])
278:         {278:         {
279:             $user_info[] = '<dd><span><a href="moderate.php?get_host='.$cur_post['id'].'" title="'.$cur_post['poster_ip'].'">'.$lang_topic['IP address logged'].'</a></span></dd>';279:             $user_info[] = '<dd><span><a href="moderate.php?get_host='.$cur_post['id'].'" title="'.pun_htmlspecialchars($cur_post['poster_ip']).'">'.$lang_topic['IP address logged'].'</a></span></dd>';
280: 280: 
281:             if ($cur_post['admin_note'] != '')281:             if ($cur_post['admin_note'] != '')
282:                 $user_info[] = '<dd><span>'.$lang_topic['Note'].' <strong>'.pun_htmlspecialchars($cur_post['admin_note']).'</strong></span></dd>';282:                 $user_info[] = '<dd><span>'.$lang_topic['Note'].' <strong>'.pun_htmlspecialchars($cur_post['admin_note']).'</strong></span></dd>';
289:         $user_title = get_title($cur_post);289:         $user_title = get_title($cur_post);
290: 290: 
291:         if ($pun_user['is_admmod'])291:         if ($pun_user['is_admmod'])
292:             $user_info[] = '<dd><span><a href="moderate.php?get_host='.$cur_post['id'].'" title="'.$cur_post['poster_ip'].'">'.$lang_topic['IP address logged'].'</a></span></dd>';292:         $user_info[] = '<dd><span><a href="moderate.php?get_host='.$cur_post['id'].'" title="'.pun_htmlspecialchars($cur_post['poster_ip']).'">'.$lang_topic['IP address logged'].'</a></span></dd>';
293: 293: 
294:         if ($pun_config['o_show_user_info'] == '1' && $cur_post['poster_email'] != '' && !$pun_user['is_guest'] && $pun_user['g_send_email'] == '1')294:         if ($pun_config['o_show_user_info'] == '1' && $cur_post['poster_email'] != '' && !$pun_user['is_guest'] && $pun_user['g_send_email'] == '1')
295:             $user_contacts[] = '<span class="email"><a href="mailto:'.$cur_post['poster_email'].'">'.$lang_common['Email'].'</a></span>';295:             $user_contacts[] = '<span class="email"><a href="mailto:'.$cur_post['poster_email'].'">'.$lang_common['Email'].'</a></span>';


hdiff - version: 2.1.0 (modified)