Fixed bug #15133: Rendering images with ImageMagick fails to set file permissions...
authorChristian Kuhn <lolli@schwarzbu.ch>
Mon, 10 Jan 2011 20:05:12 +0000 (20:05 +0000)
committerChristian Kuhn <lolli@schwarzbu.ch>
Mon, 10 Jan 2011 20:05:12 +0000 (20:05 +0000)
git-svn-id: https://svn.typo3.org/TYPO3v4/Core/trunk@10019 709f56b5-9817-0410-a4d7-c38de5d9e867

ChangeLog
t3lib/class.t3lib_div.php
tests/t3lib/t3lib_divTest.php

index a9e79dc..a4ac0d9 100755 (executable)
--- a/ChangeLog
+++ b/ChangeLog
@@ -2,6 +2,10 @@
 
        * Follow-up to #15853: Add z-index to admin panel
 
+2011-01-10  Christian Kuhn  <lolli@schwarzbu.ch>
+
+       * Fixed bug #15133: Rendering images with ImageMagick fails to set file permissions (Thanks to Alexander Grein)
+
 2011-01-10  Ernesto Baschny  <ernst@cron-it.de>
 
        * Fixed bug #16172: Accessing FE in fresh install fails with RuntimeException "No database selected" (Thanks to Lars Peipmann)
@@ -35,7 +39,7 @@
 
        * Fixed bug #16828: missing XCLASS statement in t3lib/class.t3lib_compressor.php
 
-2011-01-06  Chrisstian Kuhn  <lolli@schwarzbu.ch>
+2011-01-06  Christian Kuhn  <lolli@schwarzbu.ch>
 
        * Fixed bug #16933: Remove XCLASS definition from t3lib_autoload
        * Fixed bug #16931: [Caching framework] APC backend test setRemovesTagsFromPreviousSet() fails
index b40639f..1f47e4b 100644 (file)
@@ -3138,13 +3138,19 @@ final class t3lib_div {
        /**
         * Sets the file system mode and group ownership of a file or a folder.
         *
-        * @param   string   Absolute filepath of file or folder, must not be escaped.
+        * @param   string   Path of file or folder, must not be escaped. Path can be absolute or relative
         * @param   boolean  If set, also fixes permissions of files and folders in the folder (if $path is a folder)
         * @return  mixed       TRUE on success, FALSE on error, always TRUE on Windows OS
         */
        public static function fixPermissions($path, $recursive = FALSE) {
                if (TYPO3_OS != 'WIN') {
                        $result = FALSE;
+
+                               // Make path absolute
+                       if (!self::isAbsPath($path)) {
+                               $path = self::getFileAbsFileName($path, FALSE);
+                       }
+
                        if (self::isAllowedAbsPath($path)) {
                                if (@is_file($path)) {
                                                // "@" is there because file is not necessarily OWNED by the user
index 466fccc..bac62d5 100644 (file)
@@ -1860,6 +1860,32 @@ class t3lib_divTest extends tx_phpunit_testcase {
                $this->assertFalse($fixPermissionsResult);
        }
 
+       /**
+        * @test
+        */
+       public function fixPermissionsSetsPermissionsWithRelativeFileReference() {
+               if (TYPO3_OS == 'WIN') {
+                       $this->markTestSkipped('fixPermissions() tests not available on Windows');
+               }
+
+               $filename = 'typo3temp/' . uniqid('test_');
+               t3lib_div::writeFileToTypo3tempDir(PATH_site . $filename, '42');
+               chmod($filename, 0742);
+
+                       // Set target permissions and run method
+               $GLOBALS['TYPO3_CONF_VARS']['BE']['fileCreateMask'] = '0660';
+               $fixPermissionsResult = t3lib_div::fixPermissions($filename);
+
+                       // Get actual permissions and clean up
+               clearstatcache();
+               $resultFilePermissions = substr(decoct(fileperms(PATH_site . $filename)), 2);
+               unlink(PATH_site . $filename);
+
+                       // Test if everything was ok
+               $this->assertTrue($fixPermissionsResult);
+               $this->assertEquals($resultFilePermissions, '0660');
+       }
+
 
        ///////////////////////////////
        // Tests concerning mkdir