From ce0a7d5193b4ca4c2bca3366a73007aecc04dfbb Mon Sep 17 00:00:00 2001 From: exceptionfactory Date: Wed, 22 Dec 2021 05:18:28 -0600 Subject: [PATCH] Avoid setting SFTP rename flags below version 5 (#751) (#754) Fixes #750 Fixes #751 Co-authored-by: Jeroen van Erp --- .../java/net/schmizz/sshj/sftp/SFTPEngine.java | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/src/main/java/net/schmizz/sshj/sftp/SFTPEngine.java b/src/main/java/net/schmizz/sshj/sftp/SFTPEngine.java index 17a4ca81..1839c62f 100644 --- a/src/main/java/net/schmizz/sshj/sftp/SFTPEngine.java +++ b/src/main/java/net/schmizz/sshj/sftp/SFTPEngine.java @@ -235,14 +235,17 @@ public class SFTPEngine if (operativeVersion < 1) throw new SFTPException("RENAME is not supported in SFTPv" + operativeVersion); - long renameFlagMask = 0L; - for (RenameFlags flag : flags) { - renameFlagMask = renameFlagMask | flag.longValue(); + final Request request = newRequest(PacketType.RENAME).putString(oldPath, sub.getRemoteCharset()).putString(newPath, sub.getRemoteCharset()); + // SFTP Version 5 introduced rename flags according to Section 6.5 of the specification + if (operativeVersion >= 5) { + long renameFlagMask = 0L; + for (RenameFlags flag : flags) { + renameFlagMask = renameFlagMask | flag.longValue(); + } + request.putUInt32(renameFlagMask); } - doRequest( - newRequest(PacketType.RENAME).putString(oldPath, sub.getRemoteCharset()).putString(newPath, sub.getRemoteCharset()).putUInt32(renameFlagMask) - ).ensureStatusPacketIsOK(); + doRequest(request).ensureStatusPacketIsOK(); } public String canonicalize(String path)