)]}'
{
  "commit": "02f574a8303560a4a79a42834f3092ce7c9a57cc",
  "tree": "48b04e689285b2b871b32d3d5f7576140496898e",
  "parents": [
    "82b0cdb7411ea2cf02d3a45e6983cc7c8c009d9e"
  ],
  "author": {
    "name": "Roland Shoemaker",
    "email": "bracewell@google.com",
    "time": "Mon Mar 23 11:54:41 2026 -0700"
  },
  "committer": {
    "name": "Gopher Robot",
    "email": "gobot@golang.org",
    "time": "Tue Apr 07 12:14:44 2026 -0700"
  },
  "message": "[release-branch.go1.25] crypto/tls: prevent deadlock when client sends multiple key update messages\n\nWhen we made setReadTrafficSecret send an alert when there are pending\nhandshake messages, we introduced a deadlock when the client sends\nmultiple key update messages that request a response, as handleKeyUpdate\nwill lock the mutex, and defer the unlocking until the end of the\nfunction, but setReadTrafficSecret called sendAlert in the failure case,\nwhich also tries to lock the mutex.\n\nAdd an argument to setReadTrafficSecret which lets the caller indicate\nif the mutex is already locked, and if so, call sendAlertLocked instead\nof sendAlert.\n\nThanks to Jakub Ciolek for reporting this issue.\n\nFixes #78334\nFixes CVE-2026-32283\n\nChange-Id: Id8e56974233c910e0d66ba96eafbd2ea57832610\nReviewed-on: https://go-internal-review.googlesource.com/c/go/+/3881\nReviewed-by: Damien Neil \u003cdneil@google.com\u003e\nReviewed-by: Nicholas Husin \u003chusin@google.com\u003e\nReviewed-on: https://go-internal-review.googlesource.com/c/go/+/3988\nReviewed-on: https://go-review.googlesource.com/c/go/+/763555\nAuto-Submit: Gopher Robot \u003cgobot@golang.org\u003e\nReviewed-by: David Chase \u003cdrchase@google.com\u003e\nTryBot-Bypass: Gopher Robot \u003cgobot@golang.org\u003e\nReviewed-by: Junyang Shao \u003cshaojunyang@google.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "fa5b87407f9da5ad1cfb111eef9c3eff49082b68",
      "old_mode": 33188,
      "old_path": "src/crypto/tls/conn.go",
      "new_id": "c6e6ec703026ffe4504d19af694ab3775922dae1",
      "new_mode": 33188,
      "new_path": "src/crypto/tls/conn.go"
    },
    {
      "type": "modify",
      "old_id": "cf793a476b6491c4a76302718ccfdb775fae008d",
      "old_mode": 33188,
      "old_path": "src/crypto/tls/handshake_client_tls13.go",
      "new_id": "b0d489f7fe8429cd6e55928aa745f3d39a6d7680",
      "new_mode": 33188,
      "new_path": "src/crypto/tls/handshake_client_tls13.go"
    },
    {
      "type": "modify",
      "old_id": "a4b205908ed9348859e444944e192c94c7aa7697",
      "old_mode": 33188,
      "old_path": "src/crypto/tls/handshake_server_tls13.go",
      "new_id": "318833ecbeef4f5c49d87f36321270721fb81af2",
      "new_mode": 33188,
      "new_path": "src/crypto/tls/handshake_server_tls13.go"
    },
    {
      "type": "modify",
      "old_id": "c70b2aad443b2a67a2fb0e03c18b2122e9ac82ae",
      "old_mode": 33188,
      "old_path": "src/crypto/tls/handshake_test.go",
      "new_id": "631712dbf92cb4ef69a278277710ffd9e0cc9e81",
      "new_mode": 33188,
      "new_path": "src/crypto/tls/handshake_test.go"
    }
  ]
}
