mirror of
https://github.com/safing/portbase
synced 2025-09-01 18:19:57 +00:00
Check for zero length requests on container
This commit is contained in:
parent
a53b8e2de6
commit
419b404de9
1 changed files with 16 additions and 3 deletions
|
@ -274,11 +274,17 @@ func (c *Container) PrependLength() {
|
|||
}
|
||||
|
||||
func (c *Container) gather(n int) []byte {
|
||||
// check if first slice holds enough data
|
||||
// Check requested length.
|
||||
if n <= 0 {
|
||||
return nil
|
||||
}
|
||||
|
||||
// Check if the first slice holds enough data.
|
||||
if len(c.compartments[c.offset]) >= n {
|
||||
return c.compartments[c.offset][:n]
|
||||
}
|
||||
// start gathering data
|
||||
|
||||
// Start gathering data.
|
||||
slice := make([]byte, n)
|
||||
copySlice := slice
|
||||
n = 0
|
||||
|
@ -295,6 +301,13 @@ func (c *Container) gather(n int) []byte {
|
|||
}
|
||||
|
||||
func (c *Container) gatherAsContainer(n int) (new *Container) {
|
||||
// Check requested length.
|
||||
if n < 0 {
|
||||
return nil
|
||||
} else if n == 0 {
|
||||
return &Container{}
|
||||
}
|
||||
|
||||
new = &Container{}
|
||||
for i := c.offset; i < len(c.compartments); i++ {
|
||||
if n >= len(c.compartments[i]) {
|
||||
|
@ -383,7 +396,7 @@ func (c *Container) GetNextN32() (uint32, error) {
|
|||
|
||||
// GetNextN64 parses and returns a varint of type uint64.
|
||||
func (c *Container) GetNextN64() (uint64, error) {
|
||||
buf := c.gather(9)
|
||||
buf := c.gather(10)
|
||||
num, n, err := varint.Unpack64(buf)
|
||||
if err != nil {
|
||||
return 0, err
|
||||
|
|
Loading…
Add table
Reference in a new issue