From ceae4fa7b45db51313cb78fd7441e8b3e99221f9 Mon Sep 17 00:00:00 2001
From: Michael Gapczynski <GapczynskiM@gmail.com>
Date: Sat, 20 Aug 2011 12:36:20 -0400
Subject: [PATCH] Fix bugs preventing file upload in shared folders with write
 permission

---
 apps/files_sharing/sharedstorage.php | 14 +++++++++-----
 files/ajax/upload.php                |  2 +-
 2 files changed, 10 insertions(+), 6 deletions(-)

diff --git a/apps/files_sharing/sharedstorage.php b/apps/files_sharing/sharedstorage.php
index e2147bea492..afe173ad0cc 100644
--- a/apps/files_sharing/sharedstorage.php
+++ b/apps/files_sharing/sharedstorage.php
@@ -494,11 +494,15 @@ class OC_Filestorage_Shared extends OC_Filestorage {
 		}
 	}
 	
-	public function fromUploadedFile($tmpPath, $path) {
-		$source = $this->getSource($tmpPath);
-		if ($source) {
-			$storage = OC_Filesystem::getStorage($source);
-			return $storage->fromUploadedFile($this->getInternalPath($source), $path);
+	public function fromUploadedFile($tmpFile, $path) {
+		if ($this->is_writeable($path)) {
+			$source = $this->getSource($path);
+			if ($source) {
+				$storage = OC_Filesystem::getStorage($source);
+				return $storage->fromUploadedFile($tmpFile, $this->getInternalPath($source));
+			}
+		} else {
+			return false;
 		}
 	}
 	
diff --git a/files/ajax/upload.php b/files/ajax/upload.php
index 4247aeca283..2c0afa33a7d 100644
--- a/files/ajax/upload.php
+++ b/files/ajax/upload.php
@@ -33,7 +33,7 @@ $result=array();
 if(strpos($dir,'..') === false){
 	$fileCount=count($files['name']);
 	for($i=0;$i<$fileCount;$i++){
-		$target='/' . stripslashes($dir) . $files['name'][$i];
+		$target=stripslashes($dir) . $files['name'][$i];
 		if(OC_Filesystem::fromUploadedFile($files['tmp_name'][$i],$target)){
 			$result[]=array( "status" => "success", 'mime'=>OC_Filesystem::getMimeType($target),'size'=>OC_Filesystem::filesize($target),'name'=>$files['name'][$i]);
 		}
-- 
GitLab