Re: SCP in SFTP mode regression

[Date Prev] [Date Next] [Thread Prev] [Thread Next] [Date Index] [Thread Index]

 



On Wed, Feb 23, 2022 at 09:36:00AM +1100, Damien Miller wrote:

> Yes, this is because scp/rcp does open(path, O_CREAT) and then
> ftruncate() at close() time, whereas scp/sftp does open(path,
> O_CREAT|O_TRUNC) on the basis that in an aborted transfer it's better
> to leave truncated files around than files with inconsistent contents.

I see in flags_from_portable() where O_TRUNC is set if SSH2_FXF_TRUNC
is, but I don't think it's set otherwise.  It's possible that's always
set somehow though.  I haven't looked into how the protocol works enough
to know what's on the queue when sshbuf_get_u32(iqueue, &pflags)) is
called.

I'm assuming here that scp/sftp goes through the code in sftp-server.c.

> I don't want to change the behaviour of sftp's upload code, because I
> think it is better (at the very least, it allows resumption of
> transfers without needing rsync-like tricks), so IMO the best way to
> avoid this would be to teach the upload code to go via a temporary
> file.

My recent patch adds an option to sftp-server.c to force a temporary
file.  It would be a trivial change to always do this.

> Not sure whether this is worth the hassle though for such a
> corner-case.

-- 
nw
_______________________________________________
openssh-unix-dev mailing list
openssh-unix-dev@xxxxxxxxxxx
https://lists.mindrot.org/mailman/listinfo/openssh-unix-dev



[Date Prev] [Date Next] [Thread Prev] [Thread Next] [Date Index] [Thread Index]

[Index of Archives]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Security]     [Bugtraq]     [Linux]     [Linux OMAP]     [Linux MIPS]     [ECOS]     [Asterisk Internet PBX]     [Linux API]

  Powered by Linux