forked from quic-go/quic-go
reject STOP_WAITING frames that have a least unacked of 0
This commit is contained in:
@@ -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")
|
||||
}
|
||||
|
||||
|
||||
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user