* Fixed bug #12090: Filenames should be escaped with escapeshellarg before passing...
authorErnesto Baschny <ernst@cron-it.de>
Thu, 22 Oct 2009 10:21:53 +0000 (10:21 +0000)
committerErnesto Baschny <ernst@cron-it.de>
Thu, 22 Oct 2009 10:21:53 +0000 (10:21 +0000)
git-svn-id: https://svn.typo3.org/TYPO3v4/Core/trunk@6258 709f56b5-9817-0410-a4d7-c38de5d9e867

ChangeLog
t3lib/class.t3lib_div.php
t3lib/class.t3lib_stdgraphic.php

index 772303c..206bf5a 100755 (executable)
--- a/ChangeLog
+++ b/ChangeLog
@@ -3,6 +3,7 @@
        * Fixed bug #11586: Potential SQL injection in frontend editing (thanks to Oliver Klee)
        * Fixed bug #12309: It was possible to gain access to the Install Tool by only knowing the md5 hash of the password.
        * Fixed bug #12310: Encryption key can be recalculated when using normal mailform when [FE][strictFormmail] == 0 (thanks to Oliver Klee)
+       * Fixed bug #12090: Filenames should be escaped with escapeshellarg before passing them to imagemagick
        * Fixed bug #12303: XSS vulnerability due to not proper sanitizing in function t3lib_div::quoteJSvalue (thanks to Oliver Klee)
        * Fixed bug #12304: Frame inclusion in the backend through alt_mod_frameset (thanks to Oliver Klee)
        * Fixed bug #12305: XSS vulnerability in view_help.php / tfID parameter (thanks to Oliver Klee)
index 91bba6c..373f5b2 100644 (file)
@@ -2954,10 +2954,12 @@ final class t3lib_div {
        }
 
        /**
-        * Setting file system mode & group ownership of file
+        * Sets the file system mode and group ownership of file.
         *
-        * @param       string          Filepath of newly created file
-        * @return      void
+        * @param string $file
+        *               the path of an existing file, must not be escaped
+        *
+        * @return void
         */
        public static function fixPermissions($file)    {
                if (@is_file($file) && TYPO3_OS!='WIN') {
index 8104d89..06a4c78 100644 (file)
@@ -2665,7 +2665,7 @@ class t3lib_stdGraphic    {
                        $this->IM_commands[] = array($output,$cmd);
 
                        $ret = exec($cmd);
-                       t3lib_div::fixPermissions($this->wrapFileName($output));        // Change the permissions of the file
+                       t3lib_div::fixPermissions($output);     // Change the permissions of the file
 
                        return $ret;
                }
@@ -2696,7 +2696,7 @@ class t3lib_stdGraphic    {
                        $this->IM_commands[] = Array ($output,$cmd);
 
                        $ret = exec($cmd);
-                       t3lib_div::fixPermissions($this->wrapFileName($output));        // Change the permissions of the file
+                       t3lib_div::fixPermissions($output);     // Change the permissions of the file
 
                        if (is_file($theMask))  {
                                @unlink($theMask);
@@ -2707,17 +2707,14 @@ class t3lib_stdGraphic  {
        }
 
        /**
-        * Wrapping the input filename in double-quotes
+        * Escapes a file name so it can safely be used on the command line.
         *
-        * @param       string          Input filename
-        * @return      string          The output wrapped in "" (if there are spaces in the filepath)
-        * @access private
+        * @param string $inputName filename to safeguard, must not be empty
+        *
+        * @return string $inputName escaped as needed
         */
-       function wrapFileName($inputName)       {
-               if (strstr($inputName,' '))     {
-                       $inputName='"'.$inputName.'"';
-               }
-               return $inputName;
+       protected function wrapFileName($inputName) {
+               return escapeshellarg($inputName);
        }