Fix dec_slice_packed_bool when bools are inefficiently encoded.
This doesn't occur in practice, but was discovered by gofuzz
(reported in #76).
diff --git a/proto/decode.go b/proto/decode.go
index 8486635..5810782 100644
--- a/proto/decode.go
+++ b/proto/decode.go
@@ -597,9 +597,13 @@
return err
}
nb := int(nn) // number of bytes of encoded bools
+ fin := o.index + nb
+ if fin < o.index {
+ return errOverflow
+ }
y := *v
- for i := 0; i < nb; i++ {
+ for o.index < fin {
u, err := p.valDec(o)
if err != nil {
return err