From 28de333b6ecb4d822c238f059dc195c0b48cfa03 Mon Sep 17 00:00:00 2001 From: Mateusz Klatecki <47118568+MateuszKlatecki@users.noreply.github.com> Date: Mon, 31 Jul 2023 18:24:25 +0200 Subject: [PATCH] Fix encode_context_bacnet_address (#464) the original solution caused that after encode_bacnet_address the apdu pointer was moved too far because apdu_len took into account the length of the opening_tag --- src/bacnet/bacdcode.c | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/src/bacnet/bacdcode.c b/src/bacnet/bacdcode.c index a6a0682f..588b8e46 100644 --- a/src/bacnet/bacdcode.c +++ b/src/bacnet/bacdcode.c @@ -3044,19 +3044,19 @@ int decode_bacnet_address(uint8_t *apdu, BACNET_ADDRESS *destination) int encode_context_bacnet_address( uint8_t *apdu, uint8_t tag_number, BACNET_ADDRESS *destination) { - int apdu_len = 0; + int len = 0; + uint8_t *apdu_offset = NULL; - apdu_len += encode_opening_tag(apdu, tag_number); + len += encode_opening_tag(apdu, tag_number); if (apdu) { - apdu += apdu_len; + apdu_offset = &apdu[len]; } - apdu_len += encode_bacnet_address(apdu, destination); + len += encode_bacnet_address(apdu_offset, destination); if (apdu) { - apdu += apdu_len; + apdu_offset = &apdu[len]; } - apdu_len += encode_closing_tag(apdu, tag_number); - - return apdu_len; + len += encode_closing_tag(apdu_offset, tag_number); + return len; } /* BACnetAddress */