Переглянути джерело

Merge pull request #25 from sgrimee/patch-1

Read all data before decoding incoming packet
tags/0.2
Xing 10 роки тому
джерело
коміт
9729de017c
2 змінених файлів з 5 додано та 0 видалено
  1. +1
    -0
      worker/agent.go
  2. +4
    -0
      worker/inpack.go

+ 1
- 0
worker/agent.go Переглянути файл

@@ -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


+ 4
- 0
worker/inpack.go Переглянути файл

@@ -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)


Завантаження…
Відмінити
Зберегти