You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by mi...@apache.org on 2017/04/11 20:20:46 UTC

maven-wagon git commit: [WAGON-363] wagon-ftp fails to create non-existing directory when path contains "/../"

Repository: maven-wagon
Updated Branches:
  refs/heads/master f76c0982b -> 1247688c2


[WAGON-363] wagon-ftp fails to create non-existing directory when path contains "/../"

This closes #33


Project: http://git-wip-us.apache.org/repos/asf/maven-wagon/repo
Commit: http://git-wip-us.apache.org/repos/asf/maven-wagon/commit/1247688c
Tree: http://git-wip-us.apache.org/repos/asf/maven-wagon/tree/1247688c
Diff: http://git-wip-us.apache.org/repos/asf/maven-wagon/diff/1247688c

Branch: refs/heads/master
Commit: 1247688c22984fe40c6e51ce7c05315c33b10769
Parents: f76c098
Author: Stefan Braune <st...@novum-online.de>
Authored: Tue Mar 21 01:50:43 2017 +0100
Committer: Michael Osipov <mi...@apache.org>
Committed: Tue Apr 11 22:20:08 2017 +0200

----------------------------------------------------------------------
 .../maven/wagon/providers/ftp/FtpWagon.java     | 26 ++++++++++++++++++--
 1 file changed, 24 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/maven-wagon/blob/1247688c/wagon-providers/wagon-ftp/src/main/java/org/apache/maven/wagon/providers/ftp/FtpWagon.java
----------------------------------------------------------------------
diff --git a/wagon-providers/wagon-ftp/src/main/java/org/apache/maven/wagon/providers/ftp/FtpWagon.java b/wagon-providers/wagon-ftp/src/main/java/org/apache/maven/wagon/providers/ftp/FtpWagon.java
index c234e36..ddaadfc 100644
--- a/wagon-providers/wagon-ftp/src/main/java/org/apache/maven/wagon/providers/ftp/FtpWagon.java
+++ b/wagon-providers/wagon-ftp/src/main/java/org/apache/maven/wagon/providers/ftp/FtpWagon.java
@@ -49,6 +49,7 @@ import java.util.ArrayList;
 import java.util.Calendar;
 import java.util.List;
 
+
 /**
  * FtpWagon
  *
@@ -82,6 +83,7 @@ public class FtpWagon
         this.passiveMode = passiveMode;
     }
 
+    @Override
     protected void openConnectionInternal()
         throws ConnectionException, AuthenticationException
     {
@@ -192,6 +194,7 @@ public class FtpWagon
         return new FTPClient();
     }
 
+    @Override
     protected void firePutCompleted( Resource resource, File file )
     {
         try
@@ -223,6 +226,7 @@ public class FtpWagon
         super.firePutCompleted( resource, file );
     }
 
+    @Override
     protected void fireGetCompleted( Resource resource, File localFile )
     {
         try
@@ -239,6 +243,7 @@ public class FtpWagon
         super.fireGetCompleted( resource, localFile );
     }
 
+    @Override
     public void closeConnection()
         throws ConnectionException
     {
@@ -256,6 +261,7 @@ public class FtpWagon
         }
     }
 
+    @Override
     public void fillOutputData( OutputData outputData )
         throws TransferFailedException
     {
@@ -343,6 +349,7 @@ public class FtpWagon
     //
     // ----------------------------------------------------------------------
 
+    @Override
     public void fillInputData( InputData inputData )
         throws TransferFailedException, ResourceDoesNotExistException
     {
@@ -421,23 +428,27 @@ public class FtpWagon
             this.wagon = wagon;
         }
 
+        @Override
         public void protocolCommandSent( ProtocolCommandEvent event )
         {
             wagon.fireSessionDebug( "Command sent: " + event.getMessage() );
 
         }
 
+        @Override
         public void protocolReplyReceived( ProtocolCommandEvent event )
         {
             wagon.fireSessionDebug( "Reply received: " + event.getMessage() );
         }
     }
 
+    @Override
     protected void fireSessionDebug( String msg )
     {
         super.fireSessionDebug( msg );
     }
 
+    @Override
     public List<String> getFileList( String destinationDirectory )
         throws TransferFailedException, ResourceDoesNotExistException, AuthorizationException
     {
@@ -476,6 +487,7 @@ public class FtpWagon
         }
     }
 
+    @Override
     public boolean resourceExists( String resourceName )
         throws TransferFailedException, AuthorizationException
     {
@@ -503,11 +515,13 @@ public class FtpWagon
         }
     }
 
+    @Override
     public boolean supportsDirectoryCopy()
     {
         return true;
     }
 
+    @Override
     public void putDirectory( File sourceDirectory, String destinationDirectory )
         throws TransferFailedException, ResourceDoesNotExistException, AuthorizationException
     {
@@ -769,21 +783,29 @@ public class FtpWagon
 
             String nextDir = fileName.substring( 0, slashPos );
 
+            boolean changedDir = false;
             // we only create the nextDir if it doesn't yet exist
             if ( !ftp.changeWorkingDirectory( nextDir ) )
             {
                 ok &= ftp.makeDirectory( nextDir );
             }
+            else
+            {
+                changedDir = true;
+            }
 
             if ( ok )
             {
                 // set the permissions for the freshly created directory
                 setPermissions( permissions );
 
-                ftp.changeWorkingDirectory( nextDir );
+                if ( !changedDir )
+                {
+                    ftp.changeWorkingDirectory( nextDir );
+                }
 
                 // now create the deeper directories
-                String remainingDirs = fileName.substring( slashPos + 1 );
+                final String remainingDirs = fileName.substring( slashPos + 1 );
                 ok &= makeFtpDirectoryRecursive( remainingDirs, permissions );
             }
         }