Detect too large varint values when decoding.

Because Issue #139 now allows limiting integer fields, it is good
to check the values received from other protobuf libraries against
the lower limits.
This commit is contained in:
Petteri Aimonen
2015-01-04 12:04:24 +02:00
parent 50c67ecec4
commit a0f0440394
3 changed files with 53 additions and 17 deletions

View File

@@ -123,16 +123,16 @@ int main()
}
{
pb_istream_t s = S("\x01\xFF\xFF\x03");
pb_istream_t s = S("\x01\x00");
pb_field_t f = {1, PB_LTYPE_VARINT, 0, 0, 4, 0, 0};
uint32_t d;
COMMENT("Test pb_dec_varint using uint32_t")
TEST(pb_dec_varint(&s, &f, &d) && d == 1)
/* Verify that no more than data_size is written. */
d = 0;
d = 0xFFFFFFFF;
f.data_size = 1;
TEST(pb_dec_varint(&s, &f, &d) && (d == 0xFF || d == 0xFF000000))
TEST(pb_dec_varint(&s, &f, &d) && (d == 0xFFFFFF00 || d == 0x00FFFFFF))
}
{