diff --git a/Makefile b/Makefile index 31e3cb19..26d26a95 100644 --- a/Makefile +++ b/Makefile @@ -118,6 +118,7 @@ clean: $(MAKE) -s -C apps/router clean $(MAKE) -s -C apps/router-ipv6 clean $(MAKE) -s -C apps/gateway clean + $(MAKE) -s -C test clean .PHONY: test test: diff --git a/src/bacnet/bacdcode.c b/src/bacnet/bacdcode.c index 98acf2c4..9da65cac 100644 --- a/src/bacnet/bacdcode.c +++ b/src/bacnet/bacdcode.c @@ -1037,7 +1037,11 @@ int decode_context_octet_string( !decode_is_closing_tag(&apdu[len])) { len += decode_tag_number_and_value(&apdu[len], &tag_number, &len_value); - status = octetstring_init(octet_string, &apdu[len], len_value); + if (len_value > 0) { + status = octetstring_init(octet_string, &apdu[len], len_value); + } else { + status = octetstring_init(octet_string, NULL, 0); + } if (status) { len += len_value; diff --git a/src/bacnet/timesync.c b/src/bacnet/timesync.c index faedbb86..ee8349d9 100644 --- a/src/bacnet/timesync.c +++ b/src/bacnet/timesync.c @@ -264,7 +264,11 @@ int timesync_decode_timesync_recipients( if (tag_number != BACNET_APPLICATION_TAG_OCTET_STRING) { return BACNET_STATUS_ABORT; } - len = decode_octet_string(&apdu[0], len_value_type, &octet_string); + len = bacnet_octet_string_decode(&apdu[apdu_len], + max_apdu, len_value_type, &octet_string); + if (len < 0) { + return BACNET_STATUS_ERROR; + } apdu_len += len; if (octetstring_length(&octet_string) == 0) { /* -- A string of length 0 indicates a broadcast */