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

@@ -6,4 +6,4 @@ pca9685:
device: "dev/i2c-2" device: "dev/i2c-2"
address: 0x40 address: 0x40
minpulse: 0 minpulse: 0
maxpulse: 65535 maxpulse: 4095

View File

@@ -56,7 +56,7 @@ func check(e error) {
func (daemon *LedDaemon) receive() { func (daemon *LedDaemon) receive() {
for { for {
message := make([]byte, 4096) message := make([]byte, 8192)
length, err := daemon.socket.Read(message) length, err := daemon.socket.Read(message)
if err != nil { if err != nil {
daemon.socket.Close() daemon.socket.Close()
@@ -70,6 +70,11 @@ func (daemon *LedDaemon) receive() {
log.Debugf("[%s] Reading protobuf after %d (len=%d)", daemon.socket.RemoteAddr(), i, msgLen) 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{} backendMsg := &ledd.BackendWrapperMessage{}
err = proto.Unmarshal(message[i+4:i+msgLen+4], backendMsg) err = proto.Unmarshal(message[i+4:i+msgLen+4], backendMsg)
i += msgLen + 4 i += msgLen + 4