mirror of
https://github.com/XTLS/Xray-core.git
synced 2024-12-22 19:33:32 +02:00
Make sure that 0 <= b.start <= b.end
Fixes https://github.com/XTLS/Xray-core/issues/1501
This commit is contained in:
parent
ed960cc885
commit
7b8ff01114
1 changed files with 15 additions and 0 deletions
|
@ -160,6 +160,19 @@ func (b *Buffer) BytesTo(to int32) []byte {
|
|||
return b.v[b.start : b.start+to]
|
||||
}
|
||||
|
||||
// Check makes sure that 0 <= b.start <= b.end.
|
||||
func (b *Buffer) Check() {
|
||||
if b.start < 0 {
|
||||
b.start = 0
|
||||
}
|
||||
if b.end < 0 {
|
||||
b.end = 0
|
||||
}
|
||||
if b.start > b.end {
|
||||
b.start = b.end
|
||||
}
|
||||
}
|
||||
|
||||
// Resize cuts the buffer at the given position.
|
||||
func (b *Buffer) Resize(from, to int32) {
|
||||
if from < 0 {
|
||||
|
@ -173,6 +186,7 @@ func (b *Buffer) Resize(from, to int32) {
|
|||
}
|
||||
b.end = b.start + to
|
||||
b.start += from
|
||||
b.Check()
|
||||
}
|
||||
|
||||
// Advance cuts the buffer at the given position.
|
||||
|
@ -181,6 +195,7 @@ func (b *Buffer) Advance(from int32) {
|
|||
from += b.Len()
|
||||
}
|
||||
b.start += from
|
||||
b.Check()
|
||||
}
|
||||
|
||||
// Len returns the length of the buffer content.
|
||||
|
|
Loading…
Reference in a new issue