fix: do not use buffer for cmdUpdatePaddingScheme

This commit is contained in:
anytls 2025-02-19 16:17:04 +09:00
parent fab0ce10cb
commit 775f377d45

View file

@ -258,19 +258,18 @@ func (s *Session) recvLoop() error {
}
case cmdUpdatePaddingScheme:
if hdr.Length() > 0 {
buffer := pool.Get(int(hdr.Length()))
if _, err := io.ReadFull(s.conn, buffer); err != nil {
pool.Put(buffer)
// `rawScheme` Do not use buffer to prevent subsequent misuse
rawScheme := make([]byte, int(hdr.Length()))
if _, err := io.ReadFull(s.conn, rawScheme); err != nil {
return err
}
if s.isClient {
if padding.UpdatePaddingScheme(buffer, s.padding) {
log.Infoln("[Update padding succeed] %x\n", md5.Sum(buffer))
if padding.UpdatePaddingScheme(rawScheme, s.padding) {
log.Infoln("[Update padding succeed] %x\n", md5.Sum(rawScheme))
} else {
log.Warnln("[Update padding failed] %x\n", md5.Sum(buffer))
log.Warnln("[Update padding failed] %x\n", md5.Sum(rawScheme))
}
}
pool.Put(buffer)
}
default:
// I don't know what command it is (can't have data)