]> Cypherpunks repositories - gostls13.git/commit
net/netip: fix invalid representation of Prefix
authorJoe Tsai <joetsai@digital-static.net>
Sat, 20 Aug 2022 19:05:07 +0000 (12:05 -0700)
committerGopher Robot <gobot@golang.org>
Thu, 2 Feb 2023 15:37:19 +0000 (15:37 +0000)
commit3693fd255f44acc24efa2b45317473d4d1e1abde
tree27d3fde49090ca6e8d86317426da1375481803a4
parent53372ab2791f2bd8a02ef21928893d213e6bfe95
net/netip: fix invalid representation of Prefix

For a given Addr, ensure there is exactly one invalid representation.
This allows invalid representations to be safely comparable.
To ensure that the zero value of Prefix is invalid,
we modify the encoding of bits to simply be the bit count plus one.

Since Addr is immutable, we check in the PrefixFrom constructor that
the provided Addr is valid and only store a non-zero bits length if so.
IsValid is simplified to just checking whether bitsPlusOne is non-zero.

Fixes #54525

Change-Id: I9244cae2fd160cc9c81d007866992df2e422d3b9
Reviewed-on: https://go-review.googlesource.com/c/go/+/425035
Run-TryBot: Joseph Tsai <joetsai@digital-static.net>
Reviewed-by: Michael Knyszek <mknyszek@google.com>
Reviewed-by: Ian Lance Taylor <iant@golang.org>
TryBot-Result: Gopher Robot <gobot@golang.org>
Reviewed-by: Ian Lance Taylor <iant@google.com>
Auto-Submit: Joseph Tsai <joetsai@digital-static.net>
src/net/netip/netip.go
src/net/netip/netip_pkg_test.go