adjusted maxpulse to match implementation; added buffer overflow protection

This commit is contained in:
2018-06-29 05:32:22 +02:00
parent 9222747d34
commit 1cd57c829e
2 changed files with 8 additions and 3 deletions

View File

@@ -56,7 +56,7 @@ func check(e error) {
func (daemon *LedDaemon) receive() {
for {
message := make([]byte, 4096)
message := make([]byte, 8192)
length, err := daemon.socket.Read(message)
if err != nil {
daemon.socket.Close()
@@ -66,10 +66,15 @@ func (daemon *LedDaemon) receive() {
log.Debugf("[%s] Read %d bytes", daemon.socket.RemoteAddr(), length)
for i := 0; i < length; {
msgLen := int(binary.BigEndian.Uint32(message[i:i+4]))
msgLen := int(binary.BigEndian.Uint32(message[i : i+4]))
log.Debugf("[%s] Reading protobuf after %d (len=%d)", daemon.socket.RemoteAddr(), i, msgLen)
if i+msgLen+4 > len(message)-1 {
log.Warningf("[%s] Buffer overflow. At least one message has been discarded!", daemon.socket.RemoteAddr())
break
}
backendMsg := &ledd.BackendWrapperMessage{}
err = proto.Unmarshal(message[i+4:i+msgLen+4], backendMsg)
i += msgLen + 4