Fix bug in generating IETF-format ACK Frame
Generation of IETF QUIC ACK frames and calculation of the length of same differed, due to missing "-1" in the gap-block and ack-block sizes. This was a problem when the decrement caused the length to cross a VarInt62 encoding size boundary, causing the calculated-length to be different from the actual, serialized, length. In this case, the gap block size was 64 in the length calculation method, 63 in the actual serialization. 64 is encoded in two bytes, 63 in one, leading to the length discrepancy. Unless the length boundary was crossed, this did not cause problems in that the serialized value (63) was the correct one. This was detected in the Chromium clusterfuzz tests and reported as Chromium issue 859949: https://bugs.chromium.org/p/chromium/issues/detail?id=859949 Merge internal change: 204947824 R=rch@chromium.org Change-Id: I6578162b274f8474ca0ef7979a1308afd51cd295 Reviewed-on: https://chromium-review.googlesource.com/1140838Reviewed-by:Ryan Hamilton <rch@chromium.org> Commit-Queue: Frank Kastenholz <fkastenholz@chromium.org> Cr-Commit-Position: refs/heads/master@{#576089}
Showing
Please register or sign in to comment