fix segments size

This commit is contained in:
ffdfgdfg 2019-12-17 18:50:28 +08:00
parent 2629078988
commit 5a0fe14f23

View File

@ -41,6 +41,9 @@ func (Self *BasePackager) NewPac(contents ...interface{}) (err error) {
} }
} }
Self.setLength() Self.setLength()
if Self.Length > MAXIMUM_SEGMENT_SIZE {
err = errors.New("mux:packer: newpack content segment too large")
}
return return
} }
@ -77,6 +80,11 @@ func (Self *BasePackager) UnPack(reader io.Reader) (n uint16, err error) {
} }
if int(Self.Length) > cap(Self.Content) { if int(Self.Length) > cap(Self.Content) {
err = errors.New("unpack err, content length too large") err = errors.New("unpack err, content length too large")
return
}
if Self.Length > MAXIMUM_SEGMENT_SIZE {
err = errors.New("mux:packer: unpack content segment too large")
return
} }
Self.Content = Self.Content[:int(Self.Length)] Self.Content = Self.Content[:int(Self.Length)]
//n, err := io.ReadFull(reader, Self.Content) //n, err := io.ReadFull(reader, Self.Content)
@ -273,10 +281,10 @@ func (addr *Addr) Decode(b []byte) error {
pos := 1 pos := 1
switch addr.Type { switch addr.Type {
case ipV4: case ipV4:
addr.Host = net.IP(b[pos:pos+net.IPv4len]).String() addr.Host = net.IP(b[pos : pos+net.IPv4len]).String()
pos += net.IPv4len pos += net.IPv4len
case ipV6: case ipV6:
addr.Host = net.IP(b[pos:pos+net.IPv6len]).String() addr.Host = net.IP(b[pos : pos+net.IPv6len]).String()
pos += net.IPv6len pos += net.IPv6len
case domainName: case domainName:
addrlen := int(b[pos]) addrlen := int(b[pos])