[PATCH 0/4] Initial SFTPv4 support

Mike Frysinger vapier at gentoo.org
Fri Oct 1 06:49:18 AEST 2021

This brings SFTPv4 support to the sftp client & server.  I split them
up so it's easy to see & merge just server support if we decide to not
do the client.  I also haven't touched scp.

There are concerns over the SFTPv4 spec being a bit bloated.  I discuss
those in the server patch, but the tl;dr is that I think we can include
the new features we want (e.g. better timestamps) while omitting the
parts we don't (e.g. text mode & ACLs).  This keeps the actual code size

Implementation wise, I thought about making the code more object-oriented
(i.e. structs of func pointers for each SFTP version), but after comparing
the actual spec differences, it seems that things are minor enough that
inlining the version tests isn't terrible.  A few funcs are a little bit
harder to follow (largely the file attribute serializers), but all the
rest seem to be OK.  Or, it at least seems better when compared to the
amount of duplicated logic we'd have if there were v3 & v4 variants of
these functions.

NB: The patch series might not apply cleanly because they're based on
other SFTP features I've posted to the mailing list.  I can easily
respin once those get merged ;).

Mike Frysinger (4):
  scp/sftp: add -V for setting SFTP protocol version
  add SFTPv4 constants & handle error & file mode strings
  sftp-server: initial experimental SFTPv4 support
  [incomplete] sftp-client: initial experimental SFTPv4 support

 PROTOCOL      |   6 +-
 scp.c         |  13 +++-
 sftp-client.c | 117 +++++++++++++++++++++-------
 sftp-common.c | 211 ++++++++++++++++++++++++++++++++++++++++----------
 sftp-common.h |  17 +++-
 sftp-server.c | 198 ++++++++++++++++++++++++++++++++++++----------
 sftp.c        |  83 +++++++++++++-------
 sftp.h        |  30 +++++--
 8 files changed, 524 insertions(+), 151 deletions(-)


More information about the openssh-unix-dev mailing list