From b9f5e2f0aad6aa869476830e12815b214611fc4a Mon Sep 17 00:00:00 2001
From: Bradley M. Froehle <bfroehle@math.berkeley.edu>
Date: Sun, 14 Nov 2010 23:33:37 -0800
Subject: [PATCH] #935036 - copyDirectoryJailed: skip making . or .. directories

---
 includes/filetransfer/filetransfer.inc |    6 +++++-
 1 files changed, 5 insertions(+), 1 deletions(-)

diff --git includes/filetransfer/filetransfer.inc includes/filetransfer/filetransfer.inc
index 1afaa9e..37ba23a 100644
--- includes/filetransfer/filetransfer.inc
+++ includes/filetransfer/filetransfer.inc
@@ -211,7 +211,11 @@ abstract class FileTransfer {
     foreach (new RecursiveIteratorIterator(new RecursiveDirectoryIterator($source), RecursiveIteratorIterator::SELF_FIRST) as $filename => $file) {
       $relative_path = substr($filename, strlen($source));
       if ($file->isDir()) {
-        $this->createDirectory($destination . $relative_path);
+        // Do not attempt to make . or .. directories.
+        $dirname = basename($relative_path);
+        if ($dirname != '.' && $dirname != '..') {
+          $this->createDirectory($destination . $relative_path);
+        }
       }
       else {
         $this->copyFile($file->getPathName(), $destination . $relative_path);
-- 
1.7.3.1

