Check array max size when encoding.
Update issue 90 Status: FixedInGit
This commit is contained in:
@@ -95,6 +95,9 @@ static bool checkreturn encode_array(pb_ostream_t *stream, const pb_field_t *fie
|
|||||||
if (count == 0)
|
if (count == 0)
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
|
if (count > field->array_size)
|
||||||
|
PB_RETURN_ERROR(stream, "array max size exceeded");
|
||||||
|
|
||||||
/* We always pack arrays if the datatype allows it. */
|
/* We always pack arrays if the datatype allows it. */
|
||||||
if (PB_LTYPE(field->type) <= PB_LTYPE_LAST_PACKABLE)
|
if (PB_LTYPE(field->type) <= PB_LTYPE_LAST_PACKABLE)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -223,6 +223,20 @@ int main()
|
|||||||
TEST(!pb_encode(&s, FloatArray_fields, &msg))
|
TEST(!pb_encode(&s, FloatArray_fields, &msg))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
uint8_t buffer[50];
|
||||||
|
pb_ostream_t s;
|
||||||
|
FloatArray msg = {1, {99.0f}};
|
||||||
|
|
||||||
|
COMMENT("Test array size limit in pb_encode")
|
||||||
|
|
||||||
|
s = pb_ostream_from_buffer(buffer, sizeof(buffer));
|
||||||
|
TEST((msg.data_count = 10) && pb_encode(&s, FloatArray_fields, &msg))
|
||||||
|
|
||||||
|
s = pb_ostream_from_buffer(buffer, sizeof(buffer));
|
||||||
|
TEST((msg.data_count = 11) && !pb_encode(&s, FloatArray_fields, &msg))
|
||||||
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
uint8_t buffer[10];
|
uint8_t buffer[10];
|
||||||
pb_ostream_t s;
|
pb_ostream_t s;
|
||||||
|
|||||||
Reference in New Issue
Block a user