From 5c8e3406cb3fbac931f7c3098bd034d49061702c Mon Sep 17 00:00:00 2001 From: Steve Karg Date: Wed, 15 Apr 2020 00:03:06 -0500 Subject: [PATCH] Fixed BACnet integer decode for 40-48-56 bits (#71) Co-authored-by: Steve Karg --- src/bacnet/bacint.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/bacnet/bacint.c b/src/bacnet/bacint.c index 8a2d030b..ebb5df06 100644 --- a/src/bacnet/bacint.c +++ b/src/bacnet/bacint.c @@ -128,7 +128,7 @@ int encode_unsigned40(uint8_t *buffer, uint64_t value) int decode_unsigned40(uint8_t *buffer, uint64_t *value) { if (value) { - *value |= + *value = ((uint64_t)((((uint64_t)buffer[0]) << 32) & 0x000000ff00000000)); *value |= ((uint64_t)((((uint64_t)buffer[1]) << 24) & 0x00000000ff000000)); @@ -169,7 +169,7 @@ int encode_unsigned48(uint8_t *buffer, uint64_t value) int decode_unsigned48(uint8_t *buffer, uint64_t *value) { if (value) { - *value |= + *value = ((uint64_t)((((uint64_t)buffer[0]) << 40) & 0x0000ff0000000000)); *value |= ((uint64_t)((((uint64_t)buffer[1]) << 32) & 0x000000ff00000000)); @@ -213,7 +213,7 @@ int encode_unsigned56(uint8_t *buffer, uint64_t value) int decode_unsigned56(uint8_t *buffer, uint64_t *value) { if (value) { - *value |= + *value = ((uint64_t)((((uint64_t)buffer[0]) << 48) & 0x00ff000000000000)); *value |= ((uint64_t)((((uint64_t)buffer[1]) << 40) & 0x0000ff0000000000));