Skip to content

Commit

Permalink
return an error when parsing a too long connection ID from a header (#…
Browse files Browse the repository at this point in the history
  • Loading branch information
marten-seemann committed Aug 30, 2022
1 parent 7023b52 commit 3199560
Show file tree
Hide file tree
Showing 2 changed files with 12 additions and 0 deletions.
3 changes: 3 additions & 0 deletions internal/wire/header.go
Expand Up @@ -29,6 +29,9 @@ func ParseConnectionID(data []byte, shortHeaderConnIDLen int) (protocol.Connecti
return protocol.ConnectionID{}, io.EOF
}
destConnIDLen := int(data[5])
if destConnIDLen > protocol.MaxConnIDLen {
return protocol.ConnectionID{}, protocol.ErrInvalidConnectionIDLen
}
if len(data) < 6+destConnIDLen {
return protocol.ConnectionID{}, io.EOF
}
Expand Down
9 changes: 9 additions & 0 deletions internal/wire/header_test.go
Expand Up @@ -86,6 +86,15 @@ var _ = Describe("Header Parsing", func() {
Expect(err).To(MatchError(io.EOF))
}
})

It("errors when encountering a too long connection ID", func() {
b := []byte{0x80, 0, 0, 0, 0}
binary.BigEndian.PutUint32(b[1:], uint32(protocol.Version1))
b = append(b, 21) // dest conn id len
b = append(b, make([]byte, 21)...)
_, err := ParseConnectionID(b, 4)
Expect(err).To(MatchError(protocol.ErrInvalidConnectionIDLen))
})
})

Context("identifying 0-RTT packets", func() {
Expand Down

0 comments on commit 3199560

Please sign in to comment.