)]}'
{
  "commit": "7d695da948bfa44ed6eedcebc8f43bcb50e94a57",
  "tree": "e0b17c9253dd8db2e8ebe1a6ecc09f2529075a36",
  "parents": [
    "5b7f84159940519e89df4d95465538c1797cee8b"
  ],
  "author": {
    "name": "Nicola Murino",
    "email": "nicola.murino@gmail.com",
    "time": "Wed May 27 11:59:43 2026 +0200"
  },
  "committer": {
    "name": "Nicola Murino",
    "email": "nicola.murino@gmail.com",
    "time": "Mon Jun 29 06:36:26 2026 -0700"
  },
  "message": "ssh/agent: drain channel stderr in agent forwarders\n\nForwardToAgent and ForwardToRemote only read the main stream of the\nauth-agent@openssh.com channels they accept. If a peer sends data on\nthe channel\u0027s extended (stderr) stream the bytes accumulate in the\nclient-side extPending buffer and the receive window is never\nreplenished, because the window is only adjusted as a side effect of\nReadExtended. That can pin up to channelWindowSize (2 MiB) of memory\nper channel and silently stalls any stderr traffic once the window is\nexhausted.\n\nThe auth-agent protocol does not use stderr, so a well-behaved peer\nnever sends anything on it. To stay tolerant of misbehaving peers\nwithout leaving the channel half-stuck, drain the stderr stream into\nio.Discard, mirroring the existing DiscardRequests pattern. The\ngoroutine exits when the channel is closed because Stderr().Read\nreturns io.EOF.\n\nAdd a regression test that opens an agent-forwarding channel and\nwrites more than the default window on the stderr stream from the\nserver side. Without the fix the write blocks once the remote window\nis exhausted; with the fix the bytes are drained and the agent stream\nremains usable.\n\nChange-Id: Iadf8ea6ca726c058421bbc39f92e0100579fda17\nReviewed-on: https://go-review.googlesource.com/c/crypto/+/783720\nReviewed-by: Filippo Valsorda \u003cfilippo@golang.org\u003e\nReviewed-by: Carlos Amedee \u003ccarlos@golang.org\u003e\nLUCI-TryBot-Result: golang-scoped@luci-project-accounts.iam.gserviceaccount.com \u003cgolang-scoped@luci-project-accounts.iam.gserviceaccount.com\u003e\nReviewed-by: Dmitri Shuralyov \u003cdmitshur@google.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "fd24ba900d2541ff523678b62b424086d5ee853d",
      "old_mode": 33188,
      "old_path": "ssh/agent/forward.go",
      "new_id": "5e7a0ea40d2b159f0ab0dca8852aba502bd2854d",
      "new_mode": 33188,
      "new_path": "ssh/agent/forward.go"
    },
    {
      "type": "modify",
      "old_id": "9e790eb4284de84ae2f5935a978c1c19374ee8bc",
      "old_mode": 33188,
      "old_path": "ssh/agent/server_test.go",
      "new_id": "f57e039873164d428b224c11b3c8b44820bd2f44",
      "new_mode": 33188,
      "new_path": "ssh/agent/server_test.go"
    }
  ]
}
