Bugfix/service request refactor size check (#553)

* refactor service requests from service header

* add APDU size checking and length feature

* add unit tests to check for length when passing NULL buffer

---------

Co-authored-by: Steve Karg <skarg@users.sourceforge.net>
This commit is contained in:
Steve Karg
2024-01-05 08:59:45 -06:00
committed by GitHub
parent 5ca14e5320
commit bb081d28da
39 changed files with 2614 additions and 1514 deletions
+20 -12
View File
@@ -31,27 +31,35 @@
#include "bacnet/bacdef.h"
#include "bacnet/bacstr.h"
typedef struct {
uint32_t processId;
BACNET_CHARACTER_STRING requestingSrc;
BACNET_LIFE_SAFETY_OPERATION operation;
BACNET_OBJECT_ID targetObject;
bool use_target:1;
} BACNET_LSO_DATA;
#ifdef __cplusplus
extern "C" {
#endif /* __cplusplus */
/* Life Safety Operation Service */
typedef struct {
uint32_t processId;
BACNET_CHARACTER_STRING requestingSrc;
BACNET_LIFE_SAFETY_OPERATION operation;
BACNET_OBJECT_ID targetObject;
bool use_target:1;
} BACNET_LSO_DATA;
BACNET_STACK_EXPORT
int lso_encode_apdu(
uint8_t * apdu,
uint8_t invoke_id,
BACNET_LSO_DATA * data);
/* decode the service request only */
BACNET_STACK_EXPORT
int life_safety_operation_encode(
uint8_t *apdu,
BACNET_LSO_DATA *data);
BACNET_STACK_EXPORT
size_t life_safety_operation_request_encode(
uint8_t *apdu,
size_t apdu_size,
BACNET_LSO_DATA *data);
BACNET_STACK_EXPORT
int lso_decode_service_request(
uint8_t * apdu,