|
@@ -8,6 +8,7 @@ import (
|
|
|
"v2ray.com/core/common"
|
|
"v2ray.com/core/common"
|
|
|
"v2ray.com/core/common/buf"
|
|
"v2ray.com/core/common/buf"
|
|
|
"v2ray.com/core/common/bytespool"
|
|
"v2ray.com/core/common/bytespool"
|
|
|
|
|
+ "v2ray.com/core/common/errors"
|
|
|
"v2ray.com/core/common/protocol"
|
|
"v2ray.com/core/common/protocol"
|
|
|
)
|
|
)
|
|
|
|
|
|
|
@@ -278,7 +279,11 @@ func (w *AuthenticationWriter) writeStream(mb buf.MultiBuffer) error {
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
payloadSize := buf.Size - int32(w.auth.Overhead()) - w.sizeParser.SizeBytes() - maxPadding
|
|
payloadSize := buf.Size - int32(w.auth.Overhead()) - w.sizeParser.SizeBytes() - maxPadding
|
|
|
- mb2Write := make(buf.MultiBuffer, 0, len(mb)+10)
|
|
|
|
|
|
|
+ if len(mb)+10 > 64*1024*1024 {
|
|
|
|
|
+ return errors.New("value too large")
|
|
|
|
|
+ }
|
|
|
|
|
+ sliceSize := len(mb) + 10
|
|
|
|
|
+ mb2Write := make(buf.MultiBuffer, 0, sliceSize)
|
|
|
|
|
|
|
|
temp := buf.New()
|
|
temp := buf.New()
|
|
|
defer temp.Release()
|
|
defer temp.Release()
|
|
@@ -307,7 +312,11 @@ func (w *AuthenticationWriter) writeStream(mb buf.MultiBuffer) error {
|
|
|
func (w *AuthenticationWriter) writePacket(mb buf.MultiBuffer) error {
|
|
func (w *AuthenticationWriter) writePacket(mb buf.MultiBuffer) error {
|
|
|
defer buf.ReleaseMulti(mb)
|
|
defer buf.ReleaseMulti(mb)
|
|
|
|
|
|
|
|
- mb2Write := make(buf.MultiBuffer, 0, len(mb)+1)
|
|
|
|
|
|
|
+ if len(mb)+1 > 64*1024*1024 {
|
|
|
|
|
+ return errors.New("value too large")
|
|
|
|
|
+ }
|
|
|
|
|
+ sliceSize := len(mb) + 1
|
|
|
|
|
+ mb2Write := make(buf.MultiBuffer, 0, sliceSize)
|
|
|
|
|
|
|
|
for _, b := range mb {
|
|
for _, b := range mb {
|
|
|
if b.IsEmpty() {
|
|
if b.IsEmpty() {
|