mirror of https://github.com/v2ray/v2ray-core
fix buffer usage in vmess out
parent
84464e863d
commit
1239b1a57b
|
@ -99,6 +99,7 @@ func handleRequest(conn net.Conn, request *protocol.VMessRequest, firstPacket v2
|
|||
encryptRequestWriter := v2crypto.NewCryptionWriter(aesStream, conn)
|
||||
|
||||
buffer := alloc.NewBuffer().Clear()
|
||||
defer buffer.Clear()
|
||||
buffer, err = request.ToBytes(user.NewTimeHash(user.HMACHash{}), user.GenerateRandomInt64InRange, buffer)
|
||||
if err != nil {
|
||||
log.Error("VMessOut: Failed to serialize VMess request: %v", err)
|
||||
|
@ -119,7 +120,6 @@ func handleRequest(conn net.Conn, request *protocol.VMessRequest, firstPacket v2
|
|||
firstChunk.Release()
|
||||
|
||||
_, err = conn.Write(buffer.Value)
|
||||
buffer.Release()
|
||||
if err != nil {
|
||||
log.Error("VMessOut: Failed to write VMess request: %v", err)
|
||||
return
|
||||
|
@ -153,6 +153,7 @@ func handleResponse(conn net.Conn, request *protocol.VMessRequest, output chan<-
|
|||
buffer, err := v2net.ReadFrom(decryptResponseReader, nil)
|
||||
if err != nil {
|
||||
log.Error("VMessOut: Failed to read VMess response (%d bytes): %v", buffer.Len(), err)
|
||||
buffer.Release()
|
||||
return
|
||||
}
|
||||
if buffer.Len() < 4 || !headerMatch(request, buffer.Value[:2]) {
|
||||
|
|
|
@ -131,6 +131,9 @@ func (this *VMessRequestReader) Read(reader io.Reader) (*VMessRequest, error) {
|
|||
return nil, err
|
||||
}
|
||||
domainLength := int(buffer.Value[41])
|
||||
if domainLength == 0 {
|
||||
return nil, transport.CorruptedPacket
|
||||
}
|
||||
_, err = v2net.ReadAllBytes(decryptor, buffer.Value[42:42+domainLength])
|
||||
if err != nil {
|
||||
return nil, err
|
||||
|
|
Loading…
Reference in New Issue