Fixed bug #16891: Bug: shopic.php causes a fatal error if parameters GET variable...
authornxpthx <nxpthx@709f56b5-9817-0410-a4d7-c38de5d9e867>
Tue, 22 Feb 2011 15:14:59 +0000 (15:14 +0000)
committernxpthx <nxpthx@709f56b5-9817-0410-a4d7-c38de5d9e867>
Tue, 22 Feb 2011 15:14:59 +0000 (15:14 +0000)
git-svn-id: https://svn.typo3.org/TYPO3v4/Core/branches/TYPO3_4-5@10530 709f56b5-9817-0410-a4d7-c38de5d9e867

ChangeLog
typo3/sysext/cms/tslib/showpic.php

index bf8f389..e8856e5 100755 (executable)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,4 +1,8 @@
-2011-02-22  Steffen Kamper  <steffen@typo3.org
+2011-02-22  Steffen Ritter  <info@steffen-ritter.net>
+
+       * Fixed bug #16891: Bug: shopic.php causes a fatal error if parameters GET variable is not an array (Thanks to Helmut Hummel)
+
+2011-02-22  Steffen Kamper  <steffen@typo3.org>
 
        * Fixed bug #17672: CSH - each label fires one request
        * Follow-up to #17383: Open forms cannot be saved after "Relogin" (Security Token errors)
@@ -8,7 +12,7 @@
 
        * Fixed bug #17701: Generated t3x might be corrupted
 
-2011-02-21  Steffen Kamper  <steffen@typo3.org
+2011-02-21  Steffen Kamper  <steffen@typo3.org>
 
        * Fixed bug #17383: Open forms cannot be saved after "Relogin" (Security Token errors) (Thanks to Helmut Hummel)
        * Fixed bug #17684 Admin Panel renders invalid markup (Thanks to Markus Klein)
index c23d0db..516a5c6 100644 (file)
@@ -96,6 +96,18 @@ require_once(PATH_t3lib.'class.t3lib_db.php');
 $TYPO3_DB = t3lib_div::makeInstance('t3lib_DB');
 
 
+// *********************
+// Error & Exception handling
+// *********************
+if ($TYPO3_CONF_VARS['SC_OPTIONS']['errors']['exceptionHandler'] !== '') {
+       if ($TYPO3_CONF_VARS['SYS']['errorHandler'] !== '') {
+                       // register an error handler for the given errorHandlerErrors
+               $errorHandler = t3lib_div::makeInstance($TYPO3_CONF_VARS['SYS']['errorHandler'], $TYPO3_CONF_VARS['SYS']['errorHandlerErrors']);
+                       // set errors which will be converted in an exception
+               $errorHandler->setExceptionalErrors($TYPO3_CONF_VARS['SC_OPTIONS']['errors']['exceptionalErrors']);
+       }
+       $exceptionHandler = t3lib_div::makeInstance($TYPO3_CONF_VARS['SC_OPTIONS']['errors']['exceptionHandler']);
+}
 
 
 
@@ -149,18 +161,20 @@ class SC_tslib_showpic {
        function init() {
                        // Loading internal vars with the GET/POST parameters from outside:
                $this->file = t3lib_div::_GP('file');
-               $this->parametersEncoded = implode(t3lib_div::_GP('parameters'));
+               $parametersArray = t3lib_div::_GP('parameters');
                $this->frame = t3lib_div::_GP('frame');
                $this->md5 = t3lib_div::_GP('md5');
 
                // ***********************
                // Check parameters
                // ***********************
-                       // If no file-param is given, we must exit
-               if (!$this->file)       {
-                       die('Parameter Error: No file given.');
+                       // If no file-param or parameters are given, we must exit
+               if (!$this->file || !isset($parametersArray) || !is_array($parametersArray)) {
+                       throw new UnexpectedValueException('Parameter Error: No file or no parameters given.');
                }
 
+               $this->parametersEncoded = implode($parametersArray);
+
                        // Chech md5-checksum: If this md5-value does not match the one submitted, then we fail... (this is a kind of security that somebody don't just hit the script with a lot of different parameters
                $md5_value = t3lib_div::hmac(
                        implode(
@@ -170,7 +184,7 @@ class SC_tslib_showpic {
                );
 
                if ($md5_value!=$this->md5) {
-                       die('Parameter Error: Wrong parameters sent.');
+                       throw new UnexpectedValueException('Parameter Error: Wrong parameters sent.');
                }
 
                $parameters = unserialize(base64_decode($this->parametersEncoded));
@@ -185,10 +199,10 @@ class SC_tslib_showpic {
 
                $test_file=PATH_site.$this->file;
                if (!t3lib_div::validPathStr($test_file))       {
-                       die('Parameter Error: No valid filepath');
+                       throw new UnexpectedValueException('Parameter Error: No valid filepath');
                }
                if (!@is_file($test_file))      {
-                       die('The given file was not found');
+                       throw new UnexpectedValueException('The given file was not found');
                }
        }