Allow for different (but POSIX compliant) behaviour of basename(3) and
authordtucker <dtucker@openbsd.org>
Wed, 4 Aug 2021 01:34:55 +0000 (01:34 +0000)
committerdtucker <dtucker@openbsd.org>
Wed, 4 Aug 2021 01:34:55 +0000 (01:34 +0000)
commitccba09fa7dd332460c2ae4add50c01cf2ddf34cb
treee367dc7624eebe22769050d49b52528af49ba20a
parentbe5aedc58dc873dde4f4b720ac1821799a6d3a92
Allow for different (but POSIX compliant) behaviour of basename(3) and
prevent a use-after-free in that case in the new sftp-compat code.

POSIX allows basename(3) to either return a pointer to static storage
or modify the passed string and return a pointer to that.  OpenBSD does
the former and works as is, but on other platforms "filename" points
into "tmp" which was just freed.  This makes the freeing of tmp
consistent with the other variable in the loop.

Pinpointed by the -portable Valgrind regress test.  ok djm@ deraadt@
usr.bin/ssh/scp.c