Detect invalid sizes when encoding bytes fields.

This commit is contained in:
Petteri Aimonen
2013-10-24 21:45:39 +03:00
parent 86d6983156
commit ed564186e1
3 changed files with 24 additions and 3 deletions

View File

@@ -172,9 +172,9 @@ int main()
struct { size_t size; uint8_t bytes[5]; } value = {5, {'x', 'y', 'z', 'z', 'y'}};
COMMENT("Test pb_enc_bytes")
TEST(WRITES(pb_enc_bytes(&s, NULL, &value), "\x05xyzzy"))
TEST(WRITES(pb_enc_bytes(&s, &BytesMessage_fields[0], &value), "\x05xyzzy"))
value.size = 0;
TEST(WRITES(pb_enc_bytes(&s, NULL, &value), "\x00"))
TEST(WRITES(pb_enc_bytes(&s, &BytesMessage_fields[0], &value), "\x00"))
}
{
@@ -258,6 +258,20 @@ int main()
"\x0A\x07\x0A\x05\x01\x02\x03\x04\x05"))
}
{
uint8_t buffer[32];
pb_ostream_t s;
BytesMessage msg = {{3, "xyz"}};
COMMENT("Test pb_encode with bytes message.")
TEST(WRITES(pb_encode(&s, BytesMessage_fields, &msg),
"\x0A\x03xyz"))
msg.data.size = 17; /* More than maximum */
TEST(!pb_encode(&s, BytesMessage_fields, &msg))
}
{
uint8_t buffer[20];
pb_ostream_t s;