Skip to content

Commit ce0a7d5

Browse files
Avoid setting SFTP rename flags below version 5 (#751) (#754)
Fixes #750 Fixes #751 Co-authored-by: Jeroen van Erp <[email protected]>
1 parent ced27fc commit ce0a7d5

File tree

1 file changed

+9
-6
lines changed

1 file changed

+9
-6
lines changed

src/main/java/net/schmizz/sshj/sftp/SFTPEngine.java

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -235,14 +235,17 @@ public void rename(String oldPath, String newPath, Set<RenameFlags> flags)
235235
if (operativeVersion < 1)
236236
throw new SFTPException("RENAME is not supported in SFTPv" + operativeVersion);
237237

238-
long renameFlagMask = 0L;
239-
for (RenameFlags flag : flags) {
240-
renameFlagMask = renameFlagMask | flag.longValue();
238+
final Request request = newRequest(PacketType.RENAME).putString(oldPath, sub.getRemoteCharset()).putString(newPath, sub.getRemoteCharset());
239+
// SFTP Version 5 introduced rename flags according to Section 6.5 of the specification
240+
if (operativeVersion >= 5) {
241+
long renameFlagMask = 0L;
242+
for (RenameFlags flag : flags) {
243+
renameFlagMask = renameFlagMask | flag.longValue();
244+
}
245+
request.putUInt32(renameFlagMask);
241246
}
242247

243-
doRequest(
244-
newRequest(PacketType.RENAME).putString(oldPath, sub.getRemoteCharset()).putString(newPath, sub.getRemoteCharset()).putUInt32(renameFlagMask)
245-
).ensureStatusPacketIsOK();
248+
doRequest(request).ensureStatusPacketIsOK();
246249
}
247250

248251
public String canonicalize(String path)

0 commit comments

Comments
 (0)