From 046aaf269a7f6bbd6e5eeafef8d0d7aecfcdd3be Mon Sep 17 00:00:00 2001 From: Jacobus Martinus Kruithof Date: Mon, 1 Oct 2007 20:07:17 +0000 Subject: [PATCH] pr 43521, @ in filename not allowed anymore since @ allowed in password. git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@581055 13f79535-47bb-0310-9956-ffa450edef68 --- .../apache/tools/ant/taskdefs/optional/ssh/Scp.java | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/ssh/Scp.java b/src/main/org/apache/tools/ant/taskdefs/optional/ssh/Scp.java index 33107c96a..878d428e6 100644 --- a/src/main/org/apache/tools/ant/taskdefs/optional/ssh/Scp.java +++ b/src/main/org/apache/tools/ant/taskdefs/optional/ssh/Scp.java @@ -310,10 +310,21 @@ public class Scp extends SSHBase { } private String parseUri(String uri) { - int indexOfAt = uri.lastIndexOf('@'); + + int indexOfAt = uri.indexOf('@'); int indexOfColon = uri.indexOf(':'); + if (indexOfColon > -1 && indexOfColon < indexOfAt) { // user:password@host:/path notation + // everything upto the last @ before the last : is considered + // password. (so if the path contains an @ and a : it will not work) + int indexOfCurrentAt = indexOfAt; + int indexOfLastColon = uri.lastIndexOf(':'); + while (indexOfCurrentAt > -1 && indexOfCurrentAt < indexOfLastColon) + { + indexOfAt = indexOfCurrentAt; + indexOfCurrentAt = uri.indexOf('@', indexOfCurrentAt + 1); + } setUsername(uri.substring(0, indexOfColon)); setPassword(uri.substring(indexOfColon + 1, indexOfAt)); } else {