Fixed dlmstp ringbuffer initialization corruption (#865)
* Added ringbuf API for testing. * Fixed basic ms/tp datalink packet ringbuffer initialization buffer overrun. * Added basic ms/tp datalink unit test * Added Ringbuf_Initialize() API with buffer size checking. * Changed examples to use Ringbuf_Initialize() API for buffer size checking.
This commit is contained in:
@@ -79,6 +79,7 @@ static void testRingAroundBuffer(
|
||||
*/
|
||||
static void testRingBuf(
|
||||
uint8_t *data_store,
|
||||
unsigned data_store_size,
|
||||
uint8_t *data_element,
|
||||
unsigned element_size,
|
||||
unsigned element_count)
|
||||
@@ -89,8 +90,8 @@ static void testRingBuf(
|
||||
unsigned data_index;
|
||||
bool status;
|
||||
|
||||
status =
|
||||
Ringbuf_Init(&test_buffer, data_store, element_size, element_count);
|
||||
status = Ringbuf_Initialize(
|
||||
&test_buffer, data_store, data_store_size, element_size, element_count);
|
||||
if (!status) {
|
||||
return;
|
||||
}
|
||||
@@ -176,7 +177,7 @@ static void testRingBufSizeSmall(void)
|
||||
uint8_t data_store[sizeof(data_element) * NEXT_POWER_OF_2(16)];
|
||||
|
||||
testRingBuf(
|
||||
data_store, data_element, sizeof(data_element),
|
||||
data_store, sizeof(data_store), data_element, sizeof(data_element),
|
||||
sizeof(data_store) / sizeof(data_element));
|
||||
}
|
||||
|
||||
@@ -193,7 +194,7 @@ static void testRingBufSizeLarge(void)
|
||||
uint8_t data_store[sizeof(data_element) * NEXT_POWER_OF_2(99)];
|
||||
|
||||
testRingBuf(
|
||||
data_store, data_element, sizeof(data_element),
|
||||
data_store, sizeof(data_store), data_element, sizeof(data_element),
|
||||
sizeof(data_store) / sizeof(data_element));
|
||||
}
|
||||
|
||||
@@ -211,8 +212,8 @@ static void testRingBufSizeInvalid(void)
|
||||
uint8_t data_store[sizeof(data_element) * 99];
|
||||
|
||||
zassert_false(
|
||||
Ringbuf_Init(
|
||||
&test_buffer, data_store, sizeof(data_element),
|
||||
Ringbuf_Initialize(
|
||||
&test_buffer, data_store, sizeof(data_store), sizeof(data_element),
|
||||
sizeof(data_store) / sizeof(data_element)),
|
||||
NULL);
|
||||
}
|
||||
@@ -242,6 +243,7 @@ static void testRingBufPowerOfTwo(void)
|
||||
*/
|
||||
static bool testRingBufNextElement(
|
||||
uint8_t *data_store,
|
||||
unsigned data_store_size,
|
||||
uint8_t *data_element,
|
||||
unsigned element_size,
|
||||
unsigned element_count)
|
||||
@@ -251,8 +253,8 @@ static bool testRingBufNextElement(
|
||||
unsigned index;
|
||||
unsigned data_index;
|
||||
bool status;
|
||||
status =
|
||||
Ringbuf_Init(&test_buffer, data_store, element_size, element_count);
|
||||
status = Ringbuf_Initialize(
|
||||
&test_buffer, data_store, data_store_size, element_size, element_count);
|
||||
if (!status) {
|
||||
return false;
|
||||
}
|
||||
@@ -348,7 +350,7 @@ static void testRingBufNextElementSizeSmall(void)
|
||||
uint8_t data_store[sizeof(data_element) * NEXT_POWER_OF_2(16)];
|
||||
|
||||
status = testRingBufNextElement(
|
||||
data_store, data_element, sizeof(data_element),
|
||||
data_store, sizeof(data_store), data_element, sizeof(data_element),
|
||||
sizeof(data_store) / sizeof(data_element));
|
||||
zassert_true(status, NULL);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user