From afd327b322d6cfde93721dfdac3c0ce6d5b2feb6 Mon Sep 17 00:00:00 2001 From: Ramon Roche Date: Thu, 12 Mar 2026 19:56:08 -0700 Subject: [PATCH] fix(mavlink): correct session validation in FTP write and burst operations Use logical OR (||) instead of AND (&&) in _workWrite() and _workBurst() session validation, matching the correct logic already used in _workRead() and _workTerminate(). The AND operator allowed operations to proceed with an invalid session ID as long as a valid file descriptor existed. Signed-off-by: Ramon Roche --- src/modules/mavlink/mavlink_ftp.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/modules/mavlink/mavlink_ftp.cpp b/src/modules/mavlink/mavlink_ftp.cpp index 9c7af5007e..d470d03554 100644 --- a/src/modules/mavlink/mavlink_ftp.cpp +++ b/src/modules/mavlink/mavlink_ftp.cpp @@ -566,7 +566,7 @@ MavlinkFTP::_workRead(PayloadHeader *payload) MavlinkFTP::ErrorCode MavlinkFTP::_workBurst(PayloadHeader *payload, uint8_t target_system_id, uint8_t target_component_id) { - if (payload->session != 0 && _session_info.fd < 0) { + if (payload->session != 0 || _session_info.fd < 0) { PX4_DEBUG("_workBurst: no session or no fd"); return kErrInvalidSession; } @@ -587,7 +587,7 @@ MavlinkFTP::_workBurst(PayloadHeader *payload, uint8_t target_system_id, uint8_t MavlinkFTP::ErrorCode MavlinkFTP::_workWrite(PayloadHeader *payload) { - if (payload->session != 0 && _session_info.fd < 0) { + if (payload->session != 0 || _session_info.fd < 0) { PX4_DEBUG("_workWrite: no session or no fd"); return kErrInvalidSession; }