sshd-session likely remains stuck in an unclassified userspace loop. The diagnosis was captured, but the patch proposal did not complete cleanly.
Published session
Prompt
## Plan Pass
You are planning a fixer patch before any edits happen.
Read the evidence bundle at `./evidence.json`. The prepared workspace is `./workspace` and it was acquired via `debian-vcs-git`. The original pre-edit snapshot is available at `./source` if you need to inspect it. For interpreter processes, plan from the script/application entrypoint evidence first and include the runtime only as a second investigation target unless the evidence proves a runtime bug.
Validation expectation: try the project-level build/test entrypoint from the workspace root before reporting only a focused leaf compile. Detected candidate(s): `./configure && make`. If the project-level command fails because dependencies or generated files are missing, include the exact command and failure reason in `## Validation`, then run the narrowest relevant compile/test that is still reproducible from a clean checkout.
Upstream-style expectation: before planning or editing, check for contribution/style docs (`CONTRIBUTING`, `HACKING`, `README-hacking`, `README.md`, `docs/`, `dev-docs/`) and scan the touched subsystem for local helpers. If the project has wrappers for file IO, path-relative IO, process spawning, memory allocation, logging, locking, or platform compatibility, prefer those wrappers over generic libc/std APIs. Do not invent a reproducer or user-visible failure that is not in the evidence bundle; if the evidence is profiler-only or indirect, describe it as a targeted mitigation or stop with a diagnosis instead of presenting a speculative patch as a confirmed bug fix. In the plan and final validation, name any such helper, convention, or evidence limit you found, or say that no relevant local helper was found. Treat this as a `openssh` upstream patch, not just a Debian-local workaround. Inspect the relevant code, nearby callers, project contribution docs, and local helper/compat APIs, but do not edit files in this pass.
Return a short markdown plan with these exact sections:
## Problem
## Evidence Confidence
## Proposed Subject
## Patch Plan
## Risks
## Validation
Classify `## Evidence Confidence` as exactly one of `reproduced`, `observed`, or `inferred`. Use `inferred` only for a no-patch diagnosis/report plan unless you can name the extra evidence you will collect before editing; inferred source patches are blocked by Fixer because they are not pull-request-ready. For `observed` source-patch plans, plan to say in the final `## Issue Connection` that the failure was observed by Fixer and not independently reproduced. The plan must explain how the proposed code change addresses the observed issue evidence, call out any prior Fixer patch that should be improved or replaced, reject awkward control flow such as avoidable `goto` if there is a cleaner bounded alternative, name any local helper APIs or maintainer conventions the patch should follow, and keep the intended maintainer-facing explanation clear enough that someone unfamiliar with the local complaint wording can still follow the fix. In `## Validation`, name the reproducible configure/build/test entrypoint you will try from the workspace root before any focused leaf compile or smoke check, and include one bounded independent reproduction attempt for the collected failure signal when it is safe and cheap. Do not plan to claim `reproduced` unless that reproduction command or test can actually show the failure.
Response
## Plan Pass
## Workflow Note
{"type":"item.completed","item":{"id":"item_9","type":"command_execution","command":"/bin/bash -lc \"rg -n \\\"sshd-session|poll\\\\(|ppoll|restart_syscall|EVP_Cipher|packet|server_loop|privsep|monitor\\\" -S .\"","aggregated_output":"./sandbox-solaris.c:46:ssh_sandbox_init(struct monitor *monitor)\n./config.sub:402:\t\t\tmonitor)\n./atomicio.c:71:\t\t\t\t(void)poll(&pfd, 1, -1);\n./atomicio.c:133:\t\t\t\t(void)poll(&pfd, 1, -1);\n./TODO:6: - Merge INSTALL & README.privsep\n./sftp-server.c:124:\tu_int type;\t\t/* packet type, for non extended packets */\n./sftp-server.c:1160:\t\t\t/* XXX check packet size instead */\n./sftp-server.c:1529:\t /* max-packet-length */\n./sftp-server.c:1854:\t/* discard the remaining bytes from the current packet */\n./sftp-server.c:2036:\t\t * the worst-case length packet it can generate,\n./sftp-server.c:2054:\t\tif (poll(pfd, 2, -1) == -1) {\n./monitor.c:1:/* $OpenBSD: monitor.c,v 1.255 2026/03/28 05:06:16 djm Exp $ */\n./monitor.c:67:#include \"packet.h\"\n./monitor.c:77:#include \"monitor.h\"\n./monitor.c:81:#include \"monitor_wrap.h\"\n./monitor.c:82:#include \"monitor_fdpass.h\"\n./monitor.c:106:/* Functions on the monitor that answer unprivileged requests */\n./monitor.c:161:static pid_t monitor_child_pid;\n./monitor.c:167:\tenum monitor_reqtype type;\n./monitor.c:181:static int monitor_read(struct ssh *, struct monitor *, struct mon_table *,\n./monitor.c:183:static int monitor_read_log(struct monitor *);\n./monitor.c:250:monitor_permit(struct mon_table *ent, enum monitor_reqtype type, int permit)\n./monitor.c:263:monitor_permit_authentications(int permit)\n./monitor.c:277:monitor_child_preauth(struct ssh *ssh, struct monitor *pmonitor)\n./monitor.c:282:\tdebug3(\"preauth child monitor started\");\n./monitor.c:284:\tif (pmonitor->m_recvfd >= 0)\n./monitor.c:285:\t\tclose(pmonitor->m_recvfd);\n./monitor.c:286:\tif (pmonitor->m_log_sendfd >= 0)\n./monitor.c:287:\t\tclose(pmonitor->m_log_sendfd);\n./monitor.c:288:\tpmonitor->m_log_sendfd = pmonitor->m_recvfd = -1;\n./monitor.c:298:\tmonitor_permit(mon_dispatch, MONITOR_REQ_STATE, 1);\n./monitor.c:299:\tmonitor_permit(mon_dispatch, MONITOR_REQ_MODULI, 1);\n./monitor.c:300:\tmonitor_permit(mon_dispatch, MONITOR_REQ_SETCOMPAT, 1);\n./monitor.c:301:\tmonitor_permit(mon_dispatch, MONITOR_REQ_SIGN, 1);\n./monitor.c:304:\tmonitor_permit(mon_dispatch, MONITOR_REQ_GSSSETUP, 1);\n./monitor.c:314:\t\tauthenticated = (monitor_read(ssh, pmonitor,\n./monitor.c:347:\t\t\t\tmm_request_receive_expect(pmonitor->m_sendfd,\n./monitor.c:350:\t\t\t\t ssh, pmonitor->m_sendfd, m);\n./monitor.c:367:\t\t\tfatal_f(\"privsep child made too many authentication \"\n./monitor.c:380:\tssh_packet_set_log_preamble(ssh, \"user %s\", authctxt->user);\n./monitor.c:382:\tmm_get_keystate(ssh, pmonitor);\n./monitor.c:385:\twhile (pmonitor->m_log_recvfd != -1 && monitor_read_log(pmonitor) == 0)\n./monitor.c:389:\twhile (waitpid(pmonitor->m_pid, &status, 0) == -1) {\n./monitor.c:397:\t\t\t (long)pmonitor->m_pid, WEXITSTATUS(status));\n./monitor.c:400:\t\t (long)pmonitor->m_pid, WTERMSIG(status));\n./monitor.c:403:\t (long)pmonitor->m_pid);\n./monitor.c:405:\tif (pmonitor->m_recvfd >= 0)\n./monitor.c:406:\t\tclose(pmonitor->m_recvfd);\n./monitor.c:407:\tif (pmonitor->m_log_sendfd >= 0)\n./monitor.c:408:\t\tclose(pmonitor->m_log_sendfd);\n./monitor.c:409:\tpmonitor->m_sendfd = pmonitor->m_log_recvfd = -1;\n./monitor.c:410:\tpmonitor->m_pid = -1;\n./monitor.c:414:monitor_set_child_handler(pid_t pid)\n./monitor.c:416:\tmonitor_child_pid = pid;\n./monitor.c:420:monitor_child_handler(int sig)\n./monitor.c:422:\tkill(monitor_child_pid, sig);\n./monitor.c:426:monitor_child_postauth(struct ssh *ssh, struct monitor *pmonitor)\n./monitor.c:428:\tclose(pmonitor->m_recvfd);\n./monitor.c:429:\tpmonitor->m_recvfd = -1;\n./monitor.c:431:\tmonitor_set_child_handler(pmonitor->m_pid);\n./monitor.c:432:\tssh_signal(SIGHUP, &monitor_child_handler);\n./monitor.c:433:\tssh_signal(SIGTERM, &monitor_child_handler);\n./monitor.c:434:\tssh_signal(SIGINT, &monitor_child_handler);\n./monitor.c:442:\tmonitor_permit(mon_dispatch, MONITOR_REQ_STATE, 1);\n./monitor.c:443:\tmonitor_permit(mon_dispatch, MONITOR_REQ_MODULI, 1);\n./monitor.c:444:\tmonitor_permit(mon_dispatch, MONITOR_REQ_SIGN, 1);\n./monitor.c:445:\tmonitor_permit(mon_dispatch, MONITOR_REQ_TERM, 1);\n./monitor.c:448:\tmonitor_permit(mon_dispatch, MONITOR_REQ_GSSSETUP, 1);\n./monitor.c:452:\t\tmonitor_permit(mon_dispatch, MONITOR_REQ_PTY, 1);\n./monitor.c:453:\t\tmonitor_permit(mon_dispatch, MONITOR_REQ_PTYCLEANUP, 1);\n./monitor.c:457:\t\tmonitor_read(ssh, pmonitor, mon_dispatch, NULL);\n./monitor.c:461:monitor_read_log(struct monitor *pmonitor)\n./monitor.c:475:\tif (atomicio(read, pmonitor->m_log_recvfd, p, 4) != 4) {\n./monitor.c:479:\t\t\tclose(pmonitor->m_log_recvfd);\n./monitor.c:480:\t\t\tpmonitor->m_log_recvfd = -1;\n./monitor.c:494:\tif (atomicio(read, pmonitor->m_log_recvfd, p, len) != len)\n./monitor.c:514:monitor_read(struct ssh *ssh, struct monitor *pmonitor, struct mon_table *ent,\n./monitor.c:524:\t\tpfd[0].fd = pmonitor->m_sendfd;\n./monitor.c:526:\t\tpfd[1].fd = pmonitor->m_log_recvfd;\n./monitor.c:528:\t\tif (poll(pfd, pfd[1].fd == -1 ? 1 : 2, -1) == -1) {\n./monitor.c:536:\t\t\t * monitor request.\n./monitor.c:538:\t\t\tmonitor_read_log(pmonitor);\n./monitor.c:548:\tmm_request_receive(pmonitor->m_sendfd, m);\n./monitor.c:563:\t\tret = (*ent->f)(ssh, pmonitor->m_sendfd, m);\n./monitor.c:586:monitor_allowed_key(const u_char *blob, u_int bloblen)\n./monitor.c:596:monitor_reset_key_state(void)\n./monitor.c:640:\t * Protocol from monitor to unpriv privsep process:\n./monitor.c:642:\t *\tuint64\ttiming_secret\tXXX move delays to monitor and remove\n./monitor.c:838:\tmonitor_permit(mon_dispatch, MONITOR_REQ_PWNAM, 1);\n./monitor.c:938:\tssh_packet_set_log_preamble(ssh, \"%suser %s\",\n./monitor.c:956:\t\t * The monitor will continue long enough to let the child\n./monitor.c:957:\t\t * run to its packet_disconnect(), but it must not allow any\n./monitor.c:967:\tmonitor_permit(mon_dispatch, MONITOR_REQ_AUTHSERV, 1);\n./monitor.c:968:\tmonitor_permit(mon_dispatch, MONITOR_REQ_AUTHROLE, 1);\n./monitor.c:969:\tmonitor_permit(mon_dispatch, MONITOR_REQ_AUTH2_READ_BANNER, 1);\n./monitor.c:973:\t\tmonitor_permit(mon_dispatch, MONITOR_REQ_PAM_START, 1);\n./monitor.c:999:\tmonitor_permit_authentications(1);\n./monitor.c:1026:\tmonitor_permit_authentications(1);\n./monitor.c:1104:\t/* Causes monitor loop to terminate if authenticated */\n./monitor.c:1185:\tmonitor_permit(mon_dispatch, MONITOR_REQ_PAM_ACCOUNT, 1);\n./monitor.c:1187:\t\tmonitor_permit(mon_dispatch, MONITOR_REQ_PAM_INIT_CTX, 1);\n./monitor.c:1231:\t\tmonitor_permit(mon_dispatch, MONITOR_REQ_PAM_FREE_CTX, 1);\n./monitor.c:1232:\t\tmonitor_permit(mon_dispatch, MONITOR_REQ_PAM_QUERY, 1);\n./monitor.c:1258:\tmonitor_permit(mon_dispatch, MONITOR_REQ_PAM_RESPOND, 1);\n./monitor.c:1337:\tmonitor_permit(mon_dispatch, MONITOR_REQ_PAM_INIT_CTX, 1);\n./monitor.c:1405:\tmonitor_reset_key_state();\n./monitor.c:1437:monitor_valid_userblob(struct ssh *ssh, const u_char *data, u_int datalen)\n./monitor.c:1477:\t\tlogit(\"wrong user name passed to monitor: \"\n./monitor.c:1508:\t\t * as packet state has not yet been exported to monitor.\n./monitor.c:1518:monitor_valid_hostbasedblob(const u_char *data, u_int datalen,\n./monitor.c:1548:\t\tlogit(\"wrong user name passed to monitor: \"\n./monitor.c:1604:\t !monitor_allowed_key(blob, bloblen))\n./monitor.c:1619:\t\tvalid_data = monitor_valid_userblob(ssh, data, datalen);\n./monitor.c:1623:\t\tvalid_data = monitor_valid_hostbasedblob(data, datalen,\n./monitor.c:1679:\tmonitor_reset_key_state();\n./monitor.c:1715:\tif (ssh_packet_connection_is_on_socket(ssh)) {\n./monitor.c:1716:\t\tif (getpeername(ssh_packet_get_connection_in(ssh),\n./monitor.c:1742:\textern struct monitor *pmonitor;\n./monitor.c:1754:\ts->pid = pmonitor->m_pid;\n./monitor.c:1830:\textern struct monitor *pmonitor;\n./monitor.c:1843:\twhile (waitpid(pmonitor->m_pid, &status, 0) == -1)\n./monitor.c:1901:monitor_clear_keystate(struct ssh *ssh, struct monitor *pmonitor)\n./monitor.c:1910:monitor_apply_keystate(struct ssh *ssh, struct monitor *pmonitor)\n./monitor.c:1915:\tdebug3_f(\"packet_set_state\");\n./monitor.c:1916:\tif ((r = ssh_packet_set_state(ssh, child_state)) != 0)\n./monitor.c:1917:\t\tfatal_fr(r, \"packet_set_state\");\n./monitor.c:1965:mm_get_keystate(struct ssh *ssh, struct monitor *pmonitor)\n./monitor.c:1971:\tmm_request_receive_expect(pmonitor->m_sendfd, MONITOR_REQ_KEYEXPORT,\n./monitor.c:1980:monitor_openfds(struct monitor *mon, int do_logfds)\n./monitor.c:2011:struct monitor *\n./monitor.c:2012:monitor_init(void)\n./monitor.c:2014:\tstruct monitor *mon;\n./monitor.c:2017:\tmonitor_openfds(mon, 1);\n./monitor.c:2023:monitor_reinit(struct monitor *mon)\n./monitor.c:2025:\tmonitor_openfds(mon, 0);\n./monitor.c:2029:monitor_auth_attempted(void)\n./monitor.c:2035:monitor_invalid_user(void)\n./monitor.c:2069:\tmonitor_permit(mon_dispatch, MONITOR_REQ_GSSSTEP, 1);\n./monitor.c:2101:\t\tmonitor_permit(mon_dispatch, MONITOR_REQ_GSSSTEP, 0);\n./monitor.c:2102:\t\tmonitor_permit(mon_dispatch, MONITOR_REQ_GSSUSEROK, 1);\n./monitor.c:2103:\t\tmonitor_permit(mon_dispatch, MONITOR_REQ_GSSCHECKMIC, 1);\n./monitor.c:2104:\t\tmonitor_permit(mon_dispatch, MONITOR_REQ_GSSSIGN, 1);\n./monitor.c:2135:\t\tmonitor_permit(mon_dispatch, MONITOR_REQ_GSSUSEROK, 1);\n./monitor.c:2217:\tmonitor_permit(mon_dispatch, MONITOR_REQ_PWNAM, 1);\n./monitor.c:2220:\tmonitor_permit(mon_dispatch, MONITOR_REQ_GSSUPCREDS, 1);\n./sk-usbhid.c:276:sk_touch_poll(struct sk_usbhid **skv, size_t nsk, int *touch, size_t *idx)\n./sk-usbhid.c:539:\t\tif (sk_touch_poll(skv, skvcnt, &touch, &idx) == -1) {\n./sshconnect2.c:52:#include \"packet.h\"\n./sshconnect2.c:236:\t\tssh_packet_set_rekey_limits(ssh, options.rekey_limit,\n./sshconnect2.c:350:\t (r = ssh_packet_write_wait(ssh)) != 0)\n./sshconnect2.c:351:\t\tfatal_fr(r, \"send packet\");\n./sshconnect2.c:526:\t\tfatal_fr(r, \"send packet\");\n./sshconnect2.c:548:\tif (ssh_packet_connection_is_on_socket(ssh)) {\n./sshconnect2.c:563:\tif (ssh_packet_remaining(ssh) > 0) {\n./sshconnect2.c:620:\t\t\tdebug2(\"we sent a %s packet, wait for reply\", method->name);\n./sshconnect2.c:623:\t\t\tdebug2(\"we did not send a packet, disable method\");\n./sshconnect2.c:815:\t/* try another method if we did not send a packet */\n./sshconnect2.c:888:\t\tfatal_fr(r, \"send packet\");\n./sshconnect2.c:933:\t\t\tfatal_fr(r, \"send %u packet\", type);\n./sshconnect2.c:1083:\t/* Server will be returning a failed packet after this one */\n./sshconnect2.c:1169:\t\tfatal_fr(r, \"send packet\");\n./sshconnect2.c:1198:\t\tfatal_fr(r, \"send packet\");\n./sshconnect2.c:1605:\t/* skip session id and packet type */\n./sshconnect2.c:1609:\t/* put remaining data from buffer into packet */\n./sshconnect2.c:1657:\t\tfatal_fr(r, \"send packet\");\n./sshconnect2.c:2079:\t\tfatal_fr(r, \"send packet\");\n./sshconnect2.c:2122:\t * Begin to build info response packet based on prompts requested.\n./sshconnect2.c:2172:\tint sock = ssh_packet_get_connection_in(ssh);\n./sshconnect2.c:2346:\tlname = get_local_name(ssh_packet_get_connection_in(ssh));\n./sshconnect2.c:2397:\t\terror_fr(r, \"packet error\");\n./kexgsss.c:41:#include \"packet.h\"\n./kexgsss.c:44:#include \"monitor_wrap.h\"\n./kexgsss.c:84:\t/* If we're rekeying, privsep means that some of the private structures\n./kexgsss.c:105:\t\ttype = ssh_packet_read(ssh);\n./kexgsss.c:147:\t\t\tssh_packet_disconnect(ssh,\n./kexgsss.c:148:\t\t\t \"Protocol error: didn't expect packet type %d\",\n./kexgsss.c:282:\t/* If we're rekeying, privsep means that some of the private structures\n./kexgsss.c:302:\ttype = ssh_packet_read(ssh);\n./kexgsss.c:304:\t\tssh_packet_disconnect(ssh,\n./kexgsss.c:305:\t\t \"Protocol error: expected packet type %d, got %d\",\n./kexgsss.c:325:\t\tssh_packet_disconnect(ssh, \"Protocol error: no matching group found\");\n./kexgsss.c:335:\tif ((r = ssh_packet_write_wait(ssh)) != 0)\n./kexgsss.c:336:\t\tfatal(\"ssh_packet_write_wait: %s\", ssh_err(r));\n./kexgsss.c:344:\t\ttype = ssh_packet_read(ssh);\n./kexgsss.c:364:\t\t\tssh_packet_disconnect(ssh,\n./kexgsss.c:365:\t\t\t \"Protocol error: didn't expect packet type %d\",\n./auth2-none.c:36:#include \"packet.h\"\n./auth2-none.c:45:#include \"monitor_wrap.h\"\n./auth2-none.c:60:\t\tfatal_fr(r, \"parse packet\");\n./auth-bsdauth.c:42:#include \"monitor_wrap.h\"\n./kexgen.c:38:#include \"packet.h\"\n./ssh-keyscan.c:45:#include \"packet.h\"\n./ssh-keyscan.c:430:\t\tssh_packet_close(fdcon[s].c_ssh);\n./ssh-keyscan.c:522:\tif ((c->c_ssh = ssh_packet_set_connection(NULL, s, s)) == NULL)\n./ssh-keyscan.c:523:\t\tfatal(\"ssh_packet_set_connection failed\");\n./ssh-keyscan.c:524:\tssh_packet_set_timeout(c->c_ssh, timeout, 1);\n./ssh-keyscan.c:569:\twhile (ppoll(read_wait, maxfd, &seltime, NULL) == -1) {\n./auth2-passwd.c:35:#include \"packet.h\"\n./auth2-passwd.c:44:#include \"monitor_wrap.h\"\n./auth2-passwd.c:65:\t\tfatal_fr(r, \"parse packet\");\n./configure:815:with_privsep_user\n./configure:819:with_privsep_path\n./configure:1525: --with-privsep-user=user Specify non-privileged user for privilege separation\n./configure:1529: --with-privsep-path=xxx Path for privilege separation chroot (default=/var/empty)\n./configure:12392:\t# poll(2) is broken for character-special devices (at least).\n./configure:12901:\t# poll(2) seems to choke on /dev/null; \"Bad file descriptor\"\n./configure:12967:\t\t# Capsicum on 9 and 10 do not allow ppoll() so don't auto-enable.\n./configure:16924:ac_fn_c_check_func \"$LINENO\" \"ppoll\" \"ac_cv_func_ppoll\"\n./configure:16925:if test \"x$ac_cv_func_ppoll\" = xyes\n./configure:20883:# Check whether --with-privsep-user was given.\n./configure:20884:if test ${with_privsep_user+y}\n./configure:20886: withval=$with_privsep_user;\n./configure:21009:\t int poll(struct pollfd *, unsigned long, int timeout);\n./configure:21014:return poll(0, 0, 0);\n./configure:21052:# POSIX specifies that poll() \"shall fail with EINVAL if the nfds argument\n./configure:21054:# of select in userspace on top of poll() so check both work with rlimit\n./configure:21111:\tr = poll(&pfd, 1, 1);\n./configure:25524:# Check whether --with-privsep-path was given.\n./configure:25525:if test ${with_privsep_path+y}\n./configure:25527: withval=$with_privsep_path;\n./ssh-sandbox.h:18:struct monitor;\n./ssh-sandbox.h:21:struct ssh_sandbox *ssh_sandbox_init(struct monitor *);\n./monitor_fdpass.h:1:/* $OpenBSD: monitor_fdpass.h,v 1.4 2007/09/04 03:21:03 djm Exp $ */\n./PROTOCOL.mux:7:simple packetised protocol, where each message is proceeded with\n./PROTOCOL.mux:10: uint32 packet length\n./PROTOCOL.mux:11: uint32 packet type\n./PROTOCOL.mux:12: ... packet body\n./PROTOCOL.mux:232:\tuint32\tpacket length\n./PROTOCOL.mux:234:\tbyte\tpacket type\n./PROTOCOL.mux:235:\tbyte[packet length - 2] ...\n./PROTOCOL.mux:286:XXX inject packet (what about replies)\n./readconf.h:56:\tint compression;\t/* Compress packets in both directions. */\n./packet.h:1:/* $OpenBSD: packet.h,v 1.107 2026/03/03 09:57:25 dtucker Exp $ */\n./packet.h:7: * Interface for the packet protocol functions.\n./packet.h:74:\t/* number of packets to ignore in the dispatcher */\n./packet.h:75:\tint dispatch_skip_packets;\n./packet.h:94:typedef int (ssh_packet_hook_fn)(struct ssh *, struct sshbuf *,\n./packet.h:98:struct ssh *ssh_packet_set_connection(struct ssh *, int, int);\n./packet.h:99:void ssh_packet_set_timeout(struct ssh *, int, int);\n./packet.h:100:int\t ssh_packet_stop_discard(struct ssh *);\n./packet.h:101:int\t ssh_packet_connection_af(struct ssh *);\n./packet.h:102:void ssh_packet_set_nonblocking(struct ssh *);\n./packet.h:103:int ssh_packet_get_connection_in(struct ssh *);\n./packet.h:104:int ssh_packet_get_connection_out(struct ssh *);\n./packet.h:105:void\t ssh_packet_free(struct ssh *);\n./packet.h:106:void ssh_packet_close(struct ssh *);\n./packet.h:107:void\t ssh_packet_set_input_hook(struct ssh *, ssh_packet_hook_fn *, void *);\n./packet.h:108:void\t ssh_packet_clear_keys(struct ssh *);\n./packet.h:111:int\t ssh_packet_is_rekeying(struct ssh *);\n./packet.h:112:int\t ssh_packet_check_rekey(struct ssh *);\n./packet.h:113:void ssh_packet_set_protocol_flags(struct ssh *, u_int);\n./packet.h:114:u_int\t ssh_packet_get_protocol_flags(struct ssh *);\n./packet.h:115:void\t ssh_packet_set_interactive(struct ssh *, int);\n./packet.h:116:void\t ssh_packet_set_qos(struct ssh *, int, int);\n./packet.h:117:void ssh_packet_set_server(struct ssh *);\n./packet.h:118:void ssh_packet_set_authenticated(struct ssh *);\n./packet.h:119:void ssh_packet_set_mux(struct ssh *);\n./packet.h:120:int\t ssh_packet_get_mux(struct ssh *);\n./packet.h:121:int\t ssh_packet_set_log_preamble(struct ssh *, const char *, ...)\n./packet.h:124:int\t ssh_packet_log_type(u_char);\n./packet.h:126:int\t ssh_packet_send2_wrapped(struct ssh *);\n./packet.h:127:int\t ssh_packet_send2(struct ssh *);\n./packet.h:129:int ssh_packet_read(struct ssh *);\n./packet.h:130:int ssh_packet_read_poll2(struct ssh *, u_char *, uint32_t *seqnr_p);\n./packet.h:131:int\t ssh_packet_process_incoming(struct ssh *, const char *buf, u_int len);\n./packet.h:132:int\t ssh_packet_process_read(struct ssh *, int);\n./packet.h:133:int ssh_packet_read_seqnr(struct ssh *, u_char *, uint32_t *seqnr_p);\n./packet.h:134:int ssh_packet_read_poll_seqnr(struct ssh *, u_char *, uint32_t *seqnr_p);\n./packet.h:136:void ssh_packet_disconnect(struct ssh *, const char *fmt, ...)\n./packet.h:139:void ssh_packet_send_debug(struct ssh *, const char *fmt, ...) __attribute__((format(printf, 2, 3)));\n./packet.h:142:void\t ssh_packet_get_bytes(struct ssh *, uint64_t *, uint64_t *);\n./packet.h:144:int\t ssh_packet_write_poll(struct ssh *);\n./packet.h:145:int\t ssh_packet_write_wait(struct ssh *);\n./packet.h:146:int ssh_packet_have_data_to_write(struct ssh *);\n./packet.h:147:int ssh_packet_not_very_much_data_to_write(struct ssh *);\n./packet.h:148:int\t ssh_packet_interactive_data_to_write(struct ssh *);\n./packet.h:150:int\t ssh_packet_connection_is_on_socket(struct ssh *);\n./packet.h:151:int\t ssh_packet_remaining(struct ssh *);\n./packet.h:156:void\t ssh_packet_set_alive_timeouts(struct ssh *, int);\n./packet.h:157:int\t ssh_packet_inc_alive_timeouts(struct ssh *);\n./packet.h:158:int\t ssh_packet_set_maxsize(struct ssh *, u_int);\n./packet.h:159:u_int\t ssh_packet_get_maxsize(struct ssh *);\n./packet.h:161:int\t ssh_packet_get_state(struct ssh *, struct sshbuf *);\n./packet.h:162:int\t ssh_packet_set_state(struct ssh *, struct sshbuf *);\n./packet.h:168:const char *ssh_packet_rdomain_in(struct ssh *);\n./packet.h:171:void\t ssh_packet_set_rekey_limits(struct ssh *, uint64_t, uint32_t);\n./packet.h:172:time_t\t ssh_packet_get_rekey_timeout(struct ssh *);\n./packet.h:174:void\t*ssh_packet_get_input(struct ssh *);\n./packet.h:175:void\t*ssh_packet_get_output(struct ssh *);\n./ttymodes.c:55:#include \"packet.h\"\n./ttymodes.c:274: * or tiop in a portable manner, and appends the modes to a packet\n./ttymodes.c:339: * manner from a packet being read.\n./serverloop.h:26:void server_loop2(struct ssh *, Authctxt *);\n./auth-pam.c:93:#include \"packet.h\"\n./auth-pam.c:101:#include \"monitor_wrap.h\"\n./auth-pam.c:166:\t\t/* PAM thread has not exited, privsep slave must have */\n./auth-pam.c:681:\tif (sshpam_handle == NULL || !mm_is_monitor())\n./auth-pam.c:717:\t\tfatal(\"%s: called initially with no packet context\", __func__);\n./auth-pam.c:739:\t\t * We need to cache these as we don't have packet context\n./auth-pam.c:745:\t\t ssh_packet_get_connection_in(ssh));\n./gss-serv.c:52:#include \"monitor_wrap.h\"\n./gss-serv.c:76: * list of supported mechanisms before privsep is set up.\n./gss-serv.c:482: * as the user, the monitor is root.\n./gss-serv.c:485: * *) Ask the monitor to store our credentials into the store we specify\n./auth-krb5.c:39:#include \"packet.h\"\n./mux.c:47:#include \"packet.h\"\n./mux.c:48:#include \"monitor_fdpass.h\"\n./mux.c:334:\tu_int i, j, env_len, escape_char, window, packetmax;\n./mux.c:450:\tpacketmax = CHAN_SES_PACKET_DEFAULT;\n./mux.c:453:\t\tpacketmax >>= 1;\n./mux.c:457:\t new_fd[0], new_fd[1], new_fd[2], window, packetmax,\n./mux.c:1227:\t/* Channel code ensures that we receive whole packets */\n./mux.c:1236:\tdebug3_f(\"channel %d packet type 0x%08x len %zu\", c->self,\n./mux.c:1263:\t/* Enqueue reply packet */\n./mux.c:1285:\t/* Append exit message packet to control socket output queue */\n./mux.c:1308:\t/* Append exit message packet to control socket output queue */\n./mux.c:1548:mux_client_write_packet(int fd, struct sshbuf *m)\n./mux.c:1579:\t\t\t\t(void)poll(&pfd, 1, -1);\n./mux.c:1602:mux_client_read_packet_timeout(int fd, struct sshbuf *m, int timeout_ms)\n./mux.c:1635:mux_client_read_packet(int fd, struct sshbuf *m)\n./mux.c:1637:\treturn mux_client_read_packet_timeout(fd, m, -1);\n./mux.c:1654:\tif (mux_client_write_packet(fd, m) != 0) {\n./mux.c:1655:\t\tdebug_f(\"write packet: %s\", strerror(errno));\n./mux.c:1662:\tif (mux_client_read_packet_timeout(fd, m, timeout_ms) != 0) {\n./mux.c:1663:\t\tdebug_f(\"read packet failed\");\n./mux.c:1722:\tif (mux_client_write_packet(fd, m) != 0)\n./mux.c:1723:\t\tfatal_f(\"write packet: %s\", strerror(errno));\n./mux.c:1728:\tif (mux_client_read_packet(fd, m) != 0) {\n./mux.c:1774:\tif (mux_client_write_packet(fd, m) != 0)\n./mux.c:1775:\t\tfatal_f(\"write packet: %s\", strerror(errno));\n./mux.c:1780:\tif (mux_client_read_packet(fd, m) != 0) {\n./mux.c:1824:\tif (mux_client_write_packet(fd, m) != 0)\n./mux.c:1825:\t\tfatal_f(\"write packet: %s\", strerror(errno));\n./mux.c:1830:\tif (mux_client_read_packet(fd, m) != 0) {\n./mux.c:1905:\tif (mux_client_write_packet(fd, m) != 0)\n./mux.c:1906:\t\tfatal_f(\"write packet: %s\", strerror(errno));\n./mux.c:1911:\tif (mux_client_read_packet(fd, m) != 0) {\n./mux.c:2042:\tif (mux_client_write_packet(fd, m) != 0)\n./mux.c:2043:\t\tfatal_f(\"write packet: %s\", strerror(errno));\n./mux.c:2055:\tif (mux_client_read_packet(fd, m) != 0) {\n./mux.c:2121:\t\tif (mux_client_read_packet(fd, m) != 0)\n./mux.c:2187:\tif (mux_client_write_packet(fd, m) != 0)\n./mux.c:2188:\t\tfatal_f(\"write packet: %s\", strerror(errno));\n./mux.c:2193:\tif (mux_client_read_packet(fd, m) != 0) {\n./mux.c:2244:\tif (mux_client_write_packet(fd, m) != 0)\n./mux.c:2245:\t\tfatal_f(\"write packet: %s\", strerror(errno));\n./mux.c:2261:\tif (mux_client_read_packet(fd, m) != 0) {\n./mux.c:2305:\tif (mux_client_read_packet(fd, m) != 0) {\n./mux.c:2311:\t\tfatal_f(\"mux_client_read_packet: %s\", strerror(errno));\n./mux.c:2332:\tif (mux_client_write_packet(fd, m) != 0)\n./mux.c:2333:\t\tfatal_f(\"write packet: %s\", strerror(errno));\n./mux.c:2338:\tif (mux_client_read_packet(fd, m) != 0)\n./Makefile.in:26:SSHD_SESSION=$(libexecdir)/sshd-session\n./Makefile.in:78:TARGETS=ssh$(EXEEXT) sshd$(EXEEXT) sshd-session$(EXEEXT) sshd-auth$(EXEEXT) ssh-add$(EXEEXT) ssh-keygen$(EXEEXT) ssh-keyscan${EXEEXT} ssh-keysign${EXEEXT} ssh-pkcs11-helper$(EXEEXT) ssh-agent$(EXEEXT) scp$(EXEEXT) sftp-server$(EXEEXT) sftp$(EXEEXT) ssh-sk-helper$(EXEEXT) $(SK_STANDALONE)\n./Makefile.in:96:\tlog.o match.o moduli.o nchan.o packet.o \\\n./Makefile.in:99:\tmonitor_fdpass.o rijndael.o ssh-ecdsa.o ssh-ecdsa-sk.o \\\n./Makefile.in:125:SSHD_SESSION_OBJS=sshd-session.o auth-rhosts.o auth-passwd.o \\\n./Makefile.in:132:\tmonitor.o monitor_wrap.o auth-krb5.o \\\n./Makefile.in:145:\tmonitor_wrap.o auth-krb5.o \\\n./Makefile.in:228:sshd-session$(EXEEXT): libssh.a\t$(LIBCOMPAT) $(SSHD_SESSION_OBJS)\n./Makefile.in:438:\t$(INSTALL) -m 0755 $(STRIP_OPT) sshd-session$(EXEEXT) $(DESTDIR)$(SSHD_SESSION)$(EXEEXT)\n./Makefile.in:804:\t\tTEST_SSH_SSHD_SESSION=\"$(BUILDDIR)/sshd-session\" \\\n./auth-passwd.c:48:#include \"packet.h\"\n./buildpkg.sh.in:17:# configure --prefix=/var/tmp --with-privsep-path=/var/tmp/empty\n./buildpkg.sh.in:29:SSHDUID=67\t# Default privsep uid\n./buildpkg.sh.in:30:SSHDGID=67\t# Default privsep gid\n./buildpkg.sh.in:141:## Collect value of privsep user\n./buildpkg.sh.in:147:## Set privsep defaults if not defined\n./kexgexs.c:45:#include \"packet.h\"\n./kexgexs.c:51:#include \"monitor_wrap.h\"\n./packet.c:1:/* $OpenBSD: packet.c,v 1.334 2026/03/03 09:57:25 dtucker Exp $ */\n./packet.c:6: * This file contains code implementing the packet protocol and communication\n./packet.c:16: * SSH2 packet format added by Markus Friedl.\n./packet.c:89:#include \"packet.h\"\n./packet.c:101:struct packet_state {\n./packet.c:103:\tuint32_t packets;\n./packet.c:108:struct packet {\n./packet.c:109:\tTAILQ_ENTRY(packet) next;\n./packet.c:139:\t/* Buffer for the partial outgoing packet being constructed. */\n./packet.c:140:\tstruct sshbuf *outgoing_packet;\n./packet.c:142:\t/* Buffer for the incoming packet currently being processed. */\n./packet.c:143:\tstruct sshbuf *incoming_packet;\n./packet.c:145:\t/* Scratch buffer for packet compression/decompression. */\n./packet.c:158:\t/* default maximum packet size */\n./packet.c:159:\tu_int max_packet_size;\n./packet.c:175:\t/* The maximum time that we will wait to send or receive a packet */\n./packet.c:176:\tint packet_timeout_ms;\n./packet.c:180:\tstruct packet_state p_read, p_send;\n./packet.c:194:\tu_int packet_discard;\n./packet.c:195:\tsize_t packet_discard_mac_already;\n./packet.c:196:\tstruct sshmac *packet_discard_mac;\n./packet.c:198:\t/* Used in packet_read_poll2() */\n./packet.c:201:\t/* Used in packet_send2 */\n./packet.c:204:\t/* Used in ssh_packet_send_mux() */\n./packet.c:210:\t/* Used in packet_set_maxsize */\n./packet.c:218:\t * ssh_packet_disconnect()\n./packet.c:225:\t/* Hook for fuzzing inbound packets */\n./packet.c:226:\tssh_packet_hook_fn *hook_in;\n./packet.c:229:\tTAILQ_HEAD(, packet) outgoing;\n./packet.c:243:\t (state->outgoing_packet = sshbuf_new()) == NULL ||\n./packet.c:244:\t (state->incoming_packet = sshbuf_new()) == NULL)\n./packet.c:251:\tstate->max_packet_size = 32768;\n./packet.c:252:\tstate->packet_timeout_ms = -1;\n./packet.c:255:\tstate->p_send.packets = state->p_read.packets = 0;\n./packet.c:258:\t * ssh_packet_send2() needs to queue packets until\n./packet.c:272:\t\tsshbuf_free(state->incoming_packet);\n./packet.c:273:\t\tsshbuf_free(state->outgoing_packet);\n./packet.c:280:ssh_packet_set_input_hook(struct ssh *ssh, ssh_packet_hook_fn *hook, void *ctx)\n./packet.c:288:ssh_packet_is_rekeying(struct ssh *ssh)\n./packet.c:298:ssh_packet_set_connection(struct ssh *ssh, int fd_in, int fd_out)\n./packet.c:335:ssh_packet_set_timeout(struct ssh *ssh, int timeout, int count)\n./packet.c:340:\t\tstate->packet_timeout_ms = -1;\n./packet.c:344:\t\tstate->packet_timeout_ms = INT_MAX;\n./packet.c:346:\t\tstate->packet_timeout_ms = timeout * count * 1000;\n./packet.c:350:ssh_packet_set_mux(struct ssh *ssh)\n./packet.c:359:ssh_packet_get_mux(struct ssh *ssh)\n./packet.c:365:ssh_packet_set_log_preamble(struct ssh *ssh, const char *fmt, ...)\n./packet.c:384:ssh_packet_stop_discard(struct ssh *ssh)\n./packet.c:389:\tif (state->packet_discard_mac) {\n./packet.c:393:\t\tif (dlen > state->packet_discard_mac_already)\n./packet.c:394:\t\t\tdlen -= state->packet_discard_mac_already;\n./packet.c:396:\t\twhile (sshbuf_len(state->incoming_packet) < dlen)\n./packet.c:397:\t\t\tif ((r = sshbuf_put(state->incoming_packet, buf,\n./packet.c:400:\t\t(void) mac_compute(state->packet_discard_mac,\n./packet.c:402:\t\t sshbuf_ptr(state->incoming_packet), dlen,\n./packet.c:411:ssh_packet_start_discard(struct ssh *ssh, struct sshenc *enc,\n./packet.c:427:\t\tstate->packet_discard_mac = mac;\n./packet.c:428:\t\tstate->packet_discard_mac_already = mac_already;\n./packet.c:431:\t\treturn ssh_packet_stop_discard(ssh);\n./packet.c:432:\tstate->packet_discard = discard - sshbuf_len(state->input);\n./packet.c:439:ssh_packet_connection_is_on_socket(struct ssh *ssh)\n./packet.c:472:ssh_packet_get_bytes(struct ssh *ssh, uint64_t *ibytes, uint64_t *obytes)\n./packet.c:481:ssh_packet_connection_af(struct ssh *ssh)\n./packet.c:489:ssh_packet_set_nonblocking(struct ssh *ssh)\n./packet.c:501:ssh_packet_get_connection_in(struct ssh *ssh)\n./packet.c:509:ssh_packet_get_connection_out(struct ssh *ssh)\n./packet.c:526:\t\tif (ssh_packet_connection_is_on_socket(ssh)) {\n./packet.c:563:\tif (getpeername(ssh_packet_get_connection_in(ssh),\n./packet.c:666:ssh_packet_rdomain_in(struct ssh *ssh)\n./packet.c:670:\tif (!ssh_packet_connection_is_on_socket(ssh))\n./packet.c:679:ssh_packet_close_internal(struct ssh *ssh, int do_close)\n./packet.c:683:\tstruct packet *p;\n./packet.c:698:\tsshbuf_free(state->outgoing_packet);\n./packet.c:699:\tsshbuf_free(state->incoming_packet);\n./packet.c:754:ssh_packet_free(struct ssh *ssh)\n./packet.c:756:\tssh_packet_close_internal(ssh, 1);\n./packet.c:761:ssh_packet_close(struct ssh *ssh)\n./packet.c:763:\tssh_packet_close_internal(ssh, 1);\n./packet.c:767:ssh_packet_clear_keys(struct ssh *ssh)\n./packet.c:769:\tssh_packet_close_internal(ssh, 0);\n./packet.c:775:ssh_packet_set_protocol_flags(struct ssh *ssh, u_int protocol_flags)\n./packet.c:783:ssh_packet_get_protocol_flags(struct ssh *ssh)\n./packet.c:789: * Starts packet compression from the next packet on in both directions.\n./packet.c:794:ssh_packet_init_compression(struct ssh *ssh)\n./packet.c:978:\tstruct packet_state *ps;\n./packet.c:1010:\tps->packets = ps->blocks = 0;\n./packet.c:1040:\t\tif ((r = ssh_packet_init_compression(ssh)) < 0)\n./packet.c:1072: * Checks whether the packet- or block- based rekeying limits have been\n./packet.c:1078:ssh_packet_check_rekey_blocklimit(struct ssh *ssh, u_int packet_len, int hard)\n./packet.c:1089:\t * As per RFC4344 section 3.1 we do this after 2^31 packets.\n./packet.c:1091:\tif (state->p_send.packets > MAX_PACKETS ||\n./packet.c:1092:\t state->p_read.packets > MAX_PACKETS)\n./packet.c:1099:\tout_blocks = ROUNDUP(packet_len,\n./packet.c:1108:ssh_packet_need_rekeying(struct ssh *ssh, u_int outbound_packet_len)\n./packet.c:1117:\tif (ssh_packet_is_rekeying(ssh))\n./packet.c:1121:\t * Permit one packet in or out per rekey - this allows us to\n./packet.c:1124:\tif (state->p_send.packets == 0 && state->p_read.packets == 0)\n./packet.c:1132:\treturn ssh_packet_check_rekey_blocklimit(ssh, outbound_packet_len, 0);\n./packet.c:1137:ssh_packet_check_rekey_preauth(struct ssh *ssh, u_int outgoing_packet_len)\n./packet.c:1142:\tif (ssh_packet_check_rekey_blocklimit(ssh, 0, 1)) {\n./packet.c:1150:ssh_packet_check_rekey(struct ssh *ssh)\n./packet.c:1154:\tif ((r = ssh_packet_check_rekey_preauth(ssh, 0)) != 0)\n./packet.c:1156:\tif (!ssh_packet_need_rekeying(ssh, 0))\n./packet.c:1168:ssh_packet_enable_delayed_compress(struct ssh *ssh)\n./packet.c:1185:\t\t\tif ((r = ssh_packet_init_compression(ssh)) != 0)\n./packet.c:1200:/* Used to mute debug logging for noisy packet types */\n./packet.c:1202:ssh_packet_log_type(u_char type)\n./packet.c:1217: * Finalize packet in SSH2 format (compress, mac, encrypt, enqueue)\n./packet.c:1220:ssh_packet_send2_wrapped(struct ssh *ssh)\n./packet.c:1243:\ttype = (sshbuf_ptr(state->outgoing_packet))[5];\n./packet.c:1244:\tif (ssh_packet_log_type(type))\n./packet.c:1245:\t\tdebug3(\"send packet: type %u\", type);\n./packet.c:1248:\tsshbuf_dump(state->outgoing_packet, stderr);\n./packet.c:1252:\t\tlen = sshbuf_len(state->outgoing_packet);\n./packet.c:1254:\t\tif ((r = sshbuf_consume(state->outgoing_packet, 5)) != 0)\n./packet.c:1257:\t\tif ((r = compress_buffer(ssh, state->outgoing_packet,\n./packet.c:1260:\t\tsshbuf_reset(state->outgoing_packet);\n./packet.c:1261:\t\tif ((r = sshbuf_put(state->outgoing_packet,\n./packet.c:1263:\t\t (r = sshbuf_putb(state->outgoing_packet,\n./packet.c:1267:\t\t sshbuf_len(state->outgoing_packet)));\n./packet.c:1270:\t/* sizeof (packet_len + pad_len + payload) */\n./packet.c:1271:\tlen = sshbuf_len(state->outgoing_packet);\n./packet.c:1277:\tlen -= aadlen; /* packet length is not encrypted for EtM modes */\n./packet.c:1302:\tif ((r = sshbuf_reserve(state->outgoing_packet, padlen, &cp)) != 0)\n./packet.c:1311:\t/* sizeof (packet_len + pad_len + payload + padding) */\n./packet.c:1312:\tlen = sshbuf_len(state->outgoing_packet);\n./packet.c:1313:\tcp = sshbuf_mutable_ptr(state->outgoing_packet);\n./packet.c:1318:\t/* packet_length includes payload, padding and padding length field */\n./packet.c:1324:\t/* compute MAC over seqnr and packet(length fields, payload, padding) */\n./packet.c:1327:\t\t sshbuf_ptr(state->outgoing_packet), len,\n./packet.c:1332:\t/* encrypt packet and append to output buffer. */\n./packet.c:1334:\t sshbuf_len(state->outgoing_packet) + authlen, &cp)) != 0)\n./packet.c:1337:\t sshbuf_ptr(state->outgoing_packet),\n./packet.c:1357:\t/* increment sequence number for outgoing packets */\n./packet.c:1360:\t\t\tssh_packet_disconnect(ssh, \"outgoing sequence number \"\n./packet.c:1365:\tif (++state->p_send.packets == 0)\n./packet.c:1369:\tsshbuf_reset(state->outgoing_packet);\n./packet.c:1379:\t\tr = ssh_packet_enable_delayed_compress(ssh);\n./packet.c:1386:/* returns non-zero if the specified packet type is usec by KEX */\n./packet.c:1388:ssh_packet_type_is_kex(u_char type)\n./packet.c:1399:ssh_packet_send2(struct ssh *ssh)\n./packet.c:1402:\tstruct packet *p;\n./packet.c:1406:\tif (sshbuf_len(state->outgoing_packet) < 6)\n./packet.c:1408:\ttype = sshbuf_ptr(state->outgoing_packet)[5];\n./packet.c:1409:\tneed_rekey = !ssh_packet_type_is_kex(type) &&\n./packet.c:1410:\t ssh_packet_need_rekeying(ssh, sshbuf_len(state->outgoing_packet));\n./packet.c:1413:\tif (!state->rekeying && !ssh_packet_type_is_kex(type) &&\n./packet.c:1414:\t (r = ssh_packet_check_rekey_preauth(ssh, 0)) != 0)\n./packet.c:1421:\tif ((need_rekey || state->rekeying) && !ssh_packet_type_is_kex(type)) {\n./packet.c:1424:\t\tdebug(\"enqueue packet: %u\", type);\n./packet.c:1429:\t\tp->payload = state->outgoing_packet;\n./packet.c:1431:\t\tstate->outgoing_packet = sshbuf_new();\n./packet.c:1432:\t\tif (state->outgoing_packet == NULL)\n./packet.c:1436:\t\t\t * This packet triggered a rekey, so send the\n./packet.c:1449:\tif ((r = ssh_packet_send2_wrapped(ssh)) != 0)\n./packet.c:1459:\t\t\t * If this packet triggers a rekex, then skip the\n./packet.c:1460:\t\t\t * remaining packets in the queue for now.\n./packet.c:1463:\t\t\tif (ssh_packet_need_rekeying(ssh,\n./packet.c:1465:\t\t\t\tdebug3_f(\"queued packet triggered rekex\");\n./packet.c:1468:\t\t\tdebug(\"dequeue packet: %u\", type);\n./packet.c:1469:\t\t\tsshbuf_free(state->outgoing_packet);\n./packet.c:1470:\t\t\tstate->outgoing_packet = p->payload;\n./packet.c:1474:\t\t\tif ((r = ssh_packet_send2_wrapped(ssh)) != 0)\n./packet.c:1482: * Waits until a packet has been received, and returns its type. Note that\n./packet.c:1488:ssh_packet_read_seqnr(struct ssh *ssh, u_char *typep, uint32_t *seqnr_p)\n./packet.c:1497:\tDBG(debug(\"packet_read()\"));\n./packet.c:1500:\t * Since we are blocking, ensure that all written packets have\n./packet.c:1503:\tif ((r = ssh_packet_write_wait(ssh)) != 0)\n./packet.c:1506:\t/* Stay in the loop until we have received a complete packet. */\n./packet.c:1508:\t\t/* Try to read a packet from the buffer. */\n./packet.c:1509:\t\tif ((r = ssh_packet_read_poll_seqnr(ssh, typep, seqnr_p)) != 0)\n./packet.c:1511:\t\t/* If we got a packet, return it. */\n./packet.c:1521:\t\tif (state->packet_timeout_ms > 0) {\n./packet.c:1522:\t\t\tms_remain = state->packet_timeout_ms;\n./packet.c:1527:\t\t\tif (state->packet_timeout_ms > 0) {\n./packet.c:1531:\t\t\tif ((r = ppoll(&pfd, 1, timespecp, NULL)) >= 0)\n./packet.c:1538:\t\t\tif (state->packet_timeout_ms <= 0)\n./packet.c:1562:\t\tif ((r = ssh_packet_process_incoming(ssh, buf, len)) != 0)\n./packet.c:1570:ssh_packet_read(struct ssh *ssh)\n./packet.c:1575:\tif ((r = ssh_packet_read_seqnr(ssh, &type, NULL)) != 0)\n./packet.c:1581:ssh_packet_read_poll2_mux(struct ssh *ssh, u_char *typep, uint32_t *seqnr_p)\n./packet.c:1594:\t\t\treturn 0; /* packet is incomplete */\n./packet.c:1602:\t\treturn 0; /* packet is incomplete */\n./packet.c:1603:\tsshbuf_reset(state->incoming_packet);\n./packet.c:1604:\tif ((r = sshbuf_put(state->incoming_packet, cp + 4,\n./packet.c:1607:\t (r = sshbuf_get_u8(state->incoming_packet, NULL)) != 0 ||\n./packet.c:1608:\t (r = sshbuf_get_u8(state->incoming_packet, typep)) != 0)\n./packet.c:1610:\tif (ssh_packet_log_type(*typep))\n./packet.c:1612:\t/* sshbuf_dump(state->incoming_packet, stderr); */\n./packet.c:1613:\t/* reset for next packet */\n./packet.c:1619:ssh_packet_read_poll2(struct ssh *ssh, u_char *typep, uint32_t *seqnr_p)\n./packet.c:1631:\t\treturn ssh_packet_read_poll2_mux(ssh, typep, seqnr_p);\n./packet.c:1635:\tif (state->packet_discard)\n./packet.c:1660:\t\t\tlogit(\"Bad packet length %u.\", state->packlen);\n./packet.c:1665:\t\tsshbuf_reset(state->incoming_packet);\n./packet.c:1669:\t\t * decrypt first block and extract length of incoming packet\n./packet.c:1673:\t\tsshbuf_reset(state->incoming_packet);\n./packet.c:1674:\t\tif ((r = sshbuf_reserve(state->incoming_packet, block_size,\n./packet.c:1681:\t\tstate->packlen = PEEK_U32(sshbuf_ptr(state->incoming_packet));\n./packet.c:1687:\t\t\tfprintf(stderr, \"incoming_packet: \\n\");\n./packet.c:1688:\t\t\tsshbuf_dump(state->incoming_packet, stderr);\n./packet.c:1690:\t\t\tlogit(\"Bad packet length %u.\", state->packlen);\n./packet.c:1691:\t\t\treturn ssh_packet_start_discard(ssh, enc, mac, 0,\n./packet.c:1697:\tDBG(debug(\"input: packet len %u\", state->packlen+4));\n./packet.c:1705:\t\t * have a partial packet of block_size bytes\n./packet.c:1709:\tDBG(debug(\"partial packet: block %d, need %d, maclen %d, authlen %d,\"\n./packet.c:1714:\t\treturn ssh_packet_start_discard(ssh, enc, mac, 0,\n./packet.c:1718:\t * check if the entire packet has been received and\n./packet.c:1719:\t * decrypt into incoming_packet:\n./packet.c:1726:\t\treturn 0; /* packet is incomplete */\n./packet.c:1742:\tif ((r = sshbuf_reserve(state->incoming_packet, aadlen + need,\n./packet.c:1753:\t\t sshbuf_ptr(state->incoming_packet),\n./packet.c:1754:\t\t sshbuf_len(state->incoming_packet),\n./packet.c:1761:\t\t\treturn ssh_packet_start_discard(ssh, enc, mac,\n./packet.c:1762:\t\t\t sshbuf_len(state->incoming_packet),\n./packet.c:1775:\t\t\tssh_packet_disconnect(ssh, \"incoming sequence number \"\n./packet.c:1780:\tif (++state->p_read.packets == 0)\n./packet.c:1786:\tpadlen = sshbuf_ptr(state->incoming_packet)[4];\n./packet.c:1791:\t\t (r = ssh_packet_write_wait(ssh)) != 0)\n./packet.c:1796:\t/* skip packet size + padlen, discard padding */\n./packet.c:1797:\tif ((r = sshbuf_consume(state->incoming_packet, 4 + 1)) != 0 ||\n./packet.c:1798:\t ((r = sshbuf_consume_end(state->incoming_packet, padlen)) != 0))\n./packet.c:1802:\t sshbuf_len(state->incoming_packet)));\n./packet.c:1805:\t\tif ((r = uncompress_buffer(ssh, state->incoming_packet,\n./packet.c:1808:\t\tsshbuf_reset(state->incoming_packet);\n./packet.c:1809:\t\tif ((r = sshbuf_putb(state->incoming_packet,\n./packet.c:1813:\t\t sshbuf_len(state->incoming_packet)));\n./packet.c:1816:\t * get packet type, implies consume.\n./packet.c:1819:\tif ((r = sshbuf_get_u8(state->incoming_packet, typep)) != 0)\n./packet.c:1821:\tif (ssh_packet_log_type(*typep))\n./packet.c:1822:\t\tdebug3(\"receive packet: type %u\", *typep);\n./packet.c:1825:\t\t \"Invalid ssh2 packet type: %d\", *typep)) != 0 ||\n./packet.c:1826:\t\t (r = ssh_packet_write_wait(ssh)) != 0)\n./packet.c:1831:\t (r = state->hook_in(ssh, state->incoming_packet, typep,\n./packet.c:1835:\t\tr = ssh_packet_enable_delayed_compress(ssh);\n./packet.c:1840:\tsshbuf_dump(state->incoming_packet, stderr);\n./packet.c:1842:\t/* reset for next packet */\n./packet.c:1849:\tif ((r = ssh_packet_check_rekey(ssh)) != 0)\n./packet.c:1856:ssh_packet_read_poll_seqnr(struct ssh *ssh, u_char *typep, uint32_t *seqnr_p)\n./packet.c:1867:\t\tr = ssh_packet_read_poll2(ssh, typep, seqnr_p);\n./packet.c:1875:\t\tDBG(debug(\"received packet type %d\", *typep));\n./packet.c:1931:\t\t\tif (ssh_packet_is_rekeying(ssh)) {\n./packet.c:1954: * with packet_read_poll().\n./packet.c:1957:ssh_packet_process_incoming(struct ssh *ssh, const char *buf, u_int len)\n./packet.c:1962:\tif (state->packet_discard) {\n./packet.c:1964:\t\tif (len >= state->packet_discard) {\n./packet.c:1965:\t\t\tif ((r = ssh_packet_stop_discard(ssh)) != 0)\n./packet.c:1968:\t\tstate->packet_discard -= len;\n./packet.c:1979:ssh_packet_process_read(struct ssh *ssh, int fd)\n./packet.c:1988:\tif (state->packet_discard) {\n./packet.c:1992:\t\tif (rlen >= state->packet_discard) {\n./packet.c:1993:\t\t\tif ((r = ssh_packet_stop_discard(ssh)) != 0)\n./packet.c:1996:\t\tstate->packet_discard -= rlen;\n./packet.c:2003:ssh_packet_remaining(struct ssh *ssh)\n./packet.c:2005:\treturn sshbuf_len(ssh->state->incoming_packet);\n./packet.c:2014: * exceed 1024 bytes. This will automatically call ssh_packet_write_wait.\n./packet.c:2017:ssh_packet_send_debug(struct ssh *ssh, const char *fmt,...)\n./packet.c:2037:\t (r = ssh_packet_write_wait(ssh)) != 0)\n./packet.c:2063:\t\tssh_packet_clear_keys(ssh);\n./packet.c:2066:\t\tssh_packet_clear_keys(ssh);\n./packet.c:2070:\t\tssh_packet_clear_keys(ssh);\n./packet.c:2074:\t\t\tssh_packet_clear_keys(ssh);\n./packet.c:2084:\t\t\tssh_packet_clear_keys(ssh);\n./packet.c:2093:\t\t\tssh_packet_clear_keys(ssh);\n./packet.c:2096:\t\tssh_packet_clear_keys(ssh);\n./packet.c:2117: * Logs the error plus constructs and sends a disconnect packet, closes the\n./packet.c:2123:ssh_packet_disconnect(struct ssh *ssh, const char *fmt,...)\n./packet.c:2131:\t\tfatal(\"packet_disconnect called recursively.\");\n./packet.c:2153:\tif ((r = ssh_packet_write_wait(ssh)) != 0)\n./packet.c:2157:\tssh_packet_close(ssh);\n./packet.c:2166:ssh_packet_write_poll(struct ssh *ssh)\n./packet.c:2190: * Calls packet_write_poll repeatedly until all pending output data has been\n./packet.c:2194:ssh_packet_write_wait(struct ssh *ssh)\n./packet.c:2202:\tif ((r = ssh_packet_write_poll(ssh)) != 0)\n./packet.c:2204:\twhile (ssh_packet_have_data_to_write(ssh)) {\n./packet.c:2208:\t\tif (state->packet_timeout_ms > 0) {\n./packet.c:2209:\t\t\tms_remain = state->packet_timeout_ms;\n./packet.c:2213:\t\t\tif (state->packet_timeout_ms > 0) {\n./packet.c:2217:\t\t\tif ((ret = ppoll(&pfd, 1, timespecp, NULL)) >= 0)\n./packet.c:2222:\t\t\tif (state->packet_timeout_ms <= 0)\n./packet.c:2232:\t\tif ((r = ssh_packet_write_poll(ssh)) != 0)\n./packet.c:2241:ssh_packet_have_data_to_write(struct ssh *ssh)\n./packet.c:2249:ssh_packet_not_very_much_data_to_write(struct ssh *ssh)\n./packet.c:2263:ssh_packet_interactive_data_to_write(struct ssh *ssh)\n./packet.c:2276:\tif (!ssh_packet_connection_is_on_socket(ssh))\n./packet.c:2287:ssh_packet_set_interactive(struct ssh *ssh, int interactive)\n./packet.c:2297:ssh_packet_set_qos(struct ssh *ssh, int qos_interactive, int qos_other)\n./packet.c:2307:ssh_packet_set_maxsize(struct ssh *ssh, u_int s)\n./packet.c:2313:\t\t state->max_packet_size, s);\n./packet.c:2322:\tstate->max_packet_size = s;\n./packet.c:2327:ssh_packet_inc_alive_timeouts(struct ssh *ssh)\n./packet.c:2333:ssh_packet_set_alive_timeouts(struct ssh *ssh, int ka)\n./packet.c:2339:ssh_packet_get_maxsize(struct ssh *ssh)\n./packet.c:2341:\treturn ssh->state->max_packet_size;\n./packet.c:2345:ssh_packet_set_rekey_limits(struct ssh *ssh, uint64_t bytes, uint32_t seconds)\n./packet.c:2354:ssh_packet_get_rekey_timeout(struct ssh *ssh)\n./packet.c:2364:ssh_packet_set_server(struct ssh *ssh)\n./packet.c:2371:ssh_packet_set_authenticated(struct ssh *ssh)\n./packet.c:2377:ssh_packet_get_input(struct ssh *ssh)\n./packet.c:2383:ssh_packet_get_output(struct ssh *ssh)\n./packet.c:2388:/* Reset after_authentication and reset compression in post-auth privsep */\n./packet.c:2390:ssh_packet_set_postauth(struct ssh *ssh)\n./packet.c:2398:\tif ((r = ssh_packet_enable_delayed_compress(ssh)) != 0)\n./packet.c:2403:/* Packet state (de-)serialization for privsep */\n./packet.c:2405:/* turn kex into a blob for packet state serialization */\n./packet.c:2427:/* turn key exchange results into a blob for packet state serialization */\n./packet.c:2471:/* serialize packet state into a blob */\n./packet.c:2473:ssh_packet_get_state(struct ssh *ssh, struct sshbuf *m)\n./packet.c:2486:\t (r = sshbuf_put_u32(m, state->p_send.packets)) != 0 ||\n./packet.c:2490:\t (r = sshbuf_put_u32(m, state->p_read.packets)) != 0 ||\n./packet.c:2502:/* restore key exchange results from blob for packet state de-serialization */\n./packet.c:2569:/* restore kex from blob for packet state de-serialization */\n./packet.c:2607: * Restore packet state from content of blob 'm' (de-serialization).\n./packet.c:2611:ssh_packet_set_state(struct ssh *ssh, struct sshbuf *m)\n./packet.c:2626:\t (r = sshbuf_get_u32(m, &state->p_send.packets)) != 0 ||\n./packet.c:2630:\t (r = sshbuf_get_u32(m, &state->p_read.packets)) != 0 ||\n./packet.c:2634:\t * We set the time here so that in post-auth privsep child we\n./packet.c:2638:\t/* XXX ssh_set_newkeys overrides p_read.packets? XXX */\n./packet.c:2643:\tif ((r = ssh_packet_set_postauth(ssh)) != 0)\n./packet.c:2672:/* put data to the outgoing packet */\n./packet.c:2677:\treturn sshbuf_put(ssh->state->outgoing_packet, v, len);\n./packet.c:2683:\treturn sshbuf_putb(ssh->state->outgoing_packet, b);\n./packet.c:2689:\treturn sshbuf_put_u8(ssh->state->outgoing_packet, val);\n./packet.c:2695:\treturn sshbuf_put_u32(ssh->state->outgoing_packet, val);\n./packet.c:2701:\treturn sshbuf_put_u64(ssh->state->outgoing_packet, val);\n./packet.c:2707:\treturn sshbuf_put_string(ssh->state->outgoing_packet, v, len);\n./packet.c:2713:\treturn sshbuf_put_cstring(ssh->state->outgoing_packet, v);\n./packet.c:2719:\treturn sshbuf_put_stringb(ssh->state->outgoing_packet, v);\n./packet.c:2727:\treturn sshbuf_put_ec(ssh->state->outgoing_packet, v, g);\n./packet.c:2733:\treturn sshbuf_put_ec_pkey(ssh->state->outgoing_packet, pkey);\n./packet.c:2740:\treturn sshbuf_put_bignum2(ssh->state->outgoing_packet, v);\n./packet.c:2744:/* fetch data from the incoming packet */\n./packet.c:2749:\treturn sshbuf_get(ssh->state->incoming_packet, valp, len);\n./packet.c:2755:\treturn sshbuf_get_u8(ssh->state->incoming_packet, valp);\n./packet.c:2761:\treturn sshbuf_get_u32(ssh->state->incoming_packet, valp);\n./packet.c:2767:\treturn sshbuf_get_u64(ssh->state->incoming_packet, valp);\n./packet.c:2773:\treturn sshbuf_get_string(ssh->state->incoming_packet, valp, lenp);\n./packet.c:2779:\treturn sshbuf_get_string_direct(ssh->state->incoming_packet, valp, lenp);\n./packet.c:2785:\treturn sshbuf_peek_string_direct(ssh->state->incoming_packet, valp, lenp);\n./packet.c:2791:\treturn sshbuf_get_cstring(ssh->state->incoming_packet, valp, lenp);\n./packet.c:2797:\treturn sshbuf_froms(ssh->state->incoming_packet, valp);\n./packet.c:2805:\treturn sshbuf_get_ec(ssh->state->incoming_packet, v, g);\n./packet.c:2812:\treturn sshbuf_get_bignum2(ssh->state->incoming_packet, valp);\n./packet.c:2819:\tif (sshbuf_len(ssh->state->incoming_packet) > 0)\n./packet.c:2828:\t\t*lenp = sshbuf_len(ssh->state->incoming_packet);\n./packet.c:2829:\treturn sshbuf_ptr(ssh->state->incoming_packet);\n./packet.c:2832:/* start a new packet */\n./packet.c:2837:\tu_char buf[6]; /* u32 packet length, u8 pad len, u8 type */\n./packet.c:2839:\tDBG(debug(\"packet_start[%d]\", type));\n./packet.c:2842:\tsshbuf_reset(ssh->state->outgoing_packet);\n./packet.c:2843:\treturn sshbuf_put(ssh->state->outgoing_packet, buf, sizeof(buf));\n./packet.c:2847:ssh_packet_send_mux(struct ssh *ssh)\n./packet.c:2856:\tlen = sshbuf_len(state->outgoing_packet);\n./packet.c:2859:\tcp = sshbuf_mutable_ptr(state->outgoing_packet);\n./packet.c:2861:\tif (ssh_packet_log_type(type))\n./packet.c:2868:\t\t state->outgoing_packet)) != 0)\n./packet.c:2872:\tsshbuf_reset(state->outgoing_packet);\n./packet.c:2913:\t\treturn ssh_packet_send_mux(ssh);\n./packet.c:2914:\treturn ssh_packet_send2(ssh);\n./packet.c:2947:format_traffic_stats(struct packet_state *ps)\n./packet.c:2955:\t (unsigned long)ps->packets, (unsigned long long)ps->blocks, bytes);\n./INSTALL:13:separation. See README.privsep for details.\n./auth2-pubkey.c:47:#include \"packet.h\"\n./auth2-pubkey.c:64:#include \"monitor_wrap.h\"\n./auth2-pubkey.c:107:\t\tfatal_fr(r, \"parse %s packet\", method);\n./auth2-pubkey.c:117:\t\t\tfatal_f(\"%s packet contained wrong host key\", method);\n./auth2-pubkey.c:188:\t\t\tfatal_fr(r, \"parse signature packet\");\n./auth2-pubkey.c:203:\t\t/* reconstruct packet */\n./auth2-pubkey.c:214:\t\t\tfatal_fr(r, \"reconstruct %s packet\", method);\n./auth2-pubkey.c:217:\t\t\tfatal_fr(r, \"reconstruct %s packet\", method);\n./auth2-pubkey.c:271:\t\t\tfatal_fr(r, \"parse packet\");\n./auth2-pubkey.c:291:\t\t\t (r = ssh_packet_write_wait(ssh)) != 0)\n./auth2-pubkey.c:292:\t\t\t\tfatal_fr(r, \"send packet\");\n./auth2-pubkey.c:807:\tif ((rdomain = ssh_packet_rdomain_in(ssh)) == NULL)\n./monitor_wrap.c:1:/* $OpenBSD: monitor_wrap.c,v 1.146 2026/03/02 02:40:15 djm Exp $ */\n./monitor_wrap.c:61:#include \"packet.h\"\n./monitor_wrap.c:65:#include \"monitor.h\"\n./monitor_wrap.c:70:#include \"monitor_fdpass.h\"\n./monitor_wrap.c:76:#include \"monitor_wrap.h\"\n./monitor_wrap.c:82:extern struct monitor *pmonitor;\n./monitor_wrap.c:90:\tstruct monitor *mon = (struct monitor *)ctx;\n./monitor_wrap.c:124:\tif (!mm_is_monitor())\n./monitor_wrap.c:126:\twhile (waitpid(pmonitor->m_pid, &status, 0) == -1) {\n./monitor_wrap.c:129:\t\tpmonitor->m_pid = -1;\n./monitor_wrap.c:151:mm_request_send(int sock, enum monitor_reqtype type, struct sshbuf *m)\n./monitor_wrap.c:165:\t\t\tdebug3_f(\"monitor fd closed\");\n./monitor_wrap.c:184:\t\t\tdebug3_f(\"monitor fd closed\");\n./monitor_wrap.c:206:mm_request_receive_expect(int sock, enum monitor_reqtype type, struct sshbuf *m)\n./monitor_wrap.c:236:\tmm_request_send(pmonitor->m_recvfd, MONITOR_REQ_MODULI, m);\n./monitor_wrap.c:239:\tmm_request_receive_expect(pmonitor->m_recvfd, MONITOR_ANS_MODULI, m);\n./monitor_wrap.c:269:\tmm_request_send(pmonitor->m_recvfd, MONITOR_REQ_SETCOMPAT, m);\n./monitor_wrap.c:289:\tmm_request_send(pmonitor->m_recvfd, MONITOR_REQ_SIGN, m);\n./monitor_wrap.c:292:\tmm_request_receive_expect(pmonitor->m_recvfd, MONITOR_ANS_SIGN, m);\n./monitor_wrap.c:382:\tmm_request_send(pmonitor->m_recvfd, MONITOR_REQ_PWNAM, m);\n./monitor_wrap.c:385:\tmm_request_receive_expect(pmonitor->m_recvfd, MONITOR_ANS_PWNAM, m);\n./monitor_wrap.c:438:\tmm_request_send(pmonitor->m_recvfd, MONITOR_REQ_AUTH2_READ_BANNER, m);\n./monitor_wrap.c:441:\tmm_request_receive_expect(pmonitor->m_recvfd,\n./monitor_wrap.c:472:\tmm_request_send(pmonitor->m_recvfd, MONITOR_REQ_AUTHSERV, m);\n./monitor_wrap.c:492:\tmm_request_send(pmonitor->m_recvfd, MONITOR_REQ_AUTHROLE, m);\n./monitor_wrap.c:513:\tmm_request_send(pmonitor->m_recvfd, MONITOR_REQ_AUTHPASSWORD, m);\n./monitor_wrap.c:516:\tmm_request_receive_expect(pmonitor->m_recvfd,\n./monitor_wrap.c:572:\tmm_request_send(pmonitor->m_recvfd, MONITOR_REQ_KEYALLOWED, m);\n./monitor_wrap.c:575:\tmm_request_receive_expect(pmonitor->m_recvfd,\n./monitor_wrap.c:623:\tmm_request_send(pmonitor->m_recvfd, MONITOR_REQ_KEYVERIFY, m);\n./monitor_wrap.c:626:\tmm_request_receive_expect(pmonitor->m_recvfd,\n./monitor_wrap.c:651:mm_send_keystate(struct ssh *ssh, struct monitor *monitor)\n./monitor_wrap.c:658:\tif ((r = ssh_packet_get_state(ssh, m)) != 0)\n./monitor_wrap.c:659:\t\tfatal_fr(r, \"ssh_packet_get_state\");\n./monitor_wrap.c:660:\tmm_request_send(monitor->m_recvfd, MONITOR_REQ_KEYEXPORT, m);\n./monitor_wrap.c:673:\tif ((tmp1 = dup(pmonitor->m_recvfd)) == -1 ||\n./monitor_wrap.c:674:\t (tmp2 = dup(pmonitor->m_recvfd)) == -1) {\n./monitor_wrap.c:685:\tmm_request_send(pmonitor->m_recvfd, MONITOR_REQ_PTY, m);\n./monitor_wrap.c:688:\tmm_request_receive_expect(pmonitor->m_recvfd, MONITOR_ANS_PTY, m);\n./monitor_wrap.c:709:\tif ((*ptyfd = mm_receive_fd(pmonitor->m_recvfd)) == -1 ||\n./monitor_wrap.c:710:\t (*ttyfd = mm_receive_fd(pmonitor->m_recvfd)) == -1)\n./monitor_wrap.c:729:\tmm_request_send(pmonitor->m_recvfd, MONITOR_REQ_PTYCLEANUP, m);\n./monitor_wrap.c:752:\tmm_request_send(pmonitor->m_recvfd, MONITOR_REQ_PAM_START, m);\n./monitor_wrap.c:772:\tmm_request_send(pmonitor->m_recvfd, MONITOR_REQ_PAM_ACCOUNT, m);\n./monitor_wrap.c:774:\tmm_request_receive_expect(pmonitor->m_recvfd,\n./monitor_wrap.c:798:\tmm_request_send(pmonitor->m_recvfd, MONITOR_REQ_PAM_INIT_CTX, m);\n./monitor_wrap.c:800:\tmm_request_receive_expect(pmonitor->m_recvfd,\n./monitor_wrap.c:824:\tmm_request_send(pmonitor->m_recvfd, MONITOR_REQ_PAM_QUERY, m);\n./monitor_wrap.c:826:\tmm_request_receive_expect(pmonitor->m_recvfd, MONITOR_ANS_PAM_QUERY, m);\n./monitor_wrap.c:865:\tmm_request_send(pmonitor->m_recvfd, MONITOR_REQ_PAM_RESPOND, m);\n./monitor_wrap.c:867:\tmm_request_receive_expect(pmonitor->m_recvfd,\n./monitor_wrap.c:885:\tmm_request_send(pmonitor->m_recvfd, MONITOR_REQ_PAM_FREE_CTX, m);\n./monitor_wrap.c:887:\tmm_request_receive_expect(pmonitor->m_recvfd,\n./monitor_wrap.c:902:\tmm_request_send(pmonitor->m_recvfd, MONITOR_REQ_TERM, m);\n./monitor_wrap.c:927:\tmm_request_send(pmonitor->m_recvfd, MONITOR_REQ_STATE, m);\n./monitor_wrap.c:930:\tmm_request_receive_expect(pmonitor->m_recvfd,\n./monitor_wrap.c:997:\tmm_request_send(pmonitor->m_recvfd, MONITOR_REQ_BSDAUTHQUERY, m);\n./monitor_wrap.c:999:\tmm_request_receive_expect(pmonitor->m_recvfd,\n./monitor_wrap.c:1036:\tmm_request_send(pmonitor->m_recvfd, MONITOR_REQ_BSDAUTHRESPOND, m);\n./monitor_wrap.c:1038:\tmm_request_receive_expect(pmonitor->m_recvfd,\n./monitor_wrap.c:1062:\tmm_request_send(pmonitor->m_recvfd, MONITOR_REQ_AUDIT_EVENT, m);\n./monitor_wrap.c:1079:\tmm_request_send(pmonitor->m_recvfd, MONITOR_REQ_AUDIT_COMMAND, m);\n./monitor_wrap.c:1100:\tmm_request_send(pmonitor->m_recvfd, MONITOR_REQ_GSSSETUP, m);\n./monitor_wrap.c:1101:\tmm_request_receive_expect(pmonitor->m_recvfd, MONITOR_ANS_GSSSETUP, m);\n./monitor_wrap.c:1124:\tmm_request_send(pmonitor->m_recvfd, MONITOR_REQ_GSSSTEP, m);\n./monitor_wrap.c:1125:\tmm_request_receive_expect(pmonitor->m_recvfd, MONITOR_ANS_GSSSTEP, m);\n./monitor_wrap.c:1154:\tmm_request_send(pmonitor->m_recvfd, MONITOR_REQ_GSSCHECKMIC, m);\n./monitor_wrap.c:1155:\tmm_request_receive_expect(pmonitor->m_recvfd,\n./monitor_wrap.c:1175:\tmm_request_send(pmonitor->m_recvfd, MONITOR_REQ_GSSUSEROK, m);\n./monitor_wrap.c:1176:\tmm_request_receive_expect(pmonitor->m_recvfd,\n./monitor_wrap.c:1199:\tmm_request_send(pmonitor->m_recvfd, MONITOR_REQ_GSSSIGN, m);\n./monitor_wrap.c:1200:\tmm_request_receive_expect(pmonitor->m_recvfd, MONITOR_ANS_GSSSIGN, m);\n./monitor_wrap.c:1228:\tmm_request_send(pmonitor->m_recvfd, MONITOR_REQ_GSSUPCREDS, m);\n./monitor_wrap.c:1229:\tmm_request_receive_expect(pmonitor->m_recvfd, MONITOR_ANS_GSSUPCREDS, m);\n./monitor_wrap.c:1324:\tci.rdomain = ssh_packet_rdomain_in(ssh);\n./auth2-gss.c:46:#include \"packet.h\"\n./auth2-gss.c:49:#include \"monitor_wrap.h\"\n./auth2-gss.c:92:\t/* gss_kex_context is NULL with privsep, so we can't check it here */\n./auth2-gss.c:120:\t\tfatal_fr(r, \"parse packet\");\n./auth2-gss.c:176:\t\tfatal_fr(r, \"send packet\");\n./auth2-gss.c:205:\t\tfatal_fr(r, \"parse packet\");\n./auth2-gss.c:221:\t\t\t\tfatal_fr(r, \"send ERRTOK packet\");\n./auth2-gss.c:233:\t\t\t\tfatal_fr(r, \"send TOKEN packet\");\n./auth2-gss.c:269:\t\tfatal_fr(r, \"parse packet\");\n./auth2-gss.c:310:\t\tfatal_fr(r, \"parse packet\");\n./auth2-gss.c:340:\t\tfatal_fr(r, \"parse packet\");\n./ttymodes.h:55: * Some constants and prototypes are defined in packet.h; this file\n./ssh-pkcs11-helper.c:188:\t/* discard the remaining bytes from the current packet */\n./ssh-pkcs11-helper.c:262:\t\t * the worst-case length packet it can generate,\n./ssh-pkcs11-helper.c:274:\t\tif ((r = poll(pfd, 2, -1 /* INFTIM */)) <= 0) {\n./sandbox-darwin.c:34:#include \"monitor.h\"\n./sandbox-darwin.c:44:ssh_sandbox_init(struct monitor *monitor)\n./sshconnect.c:45:#include \"packet.h\"\n./sshconnect.c:53:#include \"monitor_fdpass.h\"\n./sshconnect.c:172:\tif (ssh_packet_set_connection(ssh, sock, sock) == NULL)\n./sshconnect.c:173:\t\treturn -1; /* ssh_packet_set_connection logs error */\n./sshconnect.c:255:\tif (ssh_packet_set_connection(ssh, pout[0], pin[1]) == NULL)\n./sshconnect.c:256:\t\treturn -1; /* ssh_packet_set_connection logs error */\n./sshconnect.c:525:\tif (ssh_packet_set_connection(ssh, sock, sock) == NULL)\n./sshconnect.c:526:\t\treturn -1; /* ssh_packet_set_connection logs error */\n./sshconnect.c:547:\t\t\treturn -1; /* ssh_packet_set_connection logs error */\n./sshconnect.c:549:\t\tif ((ssh_packet_set_connection(ssh, in, out)) == NULL)\n./sshconnect.c:550:\t\t\treturn -1; /* ssh_packet_set_connection logs error */\n./sshconnect.c:1620:\tssh_packet_set_nonblocking(ssh);\n./openbsd-compat/port-aix.c:73: * acquire due to privsep code. We will just drop support.\n./monitor_fdpass.c:1:/* $OpenBSD: monitor_fdpass.c,v 1.23 2026/02/08 19:54:31 dtucker Exp $ */\n./monitor_fdpass.c:40:#include \"monitor_fdpass.h\"\n./monitor_fdpass.c:84:\t\t(void)poll(&pfd, 1, -1);\n./monitor_fdpass.c:139:\t\t(void)poll(&pfd, 1, -1);\n./sandbox-rlimit.c:44:ssh_sandbox_init(struct monitor *monitor)\n./regress/README.regress:69:connect-privsep.sh:\tproxy connect with privsep\n./openbsd-compat/port-net.c:303: * IP packets using OpenBSD's numbers.\n./openbsd-compat/port-net.c:330:\t/* Determine address family from packet IP header. */\n./openbsd-compat/port-net.c:333:\t/* Prepend address family to packet using OpenBSD constants */\n./OVERVIEW:59: Binary packet protocol\n./OVERVIEW:61: - The ssh binary packet protocol is implemented in packet.c. The\n./OVERVIEW:62: code in packet.c does not concern itself with packet types or their\n./OVERVIEW:63: execution; it contains code to build packets, to receive them and\n./OVERVIEW:65: packets.\n./OVERVIEW:67: - The code in packet.c calls the buffer manipulation routines\n./OVERVIEW:141: mode by calling server_loop in serverloop.c. This does the real\n./openbsd-compat/bsd-poll.c:37: * A minimal implementation of ppoll(2), built on top of pselect(2).\n./openbsd-compat/bsd-poll.c:46:ppoll(struct pollfd *fds, nfds_t nfds, const struct timespec *tmoutp,\n./openbsd-compat/bsd-poll.c:80:\t/* scan through select results and set poll() flags */\n./openbsd-compat/bsd-poll.c:100:poll(struct pollfd *fds, nfds_t nfds, int timeout)\n./openbsd-compat/bsd-poll.c:104:\t/* poll timeout is msec, ppoll is timespec (sec + nsec) */\n./openbsd-compat/bsd-poll.c:111:\treturn ppoll(fds, nfds, tsp, NULL);\n./sshd-session.c:1:/* $OpenBSD: sshd-session.c,v 1.23 2026/03/11 09:10:59 dtucker Exp $ */\n./sshd-session.c:64:#include \"packet.h\"\n./sshd-session.c:87:#include \"monitor.h\"\n./sshd-session.c:91:#include \"monitor_wrap.h\"\n./sshd-session.c:167:struct monitor *pmonitor = NULL;\n./sshd-session.c:168:int privsep_is_preauth = 1;\n./sshd-session.c:169:static int privsep_chroot = 1;\n./sshd-session.c:172:struct passwd *privsep_pw = NULL;\n./sshd-session.c:196:mm_is_monitor(void)\n./sshd-session.c:202:\treturn (pmonitor && pmonitor->m_pid > 0);\n./sshd-session.c:215:\t * keys command helpers or privsep children.\n./sshd-session.c:310:privsep_preauth(struct ssh *ssh)\n./sshd-session.c:316:\tpmonitor = monitor_init();\n./sshd-session.c:318:\tpmonitor->m_pkex = &ssh->kex;\n./sshd-session.c:325:\t\tpmonitor->m_pid = pid;\n./sshd-session.c:333:\t\tmonitor_child_preauth(ssh, pmonitor);\n./sshd-session.c:334:\t\tprivsep_is_preauth = 0;\n./sshd-session.c:338:\t\tclose(pmonitor->m_sendfd);\n./sshd-session.c:339:\t\tclose(pmonitor->m_log_recvfd);\n./sshd-session.c:346:\t\t * 4 monitor message socket\n./sshd-session.c:347:\t\t * 5 monitor logging socket\n./sshd-session.c:349:\t\t * We know that the monitor sockets will have fds > 4 because\n./sshd-session.c:353:\t\tif (ssh_packet_get_connection_in(ssh) != STDIN_FILENO &&\n./sshd-session.c:354:\t\t dup2(ssh_packet_get_connection_in(ssh), STDIN_FILENO) == -1)\n./sshd-session.c:356:\t\tif (ssh_packet_get_connection_out(ssh) != STDOUT_FILENO &&\n./sshd-session.c:357:\t\t dup2(ssh_packet_get_connection_out(ssh),\n./sshd-session.c:362:\t\tif (pmonitor->m_recvfd != PRIVSEP_MONITOR_FD &&\n./sshd-session.c:363:\t\t dup2(pmonitor->m_recvfd, PRIVSEP_MONITOR_FD) == -1)\n./sshd-session.c:364:\t\t\tfatal(\"dup2 monitor fd: %s\", strerror(errno));\n./sshd-session.c:365:\t\tif (pmonitor->m_log_sendfd != PRIVSEP_LOG_FD &&\n./sshd-session.c:366:\t\t dup2(pmonitor->m_log_sendfd, PRIVSEP_LOG_FD) == -1)\n./sshd-session.c:379:privsep_postauth(struct ssh *ssh, Authctxt *authctxt)\n./sshd-session.c:385:\t * in the post-auth privsep process so it can allocate PTYs directly.\n./sshd-session.c:387:\t * disable post-auth privsep entirely.\n./sshd-session.c:397:\tmonitor_reinit(pmonitor);\n./sshd-session.c:399:\tpmonitor->m_pid = fork();\n./sshd-session.c:400:\tif (pmonitor->m_pid == -1)\n./sshd-session.c:402:\telse if (pmonitor->m_pid != 0) {\n./sshd-session.c:403:\t\tverbose(\"User child is on pid %ld\", (long)pmonitor->m_pid);\n./sshd-session.c:405:\t\tmonitor_clear_keystate(ssh, pmonitor);\n./sshd-session.c:406:\t\tmonitor_child_postauth(ssh, pmonitor);\n./sshd-session.c:414:\tclose(pmonitor->m_sendfd);\n./sshd-session.c:415:\tpmonitor->m_sendfd = -1;\n./sshd-session.c:427:\tmonitor_apply_keystate(ssh, pmonitor);\n./sshd-session.c:430:\t * Tell the packet layer that authentication was successful, since\n./sshd-session.c:433:\tssh_packet_set_authenticated(ssh);\n./sshd-session.c:720:\tint sock_in = ssh_packet_get_connection_in(ssh);\n./sshd-session.c:756:\t\tif ((name = ssh_packet_rdomain_in(ssh)) == NULL)\n./sshd-session.c:770:\t\tif ((name = ssh_packet_rdomain_in(ssh)) == NULL)\n./sshd-session.c:953:\t\tfatal(\"sshd-session should not be executed directly\");\n./sshd-session.c:976:\t\t \"P\", \"sshd-session\",\n./sshd-session.c:1007:\tdebug(\"sshd-session version %s, %s\", SSH_VERSION, SSH_OPENSSL_VERSION);\n./sshd-session.c:1010:\tprivsep_chroot = (getuid() == 0 || geteuid() == 0);\n./sshd-session.c:1011:\tif ((privsep_pw = getpwnam(SSH_PRIVSEP_USER)) == NULL) {\n./sshd-session.c:1012:\t\tif (privsep_chroot || options.kerberos_authentication)\n./sshd-session.c:1016:\t\tprivsep_pw = pwcopy(privsep_pw);\n./sshd-session.c:1017:\t\tfreezero(privsep_pw->pw_passwd, strlen(privsep_pw->pw_passwd));\n./sshd-session.c:1018:\t\tprivsep_pw->pw_passwd = xstrdup(\"*\");\n./sshd-session.c:1094:\t\tfatal(\"internal error: monitor received no hostkeys\");\n./sshd-session.c:1125:\t\t * as packet_connection_is_on_socket() depends on this.\n./sshd-session.c:1162:\tif ((ssh = ssh_packet_set_connection(NULL, sock_in, sock_out)) == NULL)\n./sshd-session.c:1165:\tssh_packet_set_server(ssh);\n./sshd-session.c:1166:\tssh_packet_set_qos(ssh, options.ip_qos_interactive,\n./sshd-session.c:1178:\tif (options.tcp_keep_alive && ssh_packet_connection_is_on_socket(ssh) &&\n./sshd-session.c:1201:\tif (ssh_packet_connection_is_on_socket(ssh)) {\n./sshd-session.c:1216:\trdomain = ssh_packet_rdomain_in(ssh);\n./sshd-session.c:1248:\tssh_packet_set_nonblocking(ssh);\n./sshd-session.c:1266:\tif (privsep_preauth(ssh) != 1)\n./sshd-session.c:1267:\t\tfatal(\"privsep_preauth failed\");\n./sshd-session.c:1313:\tprivsep_postauth(ssh, authctxt);\n./sshd-session.c:1314:\t/* the monitor process [priv] will not return */\n./sshd-session.c:1316:\tssh_packet_set_timeout(ssh, options.client_alive_interval,\n./sshd-session.c:1326:\tssh_packet_get_bytes(ssh, &ibytes, &obytes);\n./sshd-session.c:1341:\tssh_packet_close(ssh);\n./sshd-session.c:1373:\t\tif (privsep_is_preauth &&\n./sshd-session.c:1374:\t\t pmonitor != NULL && pmonitor->m_pid > 1) {\n./sshd-session.c:1375:\t\t\tdebug(\"Killing privsep child %d\", pmonitor->m_pid);\n./sshd-session.c:1376:\t\t\tif (kill(pmonitor->m_pid, SIGKILL) != 0 &&\n./sshd-session.c:1378:\t\t\t\terror_f(\"kill(%d): %s\", pmonitor->m_pid,\n./sshd-session.c:1385:\tif (the_active_state != NULL && mm_is_monitor())\n./sshd-session.c:1389:\tif (i == 255 && monitor_auth_attempted())\n./sshd-session.c:1391:\tif (i == 255 && monitor_invalid_user())\n./monitor_wrap.h:1:/* $OpenBSD: monitor_wrap.h,v 1.54 2026/03/02 02:40:15 djm Exp $ */\n./monitor_wrap.h:32:/* The configuration has to fit in a monitor message along with other state */\n./monitor_wrap.h:38:struct monitor;\n./monitor_wrap.h:45:int mm_is_monitor(void);\n./monitor_wrap.h:99:void mm_send_keystate(struct ssh *, struct monitor*);\n./openbsd-compat/bsd-cygwin_util.h:51:#define CYGWIN_SSH_PRIVSEP_USER (cygwin_ssh_privsep_user())\n./openbsd-compat/bsd-cygwin_util.h:52:const char *cygwin_ssh_privsep_user();\n./openbsd-compat/port-uw.c:40:#include \"packet.h\"\n./cipher.c:77:#define CFLAG_INTERNAL\t\tCFLAG_NONE /* Don't use \"none\" for packets */\n./cipher.c:285:\tif (EVP_CipherInit(cc->evp, type, NULL, (u_char *)iv,\n./cipher.c:303:\tif (EVP_CipherInit(cc->evp, NULL, (u_char *)key, NULL, -1) == 0) {\n./cipher.c:373:\t\t EVP_Cipher(cc->evp, NULL, (u_char *)src, aadlen) < 0)\n./cipher.c:379:\tif (EVP_Cipher(cc->evp, dest + aadlen, (u_char *)src +
[truncated 74574 bytes]