Revision history for Net-LibSSH
0.004 2026-09-20 18:38:02Z
- SECURITY: connect() now verifies the server host key against known_hosts
(CWE-322, reported privately via CPANSec). Previously
strict_hostkeycheck was passed to libssh but ssh_session_is_known_server()
was never consulted, so any server -- including a man-in-the-middle --
was accepted silently. With the default strict_hostkeycheck => 1,
connect() now returns 0 with error() naming the problem when the host key
is unknown, changed, of a different type, or known_hosts cannot be read;
the session is disconnected and stays spent. strict_hostkeycheck => 0
disables the check entirely, as documented. Users who relied on the
default and never populated known_hosts must add the host key (e.g. via
ssh-keyscan) or set strict_hostkeycheck => 0 explicitly
0.003 2026-09-01 00:06:26Z
- SFTP integration test now stats /etc/passwd instead of /etc/hostname, so
it passes on FreeBSD smokers where /etc/hostname does not exist (GH #1)
- connect() on a session that has already been disconnected now returns 0
immediately, with error() saying the session was disconnected and cannot
be reconnected — instead of waiting out the connection timeout for
libssh's misleading "Timeout connecting to ..."; disconnect() on a
session that was never connected still leaves it connectable
- Channel methods (exec, read, write, send_eof, eof, exit_status) now
croak instead of operating on a closed channel; close() stays idempotent
- Fix segfault when a channel or SFTP session is used after the session
variable it was opened on has been undef-ed or reassigned; the session
now stays alive until the last object opened on it is gone
- Fix segfault when a channel or SFTP session is used, or merely dropped,
after disconnect(); ssh_disconnect() frees those objects inside libssh,
so they are now invalidated instead of left dangling. Their methods
croak with "session was disconnected", close() on such a channel stays a
harmless no-op, and nothing is leaked on the way
0.002 2026-03-29 14:49:04Z
- Refactor XS internals: replace sv_setref_pv/DESTROY with
sv_magicext + MGVTBL (svt_free) for automatic GC-driven cleanup
- Typemap INPUT now uses mg_findext with type-specific vtable pointer
for strict type checking at the XS boundary
- No user-visible behaviour change
0.001 2026-03-29 02:46:04Z
- Initial release
- Session: connect, auth_password, auth_publickey, auth_agent
- Channel: exec, read, write, eof, exit_status
- SFTP: stat (graceful undef when SFTP subsystem absent)
Keyboard Shortcuts
Global
s
Focus search bar
?
Bring up this help dialog
GitHub
gp
Go to pull requests
gi
Go to GitHub issues (only if GitHub is preferred repository)