thomascube
2009-06-09 533e8602c0be3aed7becc74002c58a7d1cf400c3
program/include/main.inc
@@ -128,7 +128,9 @@
 */
function rcmail_temp_gc()
  {
  $tmp = unslashify($CONFIG['temp_dir']);
  $rcmail = rcmail::get_instance();
  $tmp = unslashify($rcmail->config->get('temp_dir'));
  $expire = mktime() - 172800;  // expire in 48 hours
  if ($dir = opendir($tmp))
@@ -564,7 +566,10 @@
    else if (isset($_COOKIE[$fname]))
      $value = $_COOKIE[$fname];
    }
  if (empty($value))
    return $value;
  // strip single quotes if magic_quotes_sybase is enabled
  if (ini_get('magic_quotes_sybase'))
    $value = str_replace("''", "'", $value);
@@ -723,7 +728,7 @@
  $replacements = new rcube_string_replacer;
  
  // ignore the whole block if evil styles are detected
  $stripped = preg_replace('/[^a-z\(:]/', '', rcmail_xss_entitiy_decode($source));
  $stripped = preg_replace('/[^a-z\(:]/', '', rcmail_xss_entity_decode($source));
  if (preg_match('/expression|behavior|url\(|import/', $stripped))
    return '/* evil! */';
@@ -764,22 +769,22 @@
 * @param string CSS content to decode
 * @return string Decoded string
 */
function rcmail_xss_entitiy_decode($content)
function rcmail_xss_entity_decode($content)
{
  $out = html_entity_decode(html_entity_decode($content));
  $out = preg_replace_callback('/\\\([0-9a-f]{4})/i', 'rcmail_xss_entitiy_decode_callback', $out);
  $out = preg_replace_callback('/\\\([0-9a-f]{4})/i', 'rcmail_xss_entity_decode_callback', $out);
  $out = preg_replace('#/\*.*\*/#Um', '', $out);
  return $out;
}
/**
 * preg_replace_callback callback for rcmail_xss_entitiy_decode_callback
 * preg_replace_callback callback for rcmail_xss_entity_decode_callback
 *
 * @param array matches result from preg_replace_callback
 * @return string decoded entity
 */ 
function rcmail_xss_entitiy_decode_callback($matches)
function rcmail_xss_entity_decode_callback($matches)
  return chr(hexdec($matches[1]));
}
@@ -1018,17 +1023,16 @@
 * @access private
 */
function rcube_timer()
  {
  list($usec, $sec) = explode(" ", microtime());
  return ((float)$usec + (float)$sec);
  }
{
  return microtime(true);
}
  
/**
 * @access private
 */
function rcube_print_time($timer, $label='Timer')
  {
{
  static $print_count = 0;
  
  $print_count++;
@@ -1039,7 +1043,7 @@
    $label = 'Timer '.$print_count;
  
  console(sprintf("%s: %0.4f sec", $label, $diff));
  }
}
/**