[
https://issues.apache.org/jira/browse/SCM-763?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17962905#comment-17962905
]
ASF GitHub Bot commented on SCM-763:
------------------------------------
jira-importer commented on issue #970:
URL: https://github.com/apache/maven-scm/issues/970#issuecomment-2964636669
**[Weston
Bustraan](https://issues.apache.org/jira/secure/ViewProfile.jspa?name=wbustraan)**
commented
This also occurs on Macs.
The culprit is actually
`org.apache.maven.scm.provider.svn.svnexe.command.SvnCommandLineUtils.cryptPassword(Commandline)`
It has a rather... naïve, to be polite, implementation of the password
masking. It only works if there is _exactly_ one space after `--password`. Any
other condition and the password is not masked.
So, if the command line string is this:
```
svn --username myusername --password swordfish --no-auth-cache
--non-interactive --trust-server-cert info
```
... the output is:
```
svn --username myusername --password '*****' --no-auth-cache
--non-interactive --trust-server-cert info
```
However, it appears that, at some point, a change was made elsewhere that
wraps everything in quotes on *nix OSes:
```
'svn' '--username' 'myusername' '--password' 'swordfish' '--no-auth-cache'
'--non-interactive' '--trust-server-cert' 'info'
```
Now, since `--password` is followed immediately by a single quote, instead
of a single space, the mask is inserted but does not replace the actual
password:
```
'svn' '--username' 'myusername' '--password''*****' 'swordfish'
'--no-auth-cache' '--non-interactive' '--trust-server-cert' 'info'
```
Here is an improved version of `cryptPassword` using a regex in order to
handle more diverse input:
```
public static String cryptPassword( Commandline cl )
{
String clString = cl.toString();
final String mask = "'******'";
final Matcher matcher =
Pattern.compile("(--password\\S*?\\s+)('[^']+?'|\"[^\"]+?\"|\\S+)")
.matcher(clString);
final StringBuffer replaced = new StringBuffer();
while (matcher.find()) {
final String argPrefix = matcher.group(1);
matcher.appendReplacement(replaced, argPrefix + mask);
}
matcher.appendTail(replaced);
return replaced.toString();
}
```
> Password masking for svnexe does not handle all cases
> -----------------------------------------------------
>
> Key: SCM-763
> URL: https://issues.apache.org/jira/browse/SCM-763
> Project: Maven SCM (Moved to GitHub Issues)
> Issue Type: Bug
> Components: maven-scm-provider-svn
> Affects Versions: 1.9
> Environment: Jenkins 1.502 on a SLES11
> Reporter: Tobias Kalmes
> Assignee: Michael Osipov
> Priority: Major
> Fix For: 1.10.0
>
>
> Passwords are not masked in the log output on Linux machines. The masking
> works as intended on Windows machines. On linux machines tho the password is
> printed in clear text. This seems to be a problem due to the additional
> single quotes that are added around the parameters on linux machines.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)