diff --git a/source/jobs.c b/source/jobs.c index fbe2ccc2..66f5c044 100644 --- a/source/jobs.c +++ b/source/jobs.c @@ -46,6 +46,14 @@ #endif #define CONST_STRLEN( x ) ( sizeof( ( x ) ) - 1U ) +/** + * @brief Get the length on an array. + */ +#ifdef ARRAY_LENGTH +#undef ARRAY_LENGTH +#endif +#define ARRAY_LENGTH( x ) ( sizeof( ( x ) ) / sizeof( ( x )[ 0 ] ) ) + /** * @brief Table of topic API strings in JobsTopic_t order. */ @@ -817,7 +825,7 @@ size_t Jobs_UpdateMsg( JobCurrentStatus_t status, char * buffer, size_t bufferSize ) { - static const char * const jobStatusString[ 5U ] = + static const char * const jobStatusString[] = { "QUEUED", "IN_PROGRESS", @@ -826,7 +834,7 @@ size_t Jobs_UpdateMsg( JobCurrentStatus_t status, "REJECTED" }; - static const size_t jobStatusStringLengths[ 5U ] = + static const size_t jobStatusStringLengths[] = { CONST_STRLEN( "QUEUED" ), CONST_STRLEN( "IN_PROGRESS" ), @@ -835,6 +843,8 @@ size_t Jobs_UpdateMsg( JobCurrentStatus_t status, CONST_STRLEN( "REJECTED" ) }; + assert( ( ( size_t ) status ) < ARRAY_LENGTH( jobStatusString ) ); + size_t start = 0U; if( ( expectedVersion != NULL ) && ( expectedVersionLength > 0U ) && ( bufferSize >= @@ -867,18 +877,20 @@ bool Jobs_IsJobUpdateStatus( const char * topic, const size_t thingNameLength, JobUpdateStatus_t expectedStatus ) { - static const char * const jobUpdateStatusString[ 2U ] = + static const char * const jobUpdateStatusString[] = { "accepted", "rejected" }; - static const size_t jobUpdateStatusStringLengths[ 2U ] = + static const size_t jobUpdateStatusStringLengths[] = { CONST_STRLEN( "accepted" ), CONST_STRLEN( "rejected" ) }; + assert( ( ( size_t ) expectedStatus ) < ARRAY_LENGTH( jobUpdateStatusString ) ); + /* Max suffix size = max topic size - "$aws/" prefix */ size_t suffixBufferLength = ( TOPIC_BUFFER_SIZE - CONST_STRLEN( "$aws/" ) ); char suffixBuffer[ TOPIC_BUFFER_SIZE - CONST_STRLEN( "$aws/" ) ] = { '\0' };