Commit Graph
7 Commits
Author SHA1 Message Date
Raven Scott 36492de3d9 bare-ssh2 parses SFTP handles via bufferSlice/safer-buffer — handles are often
Uint8Array views that fail Buffer.isBuffer; READ/CLOSE/FSTAT/WRITE/READDIR were
rejecting every request with SSH_FX_FAILURE. Add sftpHandleId() using DataView.

OPEN: fix inner try indentation. CHANGELOG: note handle decoding + earlier SFTP
hardening (vfs normalize, enqueueSftpReply, Protocol/SFTP DATA coerce).
2026-04-21 18:22:32 -04:00
Raven Scott ac699f308e SFTP shim: coerce vfs.readFile via normalizeVfsBytesForSftp before storing
handles; use f.buf == null instead of !f.buf so empty buffers/strings do not
force SSH_FX_FAILURE on READ. READ accepts Buffer, typed views, or string after
WRITE.

Earlier in this branch: enqueueSftpReply(reqid) + FAILURE on errors; REQUEST.READ
validation in vendor bare-ssh2; coerce typed arrays to Buffer in SFTP.data and
Protocol.channelData/channelExtData. CHANGELOG notes.
2026-04-21 18:12:56 -04:00
Raven Scott baae7b3482 VFS readFile often returns Uint8Array; SFTP DATA and CHANNEL_DATA assumed
Buffer.isBuffer or treated payloads as UTF-8, corrupting packets and risking
native aborts (bad_optional_access). Normalize ArrayBuffer views in
SFTP.prototype.data and Protocol channelData/channelExtData; align READ shim.

Also includes earlier SFTP hardening: REQUEST.READ/WRITE/FSETSTAT guards,
enqueueSftpReply(reqid) + FAILURE on handler error, CHANGELOG.
2026-04-21 18:06:22 -04:00
Raven Scott 0359129a72 - SFTP.js: validate handle/offset/len on REQUEST.READ; guard WRITE/FSETSTAT
handle access like other handlers (avoid throwing before doFatalSFTPError).
- bare-openssh-sftp: enqueueSftpReply(reqid, fn) sends SSH_FX_FAILURE on
  handler throw/reject; defensive READ path (buffer/finite offsets).
- Document regression (bad_optional_access / -fno-exceptions) in comments;
  add packages/bare-os-openssh/CHANGELOG.md Unreleased entry.
2026-04-21 18:01:34 -04:00
Raven Scott c50bee46eb fix(openssh): serialize SFTP replies to fix FileZilla request ID mismatch
Queue all outbound SFTP responses (including READ/CLOSE) so async handlers
(REALPATH, STAT, OPENDIR, READDIR, …) cannot reorder packets vs strict clients.
Handle EXTENDED/SETSTAT/FSETSTAT via the same queue instead of bare-ssh2’s
immediate OP_UNSUPPORTED fallback.
2026-04-21 16:55:52 -04:00
Raven Scott caa60e3167 fix(openssh): widen SFTP path policy and return real dir/file metadata
Allow SFTP clients to reach the same logical paths as the shell (system
image, pseudo, home, mounts), deny mutating OPEN on typical read-only
prefixes, merge file/dir handle IDs to avoid collisions, implement FSTAT,
stat-based READDIR NAME attrs/longnames, and improve REALPATH.

Add brittle tests for path policy and wire test.bare-openssh-sftp.js into
npm test.
2026-04-21 16:44:31 -04:00
Raven Scott 4757b2a4b0 Starting work on Implementing SSH Server Service 2026-04-08 20:02:12 -04:00