reject STOP_WAITING frames that have a least unacked of 0

This commit is contained in:
Marten Seemann
2017-08-10 09:33:14 +07:00
parent 18c2ed33d3
commit 698c8ceee8
2 changed files with 9 additions and 2 deletions

View File

@@ -81,7 +81,7 @@ func ParseStopWaitingFrame(r *bytes.Reader, packetNumber protocol.PacketNumber,
return nil, err
}
if leastUnackedDelta > uint64(packetNumber) {
if leastUnackedDelta >= uint64(packetNumber) {
return nil, qerr.Error(qerr.InvalidStopWaitingData, "invalid LeastUnackedDelta")
}

View File

@@ -18,13 +18,20 @@ var _ = Describe("StopWaitingFrame", func() {
Expect(b.Len()).To(BeZero())
})
It("rejects frames with an invalid LeastUnackedDelta", func() {
It("rejects frames that would have a negative LeastUnacked value", func() {
b := bytes.NewReader([]byte{0x06, 0xD})
_, err := ParseStopWaitingFrame(b, 10, 1, protocol.VersionWhatever)
Expect(err).To(HaveOccurred())
Expect(b.Len()).To(BeZero())
})
It("rejects frames that would have 0 as LeastUnacked", func() {
b := bytes.NewReader([]byte{0x6, 0x8})
_, err := ParseStopWaitingFrame(b, 8, 1, protocol.VersionWhatever)
Expect(err).To(HaveOccurred())
Expect(b.Len()).To(BeZero())
})
It("errors on EOFs", func() {
data := []byte{0x06, 0x03}
_, err := ParseStopWaitingFrame(bytes.NewReader(data), 5, 1, protocol.VersionWhatever)