Merge pull request #25 from sgrimee/patch-1
Read all data before decoding incoming packet
This commit is contained in:
commit
9729de017c
@ -74,6 +74,7 @@ func (a *agent) work() {
|
||||
}
|
||||
if inpack, l, err = decodeInPack(data); err != nil {
|
||||
a.worker.err(err)
|
||||
leftdata = data
|
||||
continue
|
||||
}
|
||||
leftdata = nil
|
||||
|
@ -91,6 +91,10 @@ func decodeInPack(data []byte) (inpack *inPack, l int, err error) {
|
||||
return
|
||||
}
|
||||
dl := int(binary.BigEndian.Uint32(data[8:12]))
|
||||
if len(data) < (dl + minPacketLength) {
|
||||
err = fmt.Errorf("Not enough data: %V", data)
|
||||
return
|
||||
}
|
||||
dt := data[minPacketLength : dl+minPacketLength]
|
||||
if len(dt) != int(dl) { // length not equal
|
||||
err = fmt.Errorf("Invalid data: %V", data)
|
||||
|
Loading…
Reference in New Issue
Block a user