)]}'
{
  "commit": "268efd0cb84e5517706a5da7adc271ef43ecfefb",
  "tree": "5ca7f892a117744bac9bb19bf6251f23be830790",
  "parents": [
    "9193b6323eb69f38b76c4b96e58074d6fbd61cbd"
  ],
  "author": {
    "name": "bnc",
    "email": "bnc@google.com",
    "time": "Mon Feb 14 05:40:08 2022 -0800"
  },
  "committer": {
    "name": "Copybara-Service",
    "email": "copybara-worker@google.com",
    "time": "Mon Feb 14 05:40:56 2022 -0800"
  },
  "message": "Public fix: Limit buffering on the QPACK encoder stream.\n\nA malicious peer may block our stack from sending data on the QPACK encoder\nstream (via flow control) while still generating traffic, causing an unlimited\namount of data to be buffered.  To prevent this from happening, this CL makes\nQpackEncoder check if the amount of data currently buffered on the send encoder\nstream exceeds 64 kB, and if so, it does not emit any further encoder stream\ninstructions.  It still encodes headers in a spec-compliant way using string\nliterals and references to static table entries and already emitted dynamic\ntable entries.\n\nNote that since the buffered amount of data is only checked at the beginning of\nencoding each header block, it might increase above the threshold by as much as\nencoder stream instructions required to encode the header block.  However,\nsubsequent header blocks will not trigger any writes on the encoder stream until\nthe number of buffered bytes goes back below the threshold.\n\nProtected by FLAGS_quic_reloadable_flag_quic_limit_encoder_stream_buffering.\n\nPiperOrigin-RevId: 428482893\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "43bf3d3807382d7f05829146f816e52960777736",
      "old_mode": 33188,
      "old_path": "quic/core/qpack/fuzzer/qpack_round_trip_fuzzer.cc",
      "new_id": "676121ea5b36d09eec7687989379ef77031a0830",
      "new_mode": 33188,
      "new_path": "quic/core/qpack/fuzzer/qpack_round_trip_fuzzer.cc"
    },
    {
      "type": "modify",
      "old_id": "3ae944152c016851eec7bfff0a03c44e7e9a5cbf",
      "old_mode": 33188,
      "old_path": "quic/core/qpack/qpack_encoder.cc",
      "new_id": "974f7b2274fcbea0be3eff628fc77690343938db",
      "new_mode": 33188,
      "new_path": "quic/core/qpack/qpack_encoder.cc"
    },
    {
      "type": "modify",
      "old_id": "4079ba45a854285e22b5837c019825c7ce8551bc",
      "old_mode": 33188,
      "old_path": "quic/core/qpack/qpack_encoder_stream_sender.cc",
      "new_id": "8b6f887cf3c206b0bad36948b1c08a8df8e9f5c0",
      "new_mode": 33188,
      "new_path": "quic/core/qpack/qpack_encoder_stream_sender.cc"
    },
    {
      "type": "modify",
      "old_id": "44d777d8d901abc986c256cb48e50e89affaa376",
      "old_mode": 33188,
      "old_path": "quic/core/qpack/qpack_encoder_stream_sender.h",
      "new_id": "d8c64306a785cddce596ef18c266166104316d54",
      "new_mode": 33188,
      "new_path": "quic/core/qpack/qpack_encoder_stream_sender.h"
    },
    {
      "type": "modify",
      "old_id": "21397ed85713a28e64df8f6ee44e3ae8e4640c1f",
      "old_mode": 33188,
      "old_path": "quic/core/qpack/qpack_encoder_test.cc",
      "new_id": "30f578e93787554d9118150a9b439aed57319426",
      "new_mode": 33188,
      "new_path": "quic/core/qpack/qpack_encoder_test.cc"
    },
    {
      "type": "modify",
      "old_id": "626d0639bf54dfca6402fef51e6b5943a0dcf41d",
      "old_mode": 33188,
      "old_path": "quic/core/qpack/qpack_send_stream.cc",
      "new_id": "3e921d860f6c5adbc5fbd40c1ad824a8d3337163",
      "new_mode": 33188,
      "new_path": "quic/core/qpack/qpack_send_stream.cc"
    },
    {
      "type": "modify",
      "old_id": "086ad638d46c73e540ff36c61602e18cee1e4548",
      "old_mode": 33188,
      "old_path": "quic/core/qpack/qpack_send_stream.h",
      "new_id": "72dc677ecc7899e3e8238ceb65f80fa26ac3e650",
      "new_mode": 33188,
      "new_path": "quic/core/qpack/qpack_send_stream.h"
    },
    {
      "type": "modify",
      "old_id": "4bd1a3ae72d87cdb7e94659814442fbe5ac4a93d",
      "old_mode": 33188,
      "old_path": "quic/core/qpack/qpack_stream_sender_delegate.h",
      "new_id": "04f533d3084b6137898840d9d68a139c5310d76b",
      "new_mode": 33188,
      "new_path": "quic/core/qpack/qpack_stream_sender_delegate.h"
    },
    {
      "type": "modify",
      "old_id": "58fcb2f4236ea03a0cfd76711a877c5c8b5ab460",
      "old_mode": 33188,
      "old_path": "quic/core/quic_flags_list.h",
      "new_id": "fe5bcd577dc6daa65f489d36bf0d6dfae32094d9",
      "new_mode": 33188,
      "new_path": "quic/core/quic_flags_list.h"
    },
    {
      "type": "modify",
      "old_id": "23d54aab6383c9cbcb68e51b2a29042fc8f08c98",
      "old_mode": 33188,
      "old_path": "quic/test_tools/qpack/qpack_test_utils.h",
      "new_id": "2230fbec940c66594dcc88b5d6f16d70f83138f4",
      "new_mode": 33188,
      "new_path": "quic/test_tools/qpack/qpack_test_utils.h"
    }
  ]
}
