)]}'
{
  "commit": "95bf501ea7268742d89c31e015ac123968655c7d",
  "tree": "63e51abfb8678dad42d0e6c807f30fdd3dd752f0",
  "parents": [
    "1eab645ae836284e2bd1ef82a79cc3fc933d9e0c"
  ],
  "author": {
    "name": "bnc",
    "email": "bnc@google.com",
    "time": "Wed Jun 19 07:53:29 2019 -0700"
  },
  "committer": {
    "name": "Copybara-Service",
    "email": "copybara-worker@google.com",
    "time": "Wed Jun 19 08:06:05 2019 -0700"
  },
  "message": "Fix QuicStreamSequencerBuffer::PrefetchNextRegion() behavior after Clear().\n\nIf some data are prefetched then QuicStreamSequencerBuffer::Clear() is called,\nthen QuicStreamSequencerBuffer::FirstByteMissing() will take the value of\n|total_bytes_read_|, which can be less than |total_bytes_prefetched_|.  In this\ncase, QuicStreamSequencerBuffer::PrefetchNextRegion() used to return true, but\nreally ought to return false.  This CL fixes that.\n\nThis CL addresses the root cause of the fuzzer-found ASAN crash at\nhttps://crbug.com/969391.  It is complementary to cr/253592180, which addresses\nthe stream level behavior.  Either CLs would be enough to make that particular\ncrash go away, but they are both necessary as they fix different bugs.\n\ngfe-relnote: Change in code only mean for QUIC v99, not flag protected.\n\nWe believe this change does not need flag protection, because it only affects |total_bytes_prefetched_|, which is only read in QuicStreamSequencerBuffer::PrefetchNextRegion(), which is only called (other than tests) in QuicStreamSequencer::PrefetchNextRegion(), which is only called in three places: QuicSpdyStream::OnDataAvailable() but only when using v99, QuicReceiveControlStream::OnDataAvailable() which is not currently wired up but will be v99-only anyway, and //depot/google3/vr/c9/playability/yperf/message_stream.cc in a galaxy far-far away.  Therefore this change should not affect production GFE.\n\nPiperOrigin-RevId: 253995330\nChange-Id: I40b92da16dcf6ec1bdeda9de9ddeeb49ff3542f4\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "7f0f2cbf22ddf260abada46355e424742f77ea0a",
      "old_mode": 33188,
      "old_path": "quic/core/quic_stream_sequencer_buffer.cc",
      "new_id": "9d239b1b7301fbdabd54d5bef2c7565455b71315",
      "new_mode": 33188,
      "new_path": "quic/core/quic_stream_sequencer_buffer.cc"
    },
    {
      "type": "modify",
      "old_id": "335aa2dd3d8fc5dd5b152dad7512e71d811d4673",
      "old_mode": 33188,
      "old_path": "quic/core/quic_stream_sequencer_buffer_test.cc",
      "new_id": "67d9b28f62c01e15446c8db68a5a7b092a42e3cd",
      "new_mode": 33188,
      "new_path": "quic/core/quic_stream_sequencer_buffer_test.cc"
    }
  ]
}
