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.
This commit is contained in:
Julian Oes 2021-11-05 14:20:09 -07:00 committed by Lorenz Meier
parent 96101a9c11
commit 88489ae8bd
2 changed files with 9 additions and 1 deletions

@ -1 +1 @@
Subproject commit f03d91ae932dd718d81f851b584dbd21cffafdd2
Subproject commit 5571ffbcd67e19ee6c6301fe13712856906525c2

View File

@ -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)) {