Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
generator/C: Don't parse messages outside CRC_EXTRA
I have been wondering for a while why I sometimes see MAVLink components "appear" with random sysid/compid when I leave a system running for some time. Today I finally caught the bytes of such a case, the offending bytes were: {253, 0, 1, 0, 0, 3, 1, 1, 42, 0, 185, 186, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; This is msgid 10753 from sysid 3, compid 1 with payload len 0. It's presumably signed, hence the trailing zeros. It turns out the msgid is way out of the CRC_EXTRA table and hence the mavlink_get_msg_entry(msgid) function returns NULL. In that case 0 is ignored and we carry on parsing. My suggestion is to reset parsing when we don't know the CRC_EXTRA of the message to avoid flagging noise as a valid message. Included fixup: In case a message is forwarded (even with unknown/bad CRC) we need to copy the first CRC byte.
- Loading branch information