wolfssh/.github/workflows
John Safranek 41fb47b205 scp: receive through a per-session dirfd
The default SCP receive callback keeps its destination per session, the
base path plus each directory entered, in place of the process working
directory that every session of a threaded server shares. With openat()
it holds that directory open, reaches it and everything created below
it with O_NOFOLLOW, and confirms a reopened parent is the one entered.

- port.h gains WOPENAT, WMKDIRAT, WOLFSSH_O_SEARCH with a search check
  as chdir() made, and WOLFSSH_HAVE_DIRFD, which sizes WOLFSSH so it
  keys only on configure's openat() probe; WOLFSSH_NO_DIRFD opts out
- ports without them open by the full path after a wIsDirNoFollow()
  screen of the base and of each directory entered; a refused base
  frees the receive path
- the receive path is capped at DEFAULT_SCP_FILE_NAME_SZ like the
  send side's; futimes() stands in for futimens() on hosts with
  openat() but not futimens(), such as macOS before 10.13
- unit: ScpRecvCallback_SessionPath walks down and back with the
  working directory untouched, then has the tree moved out from under
  it; a linked base and a file-named directory are refused
- scp.test: a planted symlink at the destination name keeps its target;
  scp-test.yml also builds and tests the fallback

Issue: F-14758, F-13998
2026-10-15 17:14:34 -05:00
..
ci-deps-image.yml CI: create the bundle directory before sudo 2026-10-07 21:39:28 -05:00
code-coverage.yml wolfsshd: bound the shell child reap and flush the held backlog 2026-10-09 10:30:29 -07:00
codespell.yml github/workflows: upgrade actions to Node.js 24 versions 2026-05-11 22:27:00 -07:00
coverity-scan-fixes.yml github/workflows: upgrade actions to Node.js 24 versions 2026-05-11 22:27:00 -07:00
cppcheck.yml CI: install apt packages from ghcr .deb bundles 2026-10-07 21:39:28 -05:00
espressif.yml ci: build the Espressif examples weekly 2026-09-19 12:43:34 -05:00
interop-mlkem.yml Update wolfSSL version in ML-KEM and Thread tests 2026-05-18 11:04:51 -07:00
mldsa-composite-config.yml internal: derive WOLFSSH_NO_MLDSA when every level is off 2026-10-08 09:01:42 -07:00
multi-compiler.yml CI: install apt packages from ghcr .deb bundles 2026-10-07 21:39:28 -05:00
network-contention-test.yml CI: install apt packages from ghcr .deb bundles 2026-10-07 21:39:28 -05:00
os-check.yml ci: build and test without RSA or ECC 2026-09-17 23:27:22 +02:00
paramiko-sftp-test.yml CI: install apt packages from ghcr .deb bundles 2026-10-07 21:39:28 -05:00
sanitizer.yml sanitizer.yml, openssh-interop.test: fail instead of skipping in CI 2026-10-08 11:28:25 -07:00
sbom.yml test: assert SBOM wolfSSL version comes from WOLFSSL_DIR 2026-08-27 09:43:33 -07:00
scp-test.yml scp: receive through a per-session dirfd 2026-10-15 17:14:34 -05:00
sftp-test.yml CI: install apt packages from ghcr .deb bundles 2026-10-07 21:39:28 -05:00
singlethread-check.yml Update wolfSSL version in ML-KEM and Thread tests 2026-05-18 11:04:51 -07:00
sshd-test.yml wolfsshd: bound the shell child reap and flush the held backlog 2026-10-09 10:30:29 -07:00
test-fatfs.yml CI: install apt packages from ghcr .deb bundles 2026-10-07 21:39:28 -05:00
tpm-ssh.yml tpm-ssh.yml, README: test and document TPM keys with OpenSSH certs 2026-10-08 11:28:25 -07:00
windows-cert-store-test.yml CI: install apt packages from ghcr .deb bundles 2026-10-07 21:39:28 -05:00
windows-check.yml windows-check: Cache the wolfSSL build in mingw-regress 2026-09-10 15:27:50 -07:00
windows-sftp.yml wolfsshd: complete the Windows user profile fallback 2026-09-09 22:06:06 -07:00
x509-interop.yml CI: install apt packages from ghcr .deb bundles 2026-10-07 21:39:28 -05:00
zephyr.yml Test Zephyr sample on 3.4.0 and 4.4.0 2026-07-14 13:58:43 -07:00