mavlink: fixed nullptr dereferencing in case unknown mavlink message is

forwarded

Signed-off-by: Roman <bapstroman@gmail.com>
This commit is contained in:
Roman 2018-07-27 17:22:31 +02:00 committed by Lorenz Meier
parent 96443b3cf3
commit e1bca8d01a
1 changed files with 14 additions and 3 deletions

View File

@ -516,9 +516,20 @@ Mavlink::forward_message(const mavlink_message_t *msg, Mavlink *self)
if (inst != self) { if (inst != self) {
const mavlink_msg_entry_t *meta = mavlink_get_msg_entry(msg->msgid); const mavlink_msg_entry_t *meta = mavlink_get_msg_entry(msg->msgid);
int target_system_id = 0;
int target_component_id = 233;
// might be nullptr if message is unknown
if (meta) {
// Extract target system and target component if set // Extract target system and target component if set
unsigned target_system_id = (meta->target_system_ofs != 0) ? ((uint8_t *)msg)[meta->target_system_ofs] : 0; if (meta->target_system_ofs != 0) {
unsigned target_component_id = (meta->target_component_ofs != 0) ? ((uint8_t *)msg)[meta->target_component_ofs] : 233; target_system_id = ((uint8_t *)msg)[meta->target_system_ofs];
}
if (meta->target_component_ofs != 0) {
target_component_id = ((uint8_t *)msg)[meta->target_component_ofs];
}
}
// Broadcast or addressing this system and not trying to talk // Broadcast or addressing this system and not trying to talk
// to the autopilot component -> pass on to other components // to the autopilot component -> pass on to other components