- tinyssh-convert: reject inconsistent Ed25519 key material in OpenSSH private-key files.
- Fixed
authorized_keyspath validation to check the opened file and every directory in its canonical path, including symlink targets. - Added support for the
sntrup761x25519-sha512key-exchange algorithm name. - Documented the supported SSH algorithms in README.md and tinysshd(8).
- Rejected all client-supplied environment variables for security reasons, extending the existing restriction for forced commands configured with
-eto every session. - Expanded SSH protocol tests to cover packet parsing and framing, sequence numbers, key exchange and rekey, authentication, global requests, session channels, flow control and connection shutdown.
- Consolidated all SSH, cryptographic, makekey and printkey tests under
tests/with a common build and runner;make testruns the complete standard suite whilemake test-sshruns only tests requiring an SSH client, including forced-command environment isolation. - Added handling for SSH global requests and fixed rejected-packet sequence numbers; thanks to @dirkson for the bug report.
- Fixed handling of SSH_MSG_IGNORE and SSH_MSG_DEBUG packets, including during strict key exchange; thanks to @Sven0nevS for the bug report.
- Fixed several SSH protocol compliance issues, including minimum packet padding, none-authentication user validation, NUL bytes in text lines, data after disconnect and unknown channel types; thanks to @Zhaodl1 for the detailed report.
- Fixed validation of public-key algorithm names.
- Fixed handling of channel half-closes, child output EOF and zero-increment window adjustments.
- Fixed PTY setup, ownership and cleanup error paths; thanks to @ishtiaqniloy for the bug report.
- Fixed logging of terminal types.
- Fixed self-pipe draining to prevent busy-polling.
- Fixed close-on-exec handling when opening files and random-data sources.
- Sanitised newlines in log messages.
- Fixed base64 padding when encoding data at a non-zero buffer offset.
- Fixed the fallback shell for accounts with an empty login shell.
- Fixed cleanup of removed environment entries and removed unused or duplicate channel and packet state.
- Stored client terminal dimensions as unsigned 32-bit values.
- Fixed systemd variable substitution in the tinysshd(8) example.