ssh commands: fix for rsync with no arguments

Signed-off-by: Nicola Murino <nicola.murino@gmail.com>
This commit is contained in:
Nicola Murino
2025-01-15 19:12:12 +01:00
parent 969faddeee
commit e2b21ad946
2 changed files with 6 additions and 6 deletions

View File

@@ -2278,8 +2278,8 @@ func TestRsyncArguments(t *testing.T) {
assert.False(t, canAcceptRsyncArgs(args))
args = []string{"--server", "--sender", "-vlogDtpre.", "--delete", ".", "/"}
assert.False(t, canAcceptRsyncArgs(args))
args = []string{"--server", "--sender", "-e.iLsfxCIvu", "--delete", ".", "/"}
assert.False(t, canAcceptRsyncArgs(args))
args = []string{"--server", "--sender", "-e.iLsfxCIvu", ".", "/"}
assert.True(t, canAcceptRsyncArgs(args))
args = []string{"--server", "-vlogDtpre.iLsfxCIvu", "--delete", "/"}
assert.False(t, canAcceptRsyncArgs(args))
args = []string{"--server", "-vlogDtpre.iLsfxCIvu", "--delete", "--safe-links"}

View File

@@ -490,7 +490,7 @@ func canAcceptRsyncArgs(args []string) bool {
// rsync --server -vlogDtpre.iLsfxCIvu --supported-options . ARG # push
// rsync --server --sender -vlogDtpre.iLsfxCIvu --supported-options . ARG # pull
//
// Then some options with a single dash and containing "e."" followed by
// Then some options with a single dash and containing "e." followed by
// supported options, listed in acceptedRsyncOptions, with double dash then
// dot and a finally single argument specifying the path to operate on.
idx := 0
@@ -507,9 +507,9 @@ func canAcceptRsyncArgs(args []string) bool {
if args[idx] == "--sender" {
idx++
}
// Check that this argument starts with a dash and contains e. but does start or end with e.
if !strings.HasPrefix(args[idx], "-") ||
strings.HasPrefix(args[idx], "--") || strings.HasPrefix(args[idx], "-e") ||
// Check that this argument starts with a dash and contains e. but does not
// end with e.
if !strings.HasPrefix(args[idx], "-") || strings.HasPrefix(args[idx], "--") ||
!strings.Contains(args[idx], "e.") || strings.HasSuffix(args[idx], "e.") {
return false
}