fix: ShadowTLS header use array instead

This commit is contained in:
gVisor bot 2023-01-20 17:35:49 +08:00
parent 4db05231a6
commit e555fd65ec

View file

@ -54,8 +54,8 @@ func (h HashedConn) Read(b []byte) (n int, err error) {
} }
func (s *ShadowTLS) read(b []byte) (int, error) { func (s *ShadowTLS) read(b []byte) (int, error) {
buf := pool.Get(tlsHeaderLen) var buf [tlsHeaderLen]byte
_, err := io.ReadFull(s.Conn, buf) _, err := io.ReadFull(s.Conn, buf[:])
if err != nil { if err != nil {
return 0, fmt.Errorf("shadowtls read failed %w", err) return 0, fmt.Errorf("shadowtls read failed %w", err)
} }
@ -63,7 +63,6 @@ func (s *ShadowTLS) read(b []byte) (int, error) {
return 0, fmt.Errorf("invalid shadowtls header %v", buf) return 0, fmt.Errorf("invalid shadowtls header %v", buf)
} }
length := int(binary.BigEndian.Uint16(buf[3:])) length := int(binary.BigEndian.Uint16(buf[3:]))
pool.Put(buf)
if length > len(b) { if length > len(b) {
n, err := s.Conn.Read(b) n, err := s.Conn.Read(b)