Fixed bug #13959: Security precaution for extensions which use their own autoloader...
authorMichael Stucki <michael.stucki@typo3.org>
Fri, 9 Apr 2010 10:16:16 +0000 (10:16 +0000)
committerMichael Stucki <michael.stucki@typo3.org>
Fri, 9 Apr 2010 10:16:16 +0000 (10:16 +0000)
git-svn-id: https://svn.typo3.org/TYPO3v4/Core/branches/TYPO3_4-2@7268 709f56b5-9817-0410-a4d7-c38de5d9e867

ChangeLog
t3lib/config_default.php
typo3/init.php
typo3/sysext/cms/tslib/index_ts.php

index d971130..8500229 100755 (executable)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,7 @@
+2010-04-09  Michael Stucki  <michael@typo3.org>
+
+       * Fixed bug #13959: Security precaution for extensions which use their own autoloader. Note: This is the same fix which has been committed to TYPO3 4.3 where it is marked as a security fix. However, versions prior to TYPO3 4.3 do not ship with an autoloader, so they are not affected by this problem unless an extension provides its own autoloader.
+
 2010-04-08  Stanislas Rolland  <typo3@sjbr.ca>
 
        * Updated htmlArea RTE version to 1.7.15
index e6045e2..9fff088 100755 (executable)
@@ -385,7 +385,7 @@ function debug($variable='', $name='*variable*', $line='*line*', $file='*file*',
                // If you wish to use the debug()-function, and it does not output something, please edit the IP mask in TYPO3_CONF_VARS
        if (!t3lib_div::cmpIP(t3lib_div::getIndpEnv('REMOTE_ADDR'), $GLOBALS['TYPO3_CONF_VARS']['SYS']['devIPmask']))   return;
 
-       if(@is_callable(array($GLOBALS['error'],'debug'))) {
+       if(is_object($GLOBALS['error']) && @is_callable(array($GLOBALS['error'],'debug'))) {
                $GLOBALS['error']->debug($variable, $name, $line, $file, $recursiveDepth, $debugLevel);
        } else {
                $br = ($name == '*variable*') ? 0 : $name;
@@ -393,12 +393,12 @@ function debug($variable='', $name='*variable*', $line='*line*', $file='*file*',
        }
 }
 function debugBegin() {
-       if(@is_callable(array($GLOBALS['error'],'debugBegin'))) {
+       if(is_object($GLOBALS['error']) && @is_callable(array($GLOBALS['error'],'debugBegin'))) {
                $GLOBALS['error']->debugBegin();
        }
 }
 function debugEnd() {
-       if(@is_callable(array($GLOBALS['error'],'debugEnd'))) {
+       if(is_object($GLOBALS['error']) && @is_callable(array($GLOBALS['error'],'debugEnd'))) {
                $GLOBALS['error']->debugEnd();
        }
 }
index 07920f3..a88c03c 100755 (executable)
@@ -159,6 +159,10 @@ die();
        define('PATH_typo3conf', PATH_site.'typo3conf/');       // Abs. TYPO3 configuration path (local, not part of source)
 }
 
+// *********************
+// Unset variable(s) in global scope (fixes #13959)
+// *********************
+unset($error);
 
 // *************************************************
 // t3lib_div + extention management class included
index 81228c7..b7382dd 100755 (executable)
@@ -79,6 +79,11 @@ if (!defined('PATH_tslib')) {
 if (!@is_dir(PATH_typo3conf))  die('Cannot find configuration. This file is probably executed from the wrong location.');
 
 // *********************
+// Unset variable(s) in global scope (fixes #13959)
+// *********************
+unset($error);
+
+// *********************
 // Timetracking started
 // *********************
 require_once(PATH_t3lib.'class.t3lib_timetrack.php');
@@ -599,7 +604,7 @@ if (is_object($BE_USER)
 // *************
 // Debugging Output
 // *************
-if(@is_callable(array($error,'debugOutput'))) {
+if(is_object($error) && @is_callable(array($error,'debugOutput'))) {
        $error->debugOutput();
 }
 if (TYPO3_DLOG) {