mirror of
https://github.com/v2fly/v2ray-core.git
synced 2025-01-02 23:47:07 -05:00
fix auth reader buffer overrun
This commit is contained in:
parent
32abea1397
commit
0cf5087852
@ -15,6 +15,7 @@ var (
|
||||
|
||||
errInsufficientBuffer = errors.New("Insufficient buffer.")
|
||||
errInvalidNonce = errors.New("Invalid nonce.")
|
||||
errInvalidLength = errors.New("Invalid buffer size.")
|
||||
)
|
||||
|
||||
type BytesGenerator interface {
|
||||
@ -79,10 +80,14 @@ type AuthenticationReader struct {
|
||||
aggressive bool
|
||||
}
|
||||
|
||||
const (
|
||||
readerBufferSize = 32 * 1024
|
||||
)
|
||||
|
||||
func NewAuthenticationReader(auth Authenticator, reader io.Reader, aggressive bool) *AuthenticationReader {
|
||||
return &AuthenticationReader{
|
||||
auth: auth,
|
||||
buffer: buf.NewLocal(32 * 1024),
|
||||
buffer: buf.NewLocal(readerBufferSize),
|
||||
reader: reader,
|
||||
aggressive: aggressive,
|
||||
}
|
||||
@ -96,6 +101,9 @@ func (v *AuthenticationReader) NextChunk() error {
|
||||
if size > v.buffer.Len()-2 {
|
||||
return errInsufficientBuffer
|
||||
}
|
||||
if size > readerBufferSize-2 {
|
||||
return errInvalidLength
|
||||
}
|
||||
if size == v.auth.Overhead() {
|
||||
return io.EOF
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user