)]}'
{
  "commit": "f9cc26f9c1c07668e29be71e08324f68d50d0942",
  "tree": "636a226e768551dcf18948fe00cdb20c8cecd136",
  "parents": [
    "21a879a78a60c8667468a9eba994c8365eaf92ea"
  ],
  "author": {
    "name": "David Benjamin",
    "email": "davidben@google.com",
    "time": "Sun Feb 09 16:49:31 2020 -0500"
  },
  "committer": {
    "name": "CQ bot account: commit-bot@chromium.org",
    "email": "commit-bot@chromium.org",
    "time": "Thu Feb 13 19:30:40 2020 +0000"
  },
  "message": "Require handshake flights end at record boundaries.\n\nThe TLS handshake runs over a sequence of messages, serialized onto a\nstream, which is then packetized into records, with no correlation to\nmessage boundaries.\n\nTLS messages may span records, so a TLS implementation will buffer up\nexcess data in a record for the next message. If not checked, that next\nmessage may a round-trip or even a key change later. Carrying data\nacross a key change has security consequences, so we reject any excess\ndata across key changes (see ChangeCipherSpec synchronization tests and\n(d)tls_set_read_state). However, we do not currently check it across\nnetwork round trips that do not change keys.\n\nFor instance, a TLS 1.2 client may pack part of ClientKeyExchange (the\nfirst byte, at least, is deterministic) into the ClientHello record,\nbefore even receiving ServerHello. Most TLS implementations will accept\nthis.\n\nHowever, the handback logic does *not* serialize excess data in hs_buf.\nThere shouldn\u0027t be any, but if the peer is doing strange things as\nabove, that data will get silently dropped. The way TLS 1.3 0-RTT\nhandback logic works (the key isn\u0027t installed until after handback),\nthis data is even silently dropped though there is a key change.\n\nTo keep all our behavior consistent, check for unprocessed handshake\ndata at the end of each flight and reject it. Add a bunch of tests.\n\nUpdate-Note: If the peer packs data across handshake flights, or packs\nHelloRequest into the same record as Finished, this will now be an\nerror. (The former is pathologically odd behavior. The latter is also\nrejected by Schannel and also odd.)\n\nChange-Id: I9412bbdea09ee7fdcfeb78d3456329505a190641\nReviewed-on: https://boringssl-review.googlesource.com/c/boringssl/+/39987\nCommit-Queue: David Benjamin \u003cdavidben@google.com\u003e\nReviewed-by: Adam Langley \u003cagl@google.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "132c9e0ff797f1f95f68d059bd7e040958f1c51f",
      "old_mode": 33188,
      "old_path": "crypto/err/ssl.errordata",
      "new_id": "b2a61469f5b14655490b018d784e01d2bdf6407f",
      "new_mode": 33188,
      "new_path": "crypto/err/ssl.errordata"
    },
    {
      "type": "modify",
      "old_id": "6713d52b821b0e4b138dd7540afa6019e58f74b2",
      "old_mode": 33188,
      "old_path": "include/openssl/ssl.h",
      "new_id": "9847be17bc88a1e50f4581a0ecf3fcc76c2ca0cd",
      "new_mode": 33188,
      "new_path": "include/openssl/ssl.h"
    },
    {
      "type": "modify",
      "old_id": "4b369b68e622b8f786e7ccc336155b9106eb7cbc",
      "old_mode": 33188,
      "old_path": "ssl/dtls_method.cc",
      "new_id": "620a2e15239b8c4f7a50d8b5b3ff7e569a731038",
      "new_mode": 33188,
      "new_path": "ssl/dtls_method.cc"
    },
    {
      "type": "modify",
      "old_id": "f6460d3936b632eb25d683120159c06c2213b398",
      "old_mode": 33188,
      "old_path": "ssl/handshake.cc",
      "new_id": "4981fc442c591e6cc07dd943c2a17eade123c18b",
      "new_mode": 33188,
      "new_path": "ssl/handshake.cc"
    },
    {
      "type": "modify",
      "old_id": "25f96d06914767960ae0a5d28c0d869793135647",
      "old_mode": 33188,
      "old_path": "ssl/handshake_client.cc",
      "new_id": "a970a3c36a9b04fc93c93e928314be18401cc8b6",
      "new_mode": 33188,
      "new_path": "ssl/handshake_client.cc"
    },
    {
      "type": "modify",
      "old_id": "386ed6acee7d4fe331688c4ab5bd36e168f38f23",
      "old_mode": 33188,
      "old_path": "ssl/handshake_server.cc",
      "new_id": "924701f68f2b57bdb013ab32e6edca3ccebbf97c",
      "new_mode": 33188,
      "new_path": "ssl/handshake_server.cc"
    },
    {
      "type": "modify",
      "old_id": "257f7ecdca8b6afeb367649d518e7dfa2d12d2ac",
      "old_mode": 33188,
      "old_path": "ssl/internal.h",
      "new_id": "32303cb2e3cf9b44a0706b945fdf59f70561b140",
      "new_mode": 33188,
      "new_path": "ssl/internal.h"
    },
    {
      "type": "modify",
      "old_id": "0105a8b0eb1f99f0c8c269a1ce480d014c05cde5",
      "old_mode": 33188,
      "old_path": "ssl/ssl_test.cc",
      "new_id": "62d4b09be11e69e5bafc18d193f04dfbaa18f0c2",
      "new_mode": 33188,
      "new_path": "ssl/ssl_test.cc"
    },
    {
      "type": "modify",
      "old_id": "26fc4404b6bd34c0b38b879b18fee7d19974960a",
      "old_mode": 33188,
      "old_path": "ssl/test/runner/common.go",
      "new_id": "26f4885d71a9f169966f488b5b9e6e6327019bf2",
      "new_mode": 33188,
      "new_path": "ssl/test/runner/common.go"
    },
    {
      "type": "modify",
      "old_id": "ad551c5be0dc27d441a8c6af73715f09d3c87048",
      "old_mode": 33188,
      "old_path": "ssl/test/runner/conn.go",
      "new_id": "e24cf5ae81198fd928cb0f9f8262da7672789672",
      "new_mode": 33188,
      "new_path": "ssl/test/runner/conn.go"
    },
    {
      "type": "modify",
      "old_id": "df69505a5ea96aee5a0651f7e8ea0125c9deb8b7",
      "old_mode": 33188,
      "old_path": "ssl/test/runner/handshake_client.go",
      "new_id": "27e9a955d5850735ae4a826f0a8e5db65fa3b3a1",
      "new_mode": 33188,
      "new_path": "ssl/test/runner/handshake_client.go"
    },
    {
      "type": "modify",
      "old_id": "48dd239ddbc3e8f72d91a0246eeb2bab1662899a",
      "old_mode": 33188,
      "old_path": "ssl/test/runner/handshake_server.go",
      "new_id": "dc4b744e29e5c7803e2e245b9a0c9bbf13052828",
      "new_mode": 33188,
      "new_path": "ssl/test/runner/handshake_server.go"
    },
    {
      "type": "modify",
      "old_id": "86aa61e8877510ddd17faeb611c43a59c1230fea",
      "old_mode": 33188,
      "old_path": "ssl/test/runner/runner.go",
      "new_id": "4ec8bd88d6a24ff7e36d55f756b15f5ea24968fb",
      "new_mode": 33188,
      "new_path": "ssl/test/runner/runner.go"
    },
    {
      "type": "modify",
      "old_id": "8bb3339a28c3483b48791e1fe1cb1a78f6619159",
      "old_mode": 33188,
      "old_path": "ssl/tls13_client.cc",
      "new_id": "f48d1dafe49b53a2172e7026e7ff40da530be8de",
      "new_mode": 33188,
      "new_path": "ssl/tls13_client.cc"
    },
    {
      "type": "modify",
      "old_id": "39d44bceeabaf00c1c0650213913fbe6e973c93f",
      "old_mode": 33188,
      "old_path": "ssl/tls13_server.cc",
      "new_id": "baf2a0401168dd91d526758a5aadb297177f889c",
      "new_mode": 33188,
      "new_path": "ssl/tls13_server.cc"
    },
    {
      "type": "modify",
      "old_id": "1ca8bc5ee30340bea1f65d2cfa2fce9b01a9f2c6",
      "old_mode": 33188,
      "old_path": "ssl/tls_method.cc",
      "new_id": "241a3fd95f51b3acd36c0461b81e93c8c4800a6e",
      "new_mode": 33188,
      "new_path": "ssl/tls_method.cc"
    }
  ]
}
