From f1124e6783a6eca54bbe697223adbcbc5336d660 Mon Sep 17 00:00:00 2001 From: liquidraver <504870+liquidraver@users.noreply.github.com> Date: Wed, 1 Jul 2026 21:03:35 +0200 Subject: [PATCH] Fix path-discovery response wrongly rejected at non-default path_hash_mode (2/3-byte hashes) --- zephcore/app/CompanionMesh.cpp | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/zephcore/app/CompanionMesh.cpp b/zephcore/app/CompanionMesh.cpp index 1ac856d..f191e00 100644 --- a/zephcore/app/CompanionMesh.cpp +++ b/zephcore/app/CompanionMesh.cpp @@ -303,7 +303,7 @@ bool CompanionMesh::onContactPathRecv(ContactInfo &from, uint8_t *in_path, uint8 if (tag == _pending_discovery) { _pending_discovery = 0; - if (in_path_len <= MAX_PATH_SIZE && out_path_len <= MAX_PATH_SIZE) { + if (mesh::Packet::isValidPathLen(in_path_len) && mesh::Packet::isValidPathLen(out_path_len)) { uint8_t rsp[172]; int i = 0; rsp[i++] = PUSH_CODE_PATH_DISCOVERY_RESP; @@ -311,11 +311,9 @@ bool CompanionMesh::onContactPathRecv(ContactInfo &from, uint8_t *in_path, uint8 memcpy(&rsp[i], from.id.pub_key, 6); i += 6; rsp[i++] = out_path_len; - memcpy(&rsp[i], out_path, out_path_len); - i += out_path_len; + i += mesh::Packet::writePath(&rsp[i], out_path, MAX_PATH_SIZE, out_path_len); rsp[i++] = in_path_len; - memcpy(&rsp[i], in_path, in_path_len); - i += in_path_len; + i += mesh::Packet::writePath(&rsp[i], in_path, MAX_PATH_SIZE, in_path_len); sendPush(rsp[0], &rsp[1], i - 1); } else { LOG_WRN("onContactPathRecv: invalid path sizes: out=%d in=%d",