From cd122462aa816e8fa407682c39d44a9410adc978 Mon Sep 17 00:00:00 2001
From: Laurent Destailleur <eldy@destailleur.fr>
Date: Sun, 19 Jun 2016 11:19:11 +0200
Subject: [PATCH] Fix errors on files/dir permissions on dolfilemanager.

---
 htdocs/core/filemanagerdol/connectors/php/basexml.php |  2 ++
 .../core/filemanagerdol/connectors/php/commands.php   | 10 +++++-----
 .../core/filemanagerdol/connectors/php/connector.php  |  3 ++-
 htdocs/core/filemanagerdol/connectors/php/io.php      | 11 +++++++----
 4 files changed, 16 insertions(+), 10 deletions(-)

diff --git a/htdocs/core/filemanagerdol/connectors/php/basexml.php b/htdocs/core/filemanagerdol/connectors/php/basexml.php
index a14b843b465..f1fe5365e7a 100644
--- a/htdocs/core/filemanagerdol/connectors/php/basexml.php
+++ b/htdocs/core/filemanagerdol/connectors/php/basexml.php
@@ -102,6 +102,8 @@ function SendError($number, $text)
 	{
 		SetXmlHeaders();
 
+		dol_syslog('Error: '.$number.' '.$text, LOG_ERR);
+		
 		// Create the XML document header
 		echo '<?xml version="1.0" encoding="utf-8" ?>' ;
 
diff --git a/htdocs/core/filemanagerdol/connectors/php/commands.php b/htdocs/core/filemanagerdol/connectors/php/commands.php
index 0449635aaac..3f02b9f39fb 100644
--- a/htdocs/core/filemanagerdol/connectors/php/commands.php
+++ b/htdocs/core/filemanagerdol/connectors/php/commands.php
@@ -266,15 +266,15 @@ function FileUpload($resourceType, $currentFolder, $sCommand, $CKEcallback = '')
 							break ;
 						}
 
-						$permissions = 0777;
-
+						$permissions = '0777';
 						if ( isset( $Config['ChmodOnUpload'] ) && $Config['ChmodOnUpload'] )
 						{
-							$permissions = $Config['ChmodOnUpload'] ;
+							$permissions = (string) $Config['ChmodOnUpload'] ;
 						}
-
+						$permissionsdec = octdec($permissions);
+						dol_syslog("commands.php permission = ".$permissions." ".$permissionsdec." ".decoct($permissionsdec));
 						$oldumask = umask(0);
-						chmod($sFilePath, $permissions);
+						chmod($sFilePath, $permissionsdec);
 						umask($oldumask);
 					}
 
diff --git a/htdocs/core/filemanagerdol/connectors/php/connector.php b/htdocs/core/filemanagerdol/connectors/php/connector.php
index 23d4eb79d77..2f3c6f64388 100644
--- a/htdocs/core/filemanagerdol/connectors/php/connector.php
+++ b/htdocs/core/filemanagerdol/connectors/php/connector.php
@@ -55,8 +55,9 @@ function DoResponse()
 
 	// Check if it is an allowed command
 	if (! IsAllowedCommand($sCommand))
+	{
 		SendError(1, 'The "' . $sCommand . '" command isn\'t allowed');
-
+	}
 	// Check if it is an allowed type.
 	if (! IsAllowedType($sResourceType))
 		SendError(1, 'Invalid type specified');
diff --git a/htdocs/core/filemanagerdol/connectors/php/io.php b/htdocs/core/filemanagerdol/connectors/php/io.php
index 72aea0e0eb0..731509b6e10 100644
--- a/htdocs/core/filemanagerdol/connectors/php/io.php
+++ b/htdocs/core/filemanagerdol/connectors/php/io.php
@@ -181,14 +181,17 @@ function CreateServerFolder($folderPath, $lastFolder = null)
 		}
 		else
 		{
-			$permissions = 0777 ;
-			if ( isset( $Config['ChmodOnFolderCreate'] ) )
+			$permissions = '0777';
+			if ( isset( $Config['ChmodOnFolderCreate'] ) && $Config['ChmodOnFolderCreate'])
 			{
-				$permissions = $Config['ChmodOnFolderCreate'] ;
+				$permissions = (string) $Config['ChmodOnFolderCreate'];
 			}
+			$permissionsdec = octdec($permissions);
+			$permissionsdec |= octdec('0111');  // Set x bit required for directories
+			dol_syslog("io.php permission = ".$permissions." ".$permissionsdec." ".decoct($permissionsdec));
 			// To create the folder with 0777 permissions, we need to set umask to zero.
 			$oldumask = umask(0);
-			mkdir($folderPath, $permissions);
+			mkdir($folderPath, $permissionsdec);
 			umask($oldumask);
 		}
 
-- 
GitLab