From 88489ae8bdc84226a2e6df510b8471ffdf5dec71 Mon Sep 17 00:00:00 2001 From: Julian Oes Date: Fri, 5 Nov 2021 14:20:09 -0700 Subject: [PATCH] mavlink: Check target for mavlink shell The SERIAL_CONTROL MAVLink message now contains a target_system and target_component field that we should check. Without this we might be answering to a command on the network that is meant for another system. --- mavlink/include/mavlink/v2.0 | 2 +- src/modules/mavlink/mavlink_receiver.cpp | 8 ++++++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/mavlink/include/mavlink/v2.0 b/mavlink/include/mavlink/v2.0 index f03d91ae93..5571ffbcd6 160000 --- a/mavlink/include/mavlink/v2.0 +++ b/mavlink/include/mavlink/v2.0 @@ -1 +1 @@ -Subproject commit f03d91ae932dd718d81f851b584dbd21cffafdd2 +Subproject commit 5571ffbcd67e19ee6c6301fe13712856906525c2 diff --git a/src/modules/mavlink/mavlink_receiver.cpp b/src/modules/mavlink/mavlink_receiver.cpp index ac6703d809..38c1c3bc7e 100644 --- a/src/modules/mavlink/mavlink_receiver.cpp +++ b/src/modules/mavlink/mavlink_receiver.cpp @@ -1768,6 +1768,14 @@ MavlinkReceiver::handle_message_serial_control(mavlink_message_t *msg) mavlink_serial_control_t serial_control_mavlink; mavlink_msg_serial_control_decode(msg, &serial_control_mavlink); + // Check if the message is targeted at us. + if ((serial_control_mavlink.target_system != 0 && + mavlink_system.sysid != serial_control_mavlink.target_system) || + (serial_control_mavlink.target_component != 0 && + mavlink_system.compid != serial_control_mavlink.target_component)) { + return; + } + // we only support shell commands if (serial_control_mavlink.device != SERIAL_CONTROL_DEV_SHELL || (serial_control_mavlink.flags & SERIAL_CONTROL_FLAG_REPLY)) {