libssh2 1.11.2_DEV Deprecation notices: - This release disables these options by default: - SHA1-based host key methods and signatures: `ssh-rsa`, `ssh-rsa-cert-v01@openssh.com` You can enable them with `-DLIBSSH2_RSA_SHA1_ENABLE`. - SHA1-based key-exchange methods: - `diffie-hellman-group1-sha1` - `diffie-hellman-group14-sha1` - `diffie-hellman-group-exchange-sha1` You can enable them with `-DLIBSSH2_KEX_SHA1_ENABLE`. - DSA: `ssh-dss` host keys. You can enable it with `-DLIBSSH2_DSA_ENABLE`. - SHA1-based MACs: `hmac-sha1`, `hmac-sha1-etm@openssh.com`, `hmac-sha1-96` You can enable them with `-DLIBSSH2_HMAC_SHA1_ENABLE`. - MD5-based MACs and hashes: `hmac-md5`, `hmac-md5-96`, `LIBSSH2_HOSTKEY_HASH_MD5` You can enable it with `-DLIBSSH2_MD5_ENABLE`. - old-style, MD5-based encrypted private keys: You can enable it with `-DLIBSSH2_MD5_PEM_ENABLE`. - 3DES cipher: `3des-cbc` You can enable it with `-DLIBSSH2_3DES_ENABLE`. - RIPEMD-160 MACs: `hmac-ripemd160`, `hmac-ripemd160@openssh.com` You can enable it with `-DLIBSSH2_HMAC_RIPEMD_ENABLE`. - Blowfish cipher: `blowfish-cbc` You can enable it with `-DLIBSSH2_BLOWFISH_ENABLE`. - RC4 ciphers: `arcfour`, `arcfour128` You can enable it with `-DLIBSSH2_RC4_ENABLE`. - CAST cipher: `cast128-cbc` You can enable it with `-DLIBSSH2_CAST_ENABLE`. - The next release drops support for the above options. - This release drops support for OpenSSL <1.1.1, LibreSSL <3.7, mbedTLS <3.1.0, wolfSSL <5.4.0, zlib <1.2.5.2, old/classic mingw, mingw-w64 <3.0. - ECC support with nistp256, nistp384, nistp521 curves is required for OpenSSL (and forks), mbedTLS and wolfSSL. - This release drops support for Visual Studio 2008 and older. Requiring 2010 or newer (`_MSC_VER` >= 1600). - This release drops support for Windows XP and older. Requiring Windows Vista / Server 2008 or newer. - This release always enables large file support on Windows. This release includes the following enhancements and bugfixes: - agent: add NULL guards to all public `libssh2_agent_*()` API functions (1f977e77 #2635) - agent: fix potential infinite loop while receiving data from SSH agent (d0a0210b #2414) - agent: fix unused macro compiler warnings in UWP non-unity builds (0e2bc3d6 #2325 #2313) - agent: fix to replace `TEXT()` with `_TEXT()` in CRT calls (8e9f1ca1 #2320 #2313) - agent: add Unicode support, use secure `getenv()` on Windows (49abb5e5 #2313) - agent: list supported backends in `libssh2_build_options()` (09073098 #2312 #2285 #2178) - agent: move similar backends next to each other (tidy up) (80323ce4 #2311) - agent: stop repurposing system symbol as an internal guard (dfaa11ee #2310) - agent: cap number of identities, pubkey and comment sizes (1a45da5a #2151 #2148) - agent: fix bounds checks, and potential OOB access on 32-bit `agent_list_identities()` (15ae3030 #2148 #2046) - agent: tidy up and sync up allocation error messages (cb6b9461) - agent: fix potential wrap in 32-bit `agent_transact_pageant()` (5e020418 #2145) - agent: add response caps to Windows OpenSSH and Unix backends (db180247 #2145) - agent: fix NULL deref on OOM in `libssh2_agent_set_identity_path()` (1b9d0560 #2066) - agent: return error on OOM in `libssh2_agent_sign()` (4433bcc2 #2059) - agent: simplify `agent_disconnect_unix()` (25229c2c #2061) - agent: replace literals with `LIBSSH2_ERROR_*` constants (d14279d4 #2060) - agent: fix bounds checks, and potential OOB access on 32-bit platforms in `agent_sign()` (a6e07bc5 #2046 #2021) - agent: avoid reserved namespace for two static functions (1d8cfa73 #1978) - agent: avoid reusing a macro name (213335f3 #1849) - agent: do not store stack pointer in transaction context (4aa1720b #1845) - agent: replace `strncpy()` with `memcpy()` (179dbafb #1785) - agent: do not truncate socket path; reject (c10cb244 #1709) - agent: pageant backend, bound reply copy, handle missing reply (8ddf3b31 #1711) - agent: fix error code on agent recv error (42669040 #1710) - agent: fix byte amount copied for method in libssh2_agent_sign (9136cc76 #1603) - agent: merge `agent_win.c` into the main source (ddc4cf34 #941 follow: 4f0f4bff) - appveyor: build tests again with old MSVC and related tidy-ups (a09dcbb6 #2330) - appveyor: test debug-logging enabled build with exchange_keys during key exchange. (631e2f82 #1763) - kex: remove unused kex state variable `exchange_hash` (c3d8976c #1713) - kex: fix DH-GEX-sha256 bignum initialization (30befffe #1599 follow: 09c5e599) - kex: fix possible null pointer dereference in diffie_hellman_sha_algo() (1ac1ff44 #1508) - kex: return error if user KEX methods are invalid #1553 (4beed724 #1554 #1553) - kex, packet: validate DH prime range and server extensions count (fe907ca4 #1825) - kex, pem: use `ssh2_zero_free()` where applicable (1e7ba971 #2546 #2544) - keys-generate.sh: group signed keys, drop newlines (e0595be5) - keys-generate.sh: allow overriding the username (4dad9717) - keys-generate.sh: create directories if missing (cdf94b8b) - knownhost: match equivalent IPv6 literals (dd47304a #2568 #1398) - knownhost: stop determining `keylen` if passed as zero in `libssh2_knownhost_add*()` (7b18532c #2364 #2363 #1641 follow: 4b991b23) - knownhost: fix OOB reads in `knownhost_line_hashed()`/`knownhost_add()` (102e4448 #2363) - knownhost: fix off-by-one read in `libssh2_knownhost_readline()` (fed2d6e0 #2350) - knownhost: fix potential off-by-one read in `libssh2_knownhost_readline()` (b758dc29 #2335 #2053 #2012) - knownhost: fix off-by-one reads in `knownhost_add()` (8b278e64 #2334 #2333) - knownhost: extend public API arguments checks (580f7ad6 #2333) - knownhost: fix hmac context memleaks on error paths (c44e081d #2245 #2244) - knownhost: Modify null-termination check for host key line (bf33b943 #2053 #2012) - knownhost: fix memleaks on error paths in `knownhost_add()` type SHA1 (c6f897b7 #2025 #1957) - knownhost: fix for short hostnames (704299e9 #1500) - knownhost: improve known_hosts parsing and harden _libssh2_base64_encode() (d1c0e14d #1641) - knownhost: handle malformed comments in known_hosts parsing #1628 (aa4c7b5b #1629 #1628) - libgcrypt: fix `ssh2_bn_set_word()` return value (f0ac38ab #2596 #2595 #1354 follow: 95c824d5 follow: c9d40afa) - libgcrypt: tidy up variables names, S-expressions (f7335017 #2555) - libgcrypt: guard zero-length datum in `ssh2_dsa_sha1_sign()` (86adba14 #2534) - libgcrypt: reuse hash/hmac final code (88726a72 #2253 #2250) - libgcrypt: merge up a local single-caller function (d7edc91f #2251 #2244) - libgcrypt: check for more errors in `ssh2_hash_final()`/`ssh_hmac_final()` (eb1a3ee3 #2250) - libgcrypt: improve `ssh2_md5_final()` (b5784093 #2172 #2171) - libgcrypt: de-duplicate hmac init into worker function (2d57682f #2164) - libgcrypt: silence false positive `-Wconditional-uninitialized` (ea224dd0) - libgcrypt: fix private macro namespace, shorten (998c054d #1986) - libgcrypt: bump weak random to strong in `_libssh2_dh_key_pair()` (776be9f9 #1929 #149 follow: f7daf318) - libgcrypt: add support for RSA SHA-256/SHA-512 (f4642222 #1600) - libgcrypt, mbedtls, openssl: validate DH public value (fcf83078 #2239 GHSA-m9rg-h9jv-9gvh) - libssh2_base64_decode: add deprecation warning (cf3aac1a) - libssh2_poll: add deprecated attribute, drop from no-deprecated builds (94d4a2d1 #1838 #1266 follow: 2b8038e1 follow: b1414503) - libssh2_poll_channel_read: improve documentation on return values (9ece2b2b #1983 #1977) - libssh2_scp_recv2: fix stat struct type in man page prototype (91f3a05d #2508 follow: 6c84a426) - libssh2_scp_send, libssh2_scp_send_ex: add deprecation warning (70276045) - libssh2_sign_sk: add `LIBSSH2_API` attribute, document availability (e0635ab4 #1965 #698 follow: ed439a29) - libssh2_trace.3: Update prototype (7495084b #1518 #1517) - libssh2_userauth_keyboard_interactive_ex.md: fix allocator requirement (59329f34 #2661 GHSA-p6p8-66vc-3f24 #2659 follow: d4aa801f follow: da653774) - libssh2_userauth_publickey_sk.md: say `LIBSSH2_ALLOC_FUNC` (was: `SSH2_ALLOC`) (77e54d83 #2660 #698 follow: ed439a29) - libssh2.h: add two FIXMEs for allocator requirements (ce631aaf #2659 GHSA-p6p8-66vc-3f24) - libssh2.h: macro value formatting (1545df09 #2576) - libssh2.h: bump `LIBSSH2_VERSION_PATCH` to match version string (5c1f36c6 #2219 follow: c04d57e7) - libssh2.h: merge two `#if` branches (cbdb0a8c #1869 #1793 #1578) - libssh2.h: _WINDLL being defined does not mean libssh2 was built as a DLL (35326015 #1793 #1578) - libssh2.h: drop stray bits of Windows CE support (1d464325 #1770) - libssh2.h: typo fixes (780bf13a #1496) - libssh2.h: add note about release versions to `LIBSSH2_VERSION` (83590ac7 #1475 #771 #1473) - libssh2.pc: add Copyright property (4f271a3b #2527) - libssh2.pc: add the Link.ABI, Source and License tags (d5259e74 #2520) - mac: disable SHA1-based MACs by default (3e14d67d #2444 #2443) - mac: fix `mac_method_none_init()` to set `free_key` #1951 (91b0d464 #1952 #1951) - man: document availability of `libssh2_publickey_*` functions (dabe1e36 #2139) - mansyntax.sh: revert a change to unhide `man` error output (c343f06b #982) - mbedtls: fix `-Wunused-variable` when building with `LIBSSH2_NO_RSA` (738c2ac4 #2623) - mbedtls: use `ssh2_zero_free()` where applicable (b15d84b3 #2563 #2544) - mbedtls: merge local function `mbed_parse_eckey()` into its sole caller (a794df66 #2562 #385 #2379 follow: 5528f3da) - mbedtls: drop local `mbed_zero_free()` function (8ada619d #2553 #2552 #2550) - mbedtls: fix mismatched alloc/free in `ssh2_ecdsa_sign()` (62a2a7ec #2552 #385 #2196 follow: 5528f3da) - mbedtls: replace mbedTLS allocator with SSH2 one where possible (420dbba6 #2550 #2548) - mbedtls: fail on missing `MBEDTLS_ECDH_C` gracefully (50cf5daa #2522 #2519) - mbedtls: add support for AES-GCM ciphers (d5ba5bc7 #2505 #1764 #2401) - mbedtls: fix double-free in `mbed_pub_priv_key()` error path (6c639b18 #2502 #2501 #132 follow: 186f1a2d) - mbedtls: avoid magic numbers (a35c6d27 #2375) - mbedtls: fix 3DES detection (fe57c2dc #2286 #2277 follow: f1d60b1f) - mbedtls: drop no-op checks from `mbed_mpi_write_binary()` (346a317d #2278 #385 follow: 5528f3da) - mbedtls: drop unused Blowfish, RC4, make 3DES conditional (b684520b #2277 #1727) - mbedtls: pass null-terminator in `ssh2_ecdsa_new_private()` for PEM-formatted keys (bce5593c #2275 #1878) - mbedtls: sync null-terminate data variable names, reflow (e3135eda #2213) - mbedtls: fix mismatched alloc/free, leaks, leaks on OOM, missing null-terminator (f7fa81ca #2196 #2195) - mbedtls: drop interim result variables (tidy-up) (6dc44da8 #2156) - mbedtls: switch to PSA Crypto API for hash/digests and drbg (e3905e55 #2132) - mbedtls: use enum types to fix `-Wimplicit-int-enum-cast` (b9845510) - mbedtls: drop redundant check for version 3+ (1a3fca66 #2009 #1822 #1727) - mbedtls: make `*ecdsa_curve_type_from_name()` function static (35f420bd #1967) - mbedtls: stop using `mbedtls_pk_load_file()` (b101ce0a #1878 #1421 #1393 #1349 follow: 1628f6ca follow: 2e4c5ec4 follow: e973493f) - mbedtls: fix returning pointers to stack memory (5a54b7c9 #1820) - mbedtls: require 3.1.0 (2.x no longer supported upstream) (f63f68b3 #1727) - mbedtls: fix missing rsa_init when loading key from memory (7419595a #1822) - mbedtls: fix AES-CBC backend: avoid BAD_INPUT_DATA during cipher_finish() in SSH handshake (26f57efd #1758 #793) - mbedtls: fix using garbage value (reported by clang-tidy) (16ce0ec8 #1729 #132 follow: 186f1a2d) - mbedtls: Bug fix for gen_publickey_from_rsa (6746b789 #1560) - mbedtls, openssl: dedupe key type literals into static const strings (cd04e2ee #2405) - mbedtls, openssl: make `ssh2_hmac_update()` a macro wrapper (c177d6c3 #2254) - mbedtls, openssl: verify success of low-level DH operations (d837d563 #2155) - mbedtls, wincng: make var names consistent, drop magic numbers (4d4f15ba #2376) - mbedtls, wincng: rename `*_safe_free()` to `*_zero_free()` (d152c13e #2208) - misc: fall back to POSIX `gettimeofday()` unconditionally on non-Windows (0d998d16 #2494) - misc: drop `ssh2_gettimeofday()`, no longer used (694d38e3 #2493 #2490) - misc: replace `gettimeofday()` with `ssh2_now()` in `ssh2_deb_low()` (a43dc6d5 #2490 #2489) - misc: use `SecureZeroMemory2()` if available (Windows) (566c9f2c #2451) - misc: make `ssh2_copy_string()` add a null-terminator (f4ae1d5a #2430 #2429) - misc: optimize out an `strlen()` call in `ssh2_match_string()` (f5856811 #2425 #2424) - misc: add non-unsigned char variant for `ssh2_get_string()` (907fe84f #2424 #2422 #2420) - misc: make `ssh2_snprintf()` use safe CRT functions and make it `snprintf()`-compatible (cde2f393 #2322 #812 #2105 follow: 4cdf785c follow: 6bf89833) - misc: drop `ssh2_fopen()` macro redirect on Windows (a8870f08 #2329 #2318) - misc: fix NULL `session` derefs in `ssh2_deb()` (a6f5cc77 #2282 #2283) - misc: null-terminate `ssh2_snprintf()` output in pre-VS2015 builds (66383004 #2105 #812 follow: 4cdf785c follow: 6bf89833) - misc: clarify C syntax in `ssh2_store_bignum_bytes()` (3c2dc8f2 #2068 #698 follow: ed439a29) - misc: assume POSIX `EWOULDBLOCK` macro is defined (f3ff0584 #2065 #172 #171 follow: 92f76866 follow: c511177d) - misc: rename socket error variables to `sockerr` (d7698703 #2062) - misc: fix small leak in base64_encode() with empty data #1627 (cea8783e #1630 #1627) - misc: _libssh2_base64_decode() handle malformed data (8cad398b #1551) - openssh_fixture: merge Apple container commands with others (418c2a2a #2622 #2605) - openssh_fixture: drop progress from `image pull` with Apple container (1061e299 #2620 #2605) - openssh_fixture: drop `docker-machine ip` logic (86dca4ef #2611 #2609 #100 follow: cf80f2f4) - openssh_fixture: fix `ssh2_snprintf()` result check (38caa44a #2157 #489 follow: ac13b70a) - openssh_fixture: trim all right-padding whitespace from external command results (879aac02 #2142 follow: cf80f2f4) - openssh_fixture: increase `/proc/self/cgroup` read buffer (revert) (540f248c) - openssh_fixture: increase `/proc/self/cgroup` read buffer (826c9f09 #1688) - openssh_server: build container for arm64 also, fix Dockerfile for trixie (7d9d0f8d #2606) - openssl: make `ssh2_bn_bytes()`/`ssh2_bn_bits()` return `size_t` (b766778c #2592) - openssl: bail out early on bignum OOM in `ssh2_rsa_new()`, `ssh2_dsa_new()` with OpenSSL 3+ (eabe683e #2566 #2564 #1207 follow: b0ab005f) - openssl: replace OpenSSL allocator with the SSH2 one in `ssh2_rsa_new()`, `ssh2_dsa_new()` (8aeee000 #2564 #2559 #2548 #1207 follow: b0ab005f) - openssl: pass `session` to `ssh2_ecdsa_curve_name_with_octal_new()`, use SSH2 allocators (47cb2605 #2549 #2544) - openssl: replace OpenSSL allocator with SSH2 one where possible (d5149ca3 #2548 #1207 follow: b0ab005f) - openssl: fix allocate/free mismatch on failure in `ssh2_ecdsa_sign()` with OpenSSL 3+ (7582420d #2547 #2544 #1207 follow: b0ab005f) - openssl: clear local secret before free in `ssh2_ecdh_gen_k()` with OpenSSL 1.1.1 (7c00750a #2545 #41 #2544 follow: aba34f5f) - openssl: fix allocator/free mismatch in `ossl_ecdsa_evp_to_pubkey()` with OpenSSL 3+ (2192c2ed #2543 #1207 follow: b0ab005f) - openssl: handle OOM and `EVP_PKEY_get_octet_string_param()` fail in `ossl_ecdsa_evp_to_pubkey()` (9b51b957 #2542 #1207 follow: b0ab005f) - openssl: bound EC point length in `ssh2_ecdsa_create_key()` (ede8045e #2541 #1207 follow: b0ab005f) - openssl: guard zero-length input in `ossl_swap_bytes()` (7cafeb2d #2521 #1207 follow: b0ab005f) - openssl: future-proof LibreSSL ECC support check (8358f2f5 #2523 #2519) - openssl: fix compiler warning with AWS-LC/BoringSSL and debug logging enabled (33a1df30 #2503) - openssl: sync patterns between functions (tidy-up) (9a376a86 #2442 #2308 #2029 #1644) - openssl: fix potential OOB read/write with AES-GCM in `ssh2_cipher_crypt()` (a2ed82d4 #2401 GHSA-c4f7-cvfc-33j7 #797 #1491 follow: 3c953c05) - openssl: replace `ossl_*_openssh_priv_new()` functions with `ossl_key_from_openssh()` (ac9a71a7 #2396 #2394 #2379) - openssl: merge `ossl_key_from_openssh_*()` file/blob functions (3bb068e4 #2394 #2388 #2379 #2354) - openssl: fix importing DSA private keys from blob (e295f4ff #2395 #248 #2394 follow: 03092292) - openssl: avoid more magic numbers (22b9472b #2374) - openssl: sync more patterns, avoid magic numbers (fe12685f #2372) - openssl: sync variable names and patterns in two ed25519 functions (93008915 #2371) - openssl: fix memleaks on keyfile/blob parse failure (95375dc0 #2355 #2353) - openssl: fix `key_type` check in `ossl_key_from_openssh_blob()` (8460d440 #2352 #698 #248 follow: 03092292 follow: ed439a29) - openssl: fix NULL derefs on OOM (698ff902 #2339) - openssl: match alloc size when zeroing ECDSA `group_name` (tidy up) (3b43169d #2298) - openssl: drop no-op check and code in `ssh2_ed25519_new_public()` (3b74878f #2297) - openssl: drop two always-true checks (fe807f9b #2296) - openssl: check `EVP_PKEY_CTX_new_id()` result in `ssh2_rsa_new()`/`ssh2_dsa_new()` (9e26c685 #2295) - openssl: fix leaking `key` buffer on error in `ossl_ecdsa_sk_openssh_priv_to_pubkey()` (4b931c43 #2293 #698 follow: ed439a29) - openssl: fix NULL derefs on OOM in `ossl_e*_sk_openssh_priv_to_pubkey()` (7e2d7753 #2292 #698 follow: ed439a29) - openssl: drop no-op code from `ssh2_sk_pub_keyfilememory()` (08bee363 #2281 #698 follow: ed439a29) - openssl: add debug traces to ML-KEM ed25519 KEX codepath (ca0e2dcf #2259 #2092 #2083 #1644) - openssl: map `ssh2_hash_update()` to OpenSSL API directly (d2395d9b #2183) - openssl: omit `ssh2_init_if_needed()` calls when a no-op (6450c760 #2176 #1668 #1310 follow: 76e7a68a) - openssl: pass actual mac buffer size to `EVP_MAC_final()` (41a08c5d #2136 #2132) - openssl: check update/final success in `ssh2_ossl_hash()` (d70c148c #2135 #2134) - openssl: de-duplicate low-level hash functions (4864dae6 #2134) - openssl: fix server host key memleak on handshake failure (34b45a08 #2082 #2080) - openssl: fix leaking ECDSA bignum buffer in non-OpenSSL3 builds (e4d056ea #2081 #2079) - openssl: stop setting `OPENSSL_SUPPRESS_DEPRECATED` (bd340b5e #1244 #1243 #1236 #1207 follow: 363dcbf4 follow: 487152f4 follow: 82581941 follow: b0ab005f) - openssl: fix `-Wimplicit-int-enum-cast` in wolfSSL builds (ee3b7a8b) - openssl: simplify debug-logging comment field in `ed25519_openssh_priv_to_pubkey()` (a21dd31f #2033) - openssl: free the correct pointers in `ecdsa_sk_openssh_priv_to_pubkey()` (b8e471c8 #2027 #698 follow: ed439a29) - openssl: set public key buffer length correctly in `ssh2_mlkem_new()` (41389f8f #2029) - openssl: rename `ossl_ed25519_openssh_sk_priv_to_pubkey()` (11294d65 #2015 #2003) - openssl: fix conditions for enabling AES-GCM support (3490c07b #2007 #1668) - openssl: drop support for non-opaque structures (5b7ac811 #2006 #1919 #1668) - openssl: drop redundant `{}`, merge nested `if`s where possible (28824712 #2004) - openssl: reflow a function definition to fix indentation (dc6e1541 #2001) - openssl: refactor static function names, move to `ossl_` namespace (794dbd00 #2003) - openssl: move worker functions to the `ossl_` namespace (c347d5f5 #2001) - openssl: fix `EVP_PKEY_CTX` leak in `ssh2_dsa_new()` with OpenSSL 3 (1f95cd64 #1999) - openssl: avoid function pointer typedefs and casts (4a3b0b23 #1991 #1972 #1484 #1207 follow: 231a97a9 follow: b0ab005f) - openssl: fix ECDSA sign allocator mismatch (3186a1a7 #1829 #292 #1828) - openssl: fix incorrect frees on errors #1802 (2b71623a #1803 #1802) - openssl: drop support for OpenSSL <1.1.1, LibreSSL <2.7 (2018-03-21) (cea796fc #1668) - openssl: fix to build with wolfSSL without AES-CTR (4fbd5923) - openssl: make it compatible with wolfSSL built without `OPENSSL_ALL` (2da28146) - openssl, os400qc3: minor hash macro tidy-ups (3d70da1c #2168) - os400: move return type inline, clang-format (065794dc #1968 #1964 #1960 #1938 #1936 #1935 #1898) - os400qc3: use `ssh2_zero_free()` in `try_pem_load()` (ecc89283 #2551 #2544) - os400qc3: check `getASN1Element()` result in `asn1_new_from_bytes()` (4040fbd3 #2529) - os400qc3: validate DH public value (d0ca946d #2402 GHSA-m9rg-h9jv-9gvh #2239) - os400qc3: fix `data` memleak on success in `try_pem_load()` (116fe644 #2391 #2388) - os400qc3: fix macro syntax regression (8c80319a #2086) - os400qc3: fixup `ssh2_os400qc3_hash_final()` declaration (ba01f80b #2168 #2165) - os400qc3: replace typedef structs with direct struct types (35aa0b2c #1910) - os400qc3: misc fixes (8e2cc23e #1901 #1746) - os400qc3: open PEM files in binary mode (915ea44f #1884 #1883) - os400qc3, wincng: replace more `unsigned long/int` with `size_t`/`uint32_t` (48933ba2 #2270) - os400qc3.h: fix formatting typo (3b5eada9 #1936) - ossfuzz: replace assert() with goto in ssh2_client_fuzzer (e7e0383b #1823) - ossfuzz: fix picky compiler warnings, make it pass `checksrc` (96cbe618 #1526 #901 follow: 50124428) - ossfuzz.sh: disable build options unnecessary for fuzzing (6857c88c #2447) - packet: keep new channel across EAGAIN in x11 and tcpip forward opens (ff501d63 #2656 #1427) - packet: fix memleak on receiving multiple `exit-signal` packets (0a17ea04 #2504 GHSA-53q9-wmqr-fh7c follow: 6140ec2d) - packet: fix use-after-free of ignored extended data on eagain (bf7fa4c1 #2450) - packet: use `SSH2_IS_LITERAL()` macro (eaf7c1a0 #2433 #2429) - packet: make `ssh2_packet_askv()` static (00871543 #2419) - packet: fix bounds checks (06e5f49f #1906 #1895) - packet: fix packet bounds check in `packet_authagent_open()` (456b9b94 #1895) - packet: check `_libssh2_get_string()` return in `EXT_INFO` handler (17626857 #1864) - packet: check exit_signal allocation before memcpy (47a49a5c #1861) - packet: improve bounds checking in exit-signal sig name handling (590cdfe7 #1859) - packet: honor buffer length when passing to `_libssh2_debug()` (8c22b959 #1786) - packet: Fix possible heap overflow in SSH_MSG_CHANNEL_REQUEST #1815 (83072b0e #1816 #1815) - packet: create null-terminated string for shost in packet_queue_listener() (f66dfc4a #1761) - packet: move size check to before size manipulation (a93359ad #1704) - packet: authagent_open: fix failure packet length (31ec5a8b #1701) - packet: fix type mismatch in "reason code" (13a71451 #1706) - packet, sftp: replace `strlen()` on literals with `sizeof()` (2eeae1e0 #2432 #752 #2400 #2224 #1179 follow: 88a960a8 follow: bc4e619e) - packet.h: delete two orphan function prototypes (db8e79fa #2267) - pem: cap accepted KDF rounds in `pem_parse_data_openssh()` (5d27ee28 #2657 GHSA-vc97-vgww-qggv) - pem: reduce static scope, use more `sizeof()` (89fa7a94 #2441) - pem: fix to exactly match the legacy PEM crypt annotation header (e3a428b8 #2440 #2438 follow: 386e0122) - pem: de-duplicate two identical curve type conversions functions (5cee2004 #2427 #2421) - pem: avoid a pointer cast in `pem_parse_data_openssh()` (tidy-up) (a7d05f95 #2422 #248 #2361 follow: 03092292) - pem: null-terminate decrypted OpenSSH key buffer to fix OOB read (0fcb6625 #2403) - pem: merge file/blob codepaths (7bf902e5 #2388 #2379 #2362 #2359 #2354) - pem: fix `ssh2_pem_parse_blob()` memleak in no-MD5 builds (3b84c15c #2390 #2388) - pem: sync blob argument names with rest of code (88025fcf #2387) - pem: Fix incorrect line clearing (d78905f6 #2137 #2130 #1746) - pem: drop comparing unsigned integer with a negative range (7db62449 #2063) - pem: fix `readline_memory()` to detect end of input, not skip chars (8e8e3fc6 #2032 #2013 #1746) - pem: Add additional bounds checks to read_asn1_length #2011 (5efc68df #2028 #2011) - pem: drop `ssh2_` prefix from static function (75e47814 #1979) - pem: `_libssh2_pem_parse()` extend error handling, limit size to 1 MiB (a173bd93 #1880 #1878) - pem: replace literal with `SEEK_SET` (5fe64212 #1847 #1746) - pem: drop unnecessary `wincng.h` include (734ec12c #1834 #1746) - pem: fix formatting, C++ comment (51a14ae2 #1746) - pem: add passphrase support to _libssh2_pem_parse_memory (141b0356 #1746 #1047) - pem: add validation for data length and padding (00b17231 #1797) - pem: fix possible double free if key in error cases (2fb5803c #1550 #1549) - pem, test_hostkey: replace `strlen()` on literals with `sizeof()` (7bbf17a5 #2438 #2432) - pem, wincng: fix checking for OpenSSH PEM magic string (56c12e9d #2022 #248 #2014 #1315 follow: 03092292 follow: 3e723437) - publickey: cap number of public keys in `libssh2_publickey_list_fetch()` (14b9d877 #2580) - publickey: preserve list state across EAGAIN in `libssh2_publickey_list_fetch()` (b4e6761d #2578 GHSA-qwvp-xm4w-32m7) - publickey: initialize the list terminator in `libssh2_publickey_list_fetch()` (ad16eb11 #2579 #2380) - publickey: fix `attr` memleak on error in `libssh2_publickey_list_fetch()` (c2f1a3a2 #2380 #2368) - publickey: honor key type length in traces (865c86a8 #2386) - publickey: fix potential heap OOB reads in `publickey_init()` (edec1cce #2197 #2147) - publickey: sanitize public API input arguments (d47298d5 #2340) - publickey: replace magic numbers with `sizeof()` (56c9bb67 #2225) - publickey: cap variable-length packet element sizes (7c8a170c #2207 #2205) - publickey: rework bounds checks to avoid pointer comparisons (a0334dbe #2205 #2204 #2203) - publickey: flatten bounds check `if` blocks (tidy-up) (3b8d6dd2 #2203) - publickey: fix potential OOB read (e3fba528 GHSA-w8q5-9hq2-h9pr #2203 follow: c02d9b7b) - publickey: fix potential OOB read in `libssh2_publickey_list_fetch()` (a13bb6c7 #2202 GHSA-w6g9-cpfp-22gc) - publickey: fix potential OOB read in `publickey_response_success()` (ceaa7e13 #2147 #2144) - publickey: fix leaks when `publickey_response_success()` received <8 bytes (1b3af90c #2144 #2143) - publickey: cap packet size in `publickey_packet_receive()` (c0e20202 #2143) - publickey: fix potential multiplication overflow in 32-bit `libssh2_publickey_list_fetch()` (34497525 #2128 follow: e15f5d97) - publickey: fix potential arbitrary free in `libssh2_publickey_list_fetch()` (a9758da4 #2127 follow: e15f5d97) - publickey: fix double-free by transferring ownership of receive_packet (86301ab5 #1699) - readme.vms: fix typos (cont.) (3ccef401) - readme.vms: fix typos (622dfa06) - REUSE: add copyright headers to more files, `.gitignore` updates (4f9e6e0b #1718) - scp: handle `ssh2_snprintf()` failure in `scp_send()` (4884fc61 #2573 GHSA-p2v4-ghw2-mvq3 GHSA-v6rf-jr7x-9hhp) - scp: enable 64-bit timestamp support in `libssh2_scp_recv2()` (fe1ef985 #2460) - scp: delete two obsolete comments (b16b4e76 #2459 follow: 7a5ffc8c follow: ca2e81eb) - scp: drain long C-response basenames past fixed buffer (aa54fdd1 #2408 #1738) - scp: fix potentially dumping random memory to debug log in `scp_send()`/`scp_recv()` (f9f273b4 #2385 #2383) - scp: fix NULL dereference in path arg of send/recv (992dafbc #1625) - scripts: minor fixes and improvements (f2ec1f2f #2265) - scripts: move `maketgz`, `git2news.pl` from root to scripts directory (07ffced7 #1918) - scripts: fix shellcheck SC2046 warnings (f97fb271 #1739) - SECURITY.md: use GitHub PVR as the channel for security reports, drop email (505f7b2b #2413) - SECURITY.md: update with points not considered vulnerabilities (a6efe2bc #1835) - SECURITY.md: mention GitHub PVR as an option (5bd1baed #1664) - session: free keyboard-interactive state in `session_free()` (75b472cf #2517) - session: disable timeout when negative in `libssh2_poll()` `select` path (ac3f8fe2 #2356 #2341) - session: free kex buffers unconditionally in `libssh2_session_free()` (815aaf82 #2347 #1691) - session: sanity check public API arguments (b705010c #2346) - session: fix rare error message for `libssh2_session_callback_*()` (559a8889 #2256) - session: fix `-Wformat-overflow` with gcc-16 (ba90b86b #2098) - session: drop `alloca()` use from `libssh2_poll()` (787e9bfe #2041 follow: 209d06d6) - session: fix primary data length in `session_disconnect()` (1573b75e #2031 #2024) - session: fix heap-buffer-overflow in session_startup() (ce2a7b80 #1799 #1798) - session: null checks to quiet fuzzer (c090b696 #1556) - session_fixture: fix to skip AES-CBC/CTR tests if not supported or disabled (84cffeaf #2507) - session_fixture: re-enable algos disabled for mbedTLS, the issue is fixed now (571653ba #2446 #969 #793 #1758 follow: 7487dcf4 follow: 9ecb22da) - sftp: fix handling unexpected EOF in `sftp_packet_read()` (9438f90a #2581 GHSA-2q3j-q544-xxp7) - sftp: free response buffer on `sftp_read()` protocol-error paths (cdbda3cd #2537) - sftp: fix memleak on OOM in `sftp_init()` (0d275121 #2458 #2456 #1386 follow: fb652746) - sftp: reject bad readdir name counts and clear stuck dir state (092b2829 #2280 #2018) - sftp: fix to return accurate libssh2 error code (59f39e80 #2217 #791 follow: bac8d7d4 follow: fc7e79e4) - sftp: fix wrong error code passed to `ssh2_err()` (ce152755 #2216 #1386 follow: fb652746) - sftp: avoid forward declarations by reordering functions (b1431e26 #2210) - sftp: correctly size packet length when using attrs_in (21840ddf #2170) - sftp: prevent dangling pointer by nullifying data (5e477614 #2180 GHSA-px3w-7g75-hg7w) - sftp: cap readdir response size and fix window adjust overflow (e3379a5c #2133 #2017 #791) - sftp: Replace LIBSSH2_ERROR_BUFFER_TOO_SMALL with LIBSSH2_ERROR_PROTO (343e55fe #2067) - sftp: missing FREE in error condition (7dd4493b #1806) - sftp: fix sftp_symlink when getting SSH_FXP_STATUS response (4ed26f57 #1731) - sftp: update sftp_symlink to avoid out of bounds read on malformed packet #1705 (2dae3024 #1717 #1705) - sftp: downcast packet length checks #1707 (c097c681 #1714 #1707) - sftp: add input bounds checking to SFTP API (ff50682c #1679) - spacecheck: cap max lines per file, use single-quotes (3a189abe #2480) - spacecheck: update, fix new issues found (95d7a8b9 #1851) - spellcheck.sh: exclude test keys to avoid false positives (520087ac #2615) - src: disable more RSA SHA1 code when unused (2a76dafa #2624) - src: constify arguments where feasible (8e181e7a #2589) - src: propagate `session` to replace bare allocators with SSH2 ones (a2ac6bd4 #2544) - src: check mingw-w64 version requirement (dc745585 #2535 #1919) - src: de-duplicate two byte swap functions into `ssh2_swap_bytes()` (0acd2f56 #2524) - src: disable SHA1-based host key methods and signatures by default, fix fallouts (079eeb85 #2501 #2444 #2443 #1435 follow: b7ab0faa) - src: add support for chacha20-poly130-encrypted OpenSSH key files (7abbac4e #2488 #2486 #1426 follow: 492bc543) - src: bump `ssh2_time_t`/`ssh2_timediff_t` resolution from milliseconds to microseconds (c97959e9 #2489 #2341) - src: de-duplicate `inttypes.h` and `sys/uio.h` includes, inline comment (7cbdcfbb #2469) - src: replace banned `strto*()` number parsing with local function (833b4851 #2456) - src: make `ssh2_xor_data()` static to WinCNG (ec12e60f #2431 #739 follow: ec0a51db) - src: fix potential OOB reads in EDCDA/ED25519 OpenSSH-formatted key parsing (262c97f7 #2421 #2426 #2420 #2403) - src: drop casts, constify (74a09eb2 #2420 #2424) - src: tidy up/fix `ssh2_base64_decode()` calls (514fe6be #2423 #2025) - src: make `ssh2_store_str()` accept void pointer to reduce casts (8c707ce1 #2416) - src: drop redundant casts (7b6dbf47 #2415) - src: add `static` to const strings and tables, where missing (a4a53cc5 #2404) - src: drop method length (8bd003b8 #2384 #2381 #2369) - src: make sure `method` buffers are null-terminated (84485961 #2381 #2369) - src: rename file/blob key import/parse functions for consistency (6a951168 #2362) - src: drop no-op or redundant casts (tidy-up) (a3430249 #2361) - src: make `method` string a signed `char *` (64790f50 #2360) - src: make internal passphrase type `const char *` to match public API (0c55ec6d #2357 #2349) - src: use abstract internal time type, bump resolution to milliseconds (9c421761 #2341 #1893 #1919 #1818 #1497) - src: make internal passphrase type consistent, where missing (17aa8b04 #2349) - src: fix handling `snprintf()` return values (3d3c7f62 #2337) - src: stop redefining system symbol `gettimeofday()` (73164d34 #2323) - src: fixup namespace for local `fopen` symbols (454e7679 #2324 #2318) - src: add Unicode, long-filename, and secure `fopen()` support (Windows) (521146a4 #2318) - src: return `LIBSSH2_ERROR_BAD_USE` when `session == NULL` (4ee56c61 #2283 #2282) - src: bump RSA/DSA parameter sizes to `size_t` (fa2ee2a8 #2266) - src: de-duplicate `ssh2_sk_pub_keyfilememory()` stubs (765d2f64 #2261 #698 follow: ed439a29) - src: drop interim macros for bignum functions, where applicable (b06cc668 #2243) - src: backtrack on NULL digest buffer support in `ssh2_hash_final()` (b1307829 #2232 #2226) - src: fix hash context leak on hash update fail (e006aa58 #2226 #2184 #2171 #1303 follow: 4718ede4) - src: add one-shot hash function `ssh2_hash()` and use it (61ea21e6 #2231) - src: cast const pointers passed to `SSH2_FREE()` with `SSH2_UNCONST()` (73256b18 #2222) - src: drop redundant casts from `ssh2_explicit_zero()` pointer args (17469453 #2214) - src: move static function names to local namespace, where missing (d255a8b6 #2211) - src: add `SSH2_SAFEFREE()` macro and use it (2e7c9a09 #2209 #2208) - src: rename and tidy up digest length macros (e4f8d1fb #2131) - src: dedupe PEM header/footer macros into `crypto.h`, and use them (fc4d0264 #2085) - src: introduce `SSH2_ERRNO()` and use it (41d86d3b #2050) - src: dedupe OpenSSH PEM macros into `crypto.h` (f1d07227 #2034 #2022) - src: fix stray `fprintf()` calls, make checksrc verify (124c68bb #1997 #796 #1556 follow: af1e591e) - src: fix `-Wreserved-macro-identifier` with clang-cl (71a3a09a #1992 #1972) - src: drop redundant parentheses (ecf39b36 #1984) - src: drop stray casts for allocator results (8ecabbcd #1970) - src: drop redundant `LIBSSH2_API` attribute from definitions (f5f434c7 #1969 #1961) - src: shorten namespace for private functions and macros (076838de #1961 #698 #1949 #1931 #1923) - src: verify `_libssh2_store_bignum2_bytes()` success (412e9df8 #1942 #1025 follow: ebf644fb) - src: formatting (cont. 2) (1db40832 #1938 #1936) - src: formatting (cont.) (63e59481 #1936 #1935 #1923) - src: formatting (6ffb9632 #1935) - src: drop 'libssh2' prefix from static symbols (adc07964 #1934 #1931 #1923) - src: drop more leading underscores from symbols (8c9b7771 #1931 #1923) - src: drop leading underscore from internal macro constants (689b2023 #1923) - src: replace typedef structs with direct struct types (cont.) (7dd7e626 #1909) - src: replace typedef structs with direct struct types (967647c4 #1907) - src: open key files in binary mode (0ca33b61 #1883 #235 #1880 follow: ef6eaadb) - src: drop unused internal `FOPEN_APPENDTEXT` macro (99a4de92 #1882 #235 follow: ef6eaadb) - src: misc tidy-ups (ea14e9a4 #1877) - src: add hybrid ML-KEM KEX algorithms support with OpenSSL 3.5 (3ba252e2 #1644) - src: move outlier leading `&&` and `||` to the end of lines (3865eabe #1767) - src: fix two NULL checks (openssl, userauth) (51b35d1b #1656 #698 #1314 follow: 3a6ab70d follow: ed439a29) - src: disable deprecated algos by default (b89858b8 #1531) - sshd_config: drop accidental ML-DSA change (781b6ca8 #2615) - sshd_config: enable legacy KEXs for Libgcrypt and WinCNG, drop workarounds (1d0b86ac #2484 #2174 #1720) - sshd_config: enable `ssh-rsa-cert-v01@openssh.com` more (5b494b04 #2478 #2474) - test_auth_keyboard_info_request: delete unused `free_count` variable (1c9ff814 #2554 #663 follow: 83853f8a) - test_hostkey: free decoded expected host key (fb2b6d57 #2518 follow: cf80f2f4) - test_hostkey_hash: avoid `BUFSIZ` macro (00f6c3a6 #2112 #2104 #2099 #2096) - test_hostkey_hash: tidy up `calculate_digest()` (17389d83 #2104 #2103 #2099 #2096) - test_hostkey_hash: fix `-Wformat-truncation` with gcc-16 (36d38812 #2099 #2096) - test_hostkey_hash: silence `-Wformat-truncation` in `calculate_digest()` (837ce2f1 #2096) - test_read: fix to close and free channel on error (a1d2ca5d #2108) - test_simple: make `test_ssh2_dh_validate()` portable (a951e066 #2595 #2239) - test_simple: cast to avoid `-Wsign-conversion` (clang-tidy) (764de73f #2418 #2417 #2239) - test_simple: fix to check test result (4013a3fe #1973) - test_ssh2: fix to free channel on `libssh2_channel_shell()` fail (5569c5b6 #2109) - test_ssh2: fix detecting connect failure (2e69ba25 #1854) - test_ssh2, examples: bump to SHA-256 fingerprints (6f3c640d #2445) - test_ssh2, examples: avoid crash on NULL fingerprint (f784c21d #2179 #2174) - test_sshd.test: add RSA and ECDSA `HostCertificate` options (7498e661 #2612 #2539) - test_sshd.test: sync an option with `sshd_config` used in `Dockerfile` (cae4e3f8 #2481 #1024 follow: d4690e95) - tests: retry '(-43): Failed getting banner' flaky failures (2233bf95 #2662 #2603) - tests: set `PerSourcePenalties` for sshd, bump debug level to 2 (4ab391ec #2650 #2649 #2621) - tests: dump container sshd log for test failures (45aa5c5f #2621 #2484 #2174 #1720) - tests: add ML-DSA host keys (not used or supported by libssh2) (5c50ea8a #2615) - tests: add support for `podman`, Apple `container` (9bd1f16d #2605) - tests: replace DSA with RSA key for fail test (b937ded9 #2604) - tests: drop WinCNG retry workarounds (5bfa5744 #2603 #804 #2583 #1023 follow: bc120a34) - tests: add script to dump test keys in more parsable formats (ceb15801 #2574) - tests: add tests for signed host key: `ssh-ed25519-cert-v01@openssh.com` (6036e577 #2513 #2435 #2434 #2064) - tests: rename CA keys to reflect they are user keys (19aa4338 #2512) - tests: upload host pubkeys to repo (c8543ef3 #2511 #2435 #2064) - tests: rename keys/tests to contain the key format (72693e4e #2510) - tests: add `chacha20-poly1305@openssh.com` to `test_read_algos.txt` (0b749a96 #2506 #1426 follow: 492bc543) - tests: add PKCS8-formatted plain and encrypted keys and tests (4b5303ab #2500) - tests: add ECDSA PEM format plain and encrypted keys and tests (f3a5b6a0 #2499) - tests: move trusted CA private keys off the test server (f5821e60 #2497 #2496) - tests: add signed ed25519 key and test (d7a253f5 #2496) - tests: add test for encrypted ECDSA key (fd07ca41 #2486) - tests: add support to disable hex debug dumps (2a38092c #2487) - tests: allow overriding the username in `test_*_signed` tests (9a959ada) - tests: regenerate `id_rsa_signed.pub` to match intent, fix `sshd_config` to accept it (41d5efc9 #2474 #710 #2479 #2478 follow: 4b21e49d) - tests: rename a test and keys to match the actual format (7392dc95 #2479 #2474 #1314 follow: 3a6ab70d) - tests: test key tidy-ups (96cce079 #2473) - tests: sync up pubkey comments with generator (tidy-up) (e77f5da4 #2472) - tests: move test keys into `keys` subdirectory (a824e9d8 #2471) - tests: revert to use system `snprintf()` (a2aae5ea #2331 #2103) - tests: use `LIBSSH2_SOCKET_CLOSE()` macro (743cebc9 #2193) - tests: revert `srcdir_path()` to static buffers (c399519e #2106 #2102 #2089 #1415 follow: 12427f4f) - tests: tidy up `srcdir_path()` more (4cecccd6 #2102 #2089 #1415 follow: 12427f4f) - tests: fix wrong index in `srcdir_path()` cleanup (aae3776a #2089 #1415 follow: 12427f4f) - tests: fix sleep durations (007a36e8 #1853 #996 #490 follow: 984d0081 follow: a459a253 follow: a88a727c follow: cf80f2f4) - tests: improve `SSHD` default value (fixup) (ea56904a #1568 #1563) - tests: use `setfacl` if available (cf15fdd2 #1565) - tests: improve `SSHD` default value (fb12d87e #1563) - tests: add support for wine/qemu (5930dc3c #1562) - tests: delete CMake ExternalProject integration test (8011f901 #1522 #1510 #1116) - tests/.gitignore: delete two stray entries (1bc6e2c3 #1718) - tests/cmake: suppress stderr in `if` expression (c7541acd #2642) - tests/openssh_fixture: fix to close socket on connect failure (5ddc5997 #1855) - tidy-up: prefer `host key` in two words for human-readable text (14fbba96 #2618) - tidy-up: miscellaneous (967a24b3 #2617 #397 follow: 7a26697e) - tidy-up: prefer term 'container' over 'docker' (2ded2f95 #2609 #2605) - tidy-up: miscellaneous (be937743 #2556) - tidy-up: version-related comments and messages (9a0b40af #1866 #827 #811 #1620 #1619 #1610 #1592 #1591 #1590 #1589 #1535 #1128) - tidy-up: miscellaneous (532ba6dc #2526) - tidy-up: comment and formatting fixes (3f718eaa #2525) - tidy-up: C and formatting nits (bc6a0c5a #2463) - tidy-up: C nits (9921aeff #2437) - tidy-up: variable name sync, comment/formatting nits (2569543b #2428) - tidy-up: rename some args for consistency (10013516 #2397) - tidy-up: prefer `\0` as null-terminator, drop newlines (179348c6 #2383) - tidy-up: miscellaneous (27177ead #2367) - tidy-up: fix variable names, improve consistency, other nits (7c8d28d8 #2353) - tidy-up: formatting, variable name and comment nits (00b84caa #2348) - tidy-up: comment typos, parentheses, formatting (1e32ae76 #2336) - tidy-up: `FILE *` variable names, configure warning option guard, printf mask (952fb88f #2317 #1972 follow: 7b351eed) - tidy-up: C nits (1164743d #2308) - tidy-up: variables names, comments, nits (efdbe8a7 #2307) - tidy-up: misc typos, syntax nits, formatting (7391a242 #2287 #292 #2003 #2001 #1999 #1991 #1972 #1829 #1828 #1803 #1802 #1668 #1564 #1559 #1558 #1542 #1535 #1534 #1529 #1484 #1207) - tidy-up: argument order (cont.) (96a51d42 #2258) - tidy-up: argument order/names, minor nits (4c9fcf65 #2258) - tidy-up: argument names, minor nits (00af3032 #2257) - tidy-up: fixup and reflow copyright headers (bcef4a03 #2247) - tidy-up: syntax nits and code layout (d0c7ffdc #2235 #2195) - tidy-up: comments, messages, docs typos, whitespace nits (6a37f6b3 #2212) - tidy-up: miscellaneous (5d3a28b7 #2194) - tidy-up: move most static/local symbols into their own namespace (cd6a32f6 #2177) - tidy-up: miscellaneous (d22fcc0c #2162) - tidy-up: miscellaneous (b7fb9638 #2138) - tidy-up: comments (628fb7f9 #2111) - tidy-up: drop most `{}` blocks around single-statements (33f6508a #2087 #793 #2077 #2004) - tidy-up: miscellaneous (12dae713 #2086) - tidy-up: comments (4bb40bc6 #2084) - tidy-up: miscellaneous (a25f69ef #2069) - tidy-up: miscellaneous (ca43b304 #2042) - tidy-up: drop stray comparisons with literal zero (4140a13c #2014) - tidy-up: miscellaneous (10093bde #2000) - tidy-up: miscellaneous (b90a38c1 #1995 #1984 #1679) - tidy-up: miscellaneous (99803822 #1988 #1859 #1816 #1815 #1786 #1761 #1706 #1704 #1701) - tidy-up: misc (c40bcbf8 #1940) - tidy-up: drop unused `get_ver.awk` script (d7d8d614 #1917 #1204 follow: 43485579) - tidy-up: alpha-sort crypto backends and platforms (dabba101 #1914) - tidy-up: formatting (cont.) (8a9ca04d #1903) - tidy-up: formatting (1db7f023 #1899) - tidy-up: add missing, and drop redundant parentheses (b6f307dc #1898 #1844) - tidy-up: rename `ci` directory to `scripts` (31790754 #1870) - tidy-up: miscellaneous (3d4ff6b2 #1842) - tidy-up: parenthesis in macros (OS400) (fdbc32b0 #1774 #1773) - tidy-up: parenthesis in macros (d97d8e31 #1773) - tidy-up: drop duplicate newlines, fix non-ASCII chars, other formatting, check in CI (6e56a8bd #1766) - tidy-up: `Makefile.am` comments and copyright header (199526f9 #1662) - tidy-up: fix typos found by typos-cli 1.36.2 (c3e6dbd4 #1654) - tidy-up: replace `exit()` with `return` (a751d578 #1541) - tidy-up: prefer `#ifdef` / `#ifndef` (formatting) (5cca650b #1532) - tidy-up: `unsigned const char` -> `const unsigned char` (114923f1 #1487) - tidy-up: spelling (91b0e099) - TODO.md: fix typo, add missing punctuation (c25df87a) - transport: avoid `CRYPT_FLAG_*()` doing symbol concatenation (10af31dd #2495 #797 follow: 3c953c05) - transport: fix to translate low-level crypt result to LIBSSH2 error code (2877fa64 #2392 #2389 #1426 follow: 492bc543) - transport: fix two memleaks on error paths in `transport_fullpacket()` (d69ee04e #2343 #2198) - transport: fix potential heap overflow on ETM decrypt (42e33d81 #2198 GHSA-6c79-444r-wx26) - transport: fix potential deadlock in `ssh2_transport_send()` (5131a70a #2206 #2110) - transport: merge two nested `if()`s (eb300d56 #2057 #797 follow: 3c953c05) - transport: drop impossible `if()` branch (fef6c3cf #2056 #987 #655 follow: 0048f306) - transport: Additional boundary checks for packet length (97acf3df #2052) - transport: use constant time function for MAC memcmp() (39f14b87 #1824) - transport: handle invalid ETM packet padding (18c3a345 #1814) - transport: Avoid possible double-free (358d51bc #1800) - transport: fix when server/client uses encryption method with integrated MAC and the other does not (d8ae40ba #1582) - transport: fix formatting (64fafc78) - transport: fix indentation of comments (21228cff) - transport: stop passing newline to the trace handler via `debugdump()` (c78d54c2 #1492 #1485 follow: 0f0652a3) - transport, session: fix payload memory leak and potential double-free (823a2286 #2054 #623 #2026 #1956 #1804 follow: 92d686fe) - userauth: fix memory leaks in `libssh2_userauth_publickey_sk()` (e6e88395 #2530 #698 follow: ed439a29) - userauth: enable `ssh-rsa-cert-v01@openssh.com` for all backends in `userauth_supported_key_sign_algs()`, fix tests (88dd2f0f #2483 #2252 #2249 #1314 follow: 3a6ab70d) - userauth: drop unused session arg from `userauth_supported_key_sign_algs()` (df93b283) - userauth: scope static variables in `ssh2_userauth_plain_method()` (30768b9a #2482 #2384) - userauth: rename method variables to match rest of code (73db1c82 #2370) - userauth: drop redundant casts (467474b8 #2366) - userauth: merge file/blob sibling functions into `userauth_publickey()` (fe9442be #2359 #2354) - userauth: apply two OOB fixes to `userauth_read_blob_pubkey()` (209522cb #2358 #386 #2354 follow: 18cfec83 follow: 3e47ca8a follow: 48205569) - userauth: reset state machine to idle on fail in `userauth_password()` (7b1fdaa1 #2344 #2224) - userauth: keep buffer lengths consistent with pointers on fail, nearby fixes (af1b5019 #2224 #698 #2220 follow: ed439a29) - userauth: delete no-op code with memleaks in `libssh2_userauth_publickey_sk()` (cf8164b3 #2294 #752 #698 follow: bc4e619e follow: ed439a29) - userauth: protect against NULL `abstract` `libssh2_sign_sk()` (42a448f0 #2291 #698 #2290 follow: ed439a29) - userauth: check for NULL `session`, where missing (579cc071 #2290) - userauth: cap password length in `userauth_password()` (338f4e50 #2288 #2223) - userauth: cap username/password more, related fixes (2fedc0b3 #2223 #1858) - userauth: fix crash on OOM in `libssh2_userauth_publickey_sk()` (3e765960 #2220 #698 follow: ed439a29) - userauth: fix comment nits, drop singe-instruction `{}` blocks (71fa0004 #2221) - userauth: tidy up error texts (0aafe6a8 #1928) - userauth: limit input sizes to prevent allocation size overflow (66d73ffe #1913) - userauth: formatting (78aa39c6 #1896) - userauth: various fixes to `_libssh2_key_sign_algorithm()` (cont.) (b671ac9b #1885 #1881 #1314 follow: 3a6ab70d) - userauth: fix typo in comment (728cae43) - userauth: various fixes to `_libssh2_key_sign_algorithm()` (ba2a7ff9 #1881 #1877 #1314 follow: 3a6ab70d) - userauth: username_len bounds checking (256d04b6 #1858) - userauth: fix error message for EAGAIN in public-key response (81f0203c #1747) - userauth: fix typo from #1516 (73ac65f7 #1516) - userauth: fix possible memory leaks #1504 (49837fd7 #1516 #1504) - version: reflect KEX-SHA1, MAC-SHA1, deprecated APIs in `libssh2_build_options()` (cf107fb7 #2453 #2444 #2443 #2178) - version: add `Unicode:on/off` to `libssh2_build_options()` (645dade3 #2316) - version: add `libssh2_build_options()` (2673970d #2178 #2161) - vms: bump an URL to HTTPS (2fe2e9af) - vms/man2help: rename some variables for readability (af698be4) - vms/man2help: tidy-ups, clang-format, use `memcpy` (429900e6 #1905) - vms/man2help: misc fixes (295a2661 #1904) - vms/man2help: make functions static (b599ff5e) - vms/man2help: add missing void return type to prototype (aa45503a) - vms/man2help: misc fixes (3ec2920b #1902) - wincng: validate Diffie-Hellman public value in `ssh2_dh_secret()` (7f28c290 #2645 GHSA-m9rg-h9jv-9gvh #2239) - wincng: check bignum length and resize result in `wcng_bn_mod_exp()` (10c374ca #2649 #2645) - wincng: fix ECC private key blob allocation size (01d0c895 #2631 #1315 follow: 3e723437) - wincng: fix builds with RSA and DSA disabled (3f26c15b #2600) - wincng: normalize fixed-width DH values before mpint encoding (f216bbe3 #2583 #804 #2590) - wincng: rename local private key parsing functions to share a suffix (e09f8111 #2575) - wincng: constify static function arguments, where missing (e655d94a #2561) - wincng: fix allow/free mismatch with `wcng_load_priv()` return buffers (48eb7c9f #2560 follow: d385230e) - wincng: avoid pointer cast in `wcng_ecdsa_new_private_parse()` (d4d068fa #2426 #2424 #1315 follow: 3e723437) - wincng: cap private key components in `wcng_pub_privkey_file_parse()` (16879e47 #2378 #2376) - wincng: fix NULL derefs on OOM in `wcng_pub_privkey_file_parse()` (00986be1 #2377 #2376) - wincng: reuse ECDSA key loading/parsing code from `pem.c` (035d28c0 #2279 #1517 #1315 follow: 3e723437) - wincng: fix potentially dangling algo handles in `ssh2_crypto_init()` (2c1ab125 #2309) - wincng: sync `wcng_rsa_sha_sign()` arg order with rest of code (622f53f2) - wincng: prefer `ssh2_ecdsa_ctx` type, where missing (adbb541a) - wincng: fix leaking objects on ECDSA context OOM (41140636 #2306 #2301 #2300 #1315 follow: 3e723437) - wincng: fix NULL deref on OOM in `ssh2_ecdsa_sign()` (fe34a066 #2305 #1315 follow: 3e723437) - wincng: initialize returned values on fail in `wcng_bn_ltob()` (tidy up) (81c628b8 #2304) - wincng: return more accurate error in `ssh2_dsa_sha1_sign()` (9f62e275 #2303) - wincng: fix memleak on fail path in `ssh2_ecdsa_verify()` (a196a090 #2302 #1315 follow: 3e723437) - wincng: `sizeof(ssh2_ecdsa_ctx)` (tidy up) (0c096d1c #2301 #1315 follow: 3e723437) - wincng: de-duplicate two conditionals in `ssh2_ecdsa_create_key()` (cd7297ff #2300) - wincng: fix another resource leak in `ssh2_ecdh_gen_k()` (f2751aa4 #2299 #2038 #1315 follow: 3e723437) - wincng: fix NULL deref on OOM in `ssh2_ecdsa_verify()` (45041199 #2191 #1315 follow: 3e723437) - wincng: fix to bail out on ECDH key export fail (8b5acaa9 #2190 #1315 follow: 3e723437) - wincng: on deinit, only close ECDSA/ECDH algos if set (efb0c0c4 #2189 #1315 follow: 3e723437) - wincng: make `ssh2_wcng_hash_update()` length `size_t` (was: `ULONG`) (966e04f1 #2185) - wincng: sync low-level hash return values with rest of crypto backends (2bddd60f #2182) - wincng: fix clang-tidy warnings in ECDSA code, test in CI (fcfccb10 #2175) - wincng: fix `ssh2_wcng_hash_final()` behavior after previous commit (54cb2b23 #2173 #2169) - wincng: do not require passing digest size on hash init (542567d1 #2169) - wincng: drop floating point math (484c8b10 #2113) - wincng: fix potential NULL deref in `wcng_uncompressed_point_from_publickey()` (8eb4953c #2095) - wincng: validate argument to prevent passing NULL to `strcmp()` (a5a2f13f #2094) - wincng: revert recent algorithm macro setup update (0391b09d #2045 #1985) - wincng: drop `hAlgChacha20` unused global placeholder (c9fb2cdd #2040 #1426 follow: 492bc543) - wincng: fix leaking `hAlgAES_ECB` handle on deinit (cf4ba378 #2039 follow: 2de14f8f) - wincng: fix leaking `*secret` on error in `ssh2_ecdh_gen_k()` (2f7f107f #2038) - wincng: validate arguments in `wcng_reverse_bytes()` (25c99065 #2037 #2035) - wincng: replace duplicate code with `wcng_reverse_bytes()` call (edab4fa3 #2035) - wincng: drop `LIBSSH2_WINCNG_DISABLE_WINCRYPT` build option (bb9117c8 #1982 #916 #1985 follow: 185292a0) - wincng: allow disabling more crypto features (bf3757b9 #1985) - wincng: disable more DSA code with `LIBSSH2_NO_DSA` (b92c8261 #1980) - wincng: unfold `memcpy()` lines (formatting) (f946d1e2 #1943) - wincng: reorder functions to avoid forward declaration (a8508eb8 #1933) - wincng: replace typedef structs with direct struct types (c07e953a #1908) - wincng: fix indent (62e97f43 #1860) - wincng: Additional input validation (f8b9fc5b #1860) - wincng: move `_libssh2_aes_ctr_increment()` from misc, make static (131480d2) - windows: stop setting `_CRT_NONSTDC_NO_DEPRECATE` for MSVC (deefd7f6 #2332 #2042 #1688) - windows: always enable large-file support (46c7a480 #1771 #1711) - windows: drop support for Visual Studio 2008 and older (cbe7654d #1769 #1711) - wolfssl: guard `OPENSSL_VERSION_NUMBER` off for wolfSSL (bb42cb2c #2255 #1644) - wolfssl: fix detecting ECDSA support (b807dac9 #1723 #666 #1720 follow: b95e7582) This release would not have looked like this without help, code, reports and advice from friends like these: Adrian Moran, afldl on github, Afonso Januário, Aldo Ristori, Amy Lin, Anders Borum, Asaf Meizner, Behzod Abdullayev, Bruce Dang, Chen Zhengzhe, Chris Emsen, Christian Ghisler, Christoph Reiter, d3x0r, Dan Fandrich, Daniel Stenberg, dapickle on github, Darren Carreras, dependabot[bot], Dhiraj Mishra, DigitalCyberSoft, Eli Schwartz, Evgeny Grin, Fabian Bäumer, Feodor Fitsner, filtede98, geral-victor on github, Hananto Adi, Haruki Oyama, Hemant Jadhav, Huang Rui, hyunjiHong on github, Jacob Barthelmeh, Jay Satiro, Job Snijders, Joren Afman, Josh Brobst, Joshua Rogers, Justin Smith, Kai Pastor, Karnakar Reddy, Kian Kasad, Kit Knox, Krisscut on github, Lars Nordin, Liu Xing Yu, Lucas Queiroz, Lukas Dürrenberger, lv2dev, Makise Kurisu, manus-use on github, manusjs on github, Marc Hörsken, Marcel Raad, Marcus Brinkmann, Martin Nowak, Mateusz Gierblinski, Michael Buckley, Mухтар Воблоев, nnarayanamurthy on github, Nora-Qiu, Oblivionsage, Oliver Chang, Omkar Bhor, oss-patch, Pascal Neuperger, Patrick Monnerat, Paul Howarth, Pedro Masteguin, Pier Carlo Cadoppi, Pramod Kumar, pyscripter on github, QcN3ep, R6502 on github (Michael), Rainer Jung, Ralf Mueller, Raul Tambre, Ravikanth, RELAUNCH DEPT., RuiZhi Zhang, Ryan Kelley, Sebastien Tardif, Seojun Lee, sergey1369, Sharique Raza, skuodi on github, Stanislav Osipov, Stephan Eggermont, syed abdul khaliq, timelyslot on gitHub, TristanInSec, trustytrojan, Trzik on github, Viktor Szakats, Vladimir Eli Tokarev, vnth4nhnt from CyStack, Wilfried Pascault, Will Cosgrove, yaotushaozhu on github, Yaroslav Rosomakho, Yin Luming, Ze Sheng