From d508f6e4f6d092d9c417ed5f717dd58a511f1b99 Mon Sep 17 00:00:00 2001 From: puddly <32534428+puddly@users.noreply.github.com> Date: Fri, 7 Jun 2024 15:12:19 -0400 Subject: [PATCH] Correctly set the relay index and handle empty source routes --- src/ncp-uart-hw/app.c | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/src/ncp-uart-hw/app.c b/src/ncp-uart-hw/app.c index df722e51..734c1083 100644 --- a/src/ncp-uart-hw/app.c +++ b/src/ncp-uart-hw/app.c @@ -174,16 +174,22 @@ void nc_zigbee_override_append_source_route(EmberNodeId destination, return; } - uint8_t relay_index = 0; - *consumed = true; + + // Empty source routes are not permitted + if (route->num_relays == 0) { + return; + } + + uint8_t relay_index = route->num_relays - 1; + route->active = false; // Disable the route after a single use emberAppendToLinkedBuffers(*header, &route->num_relays, 1); emberAppendToLinkedBuffers(*header, &relay_index, 1); for (uint8_t i = 0; i < route->num_relays; i++) { - emberAppendToLinkedBuffers(*header, (uint8_t*)&route->relays[i], 2); + emberAppendToLinkedBuffers(*header, (uint8_t*)&route->relays[route->num_relays - i - 1], 2); } return;