@@ -374,13 +374,13 @@
GUtilData* val)
{
GUtilRange tmp = *in;
- gsize tag, len;
+ guint64 tag, len;
if (giorpc_unsigned_mbn_decode(&tmp, &tag) && tag <= UINT_MAX &&
giorpc_unsigned_mbn_decode(&tmp, &len) && (tmp.end - tmp.ptr) >= len) {
if (val) {
val->bytes = tmp.ptr;
- val->size = len;
+ val->size = (gsize) len;
}
in->ptr = tmp.ptr + len;
return (guint) tag;
|
@@ -693,6 +693,9 @@
0x02, 0x03, 0x04, 0x05, 0x06,
0x7f, 0x00
};
+static const guint8 test_tlvs_decode_input_tags_x[] = {
+ 0x7f, 0x00
+};
static const guint8 test_tlvs_decode_input_garbage[] = {
0x01, 0x02, 0x03, 0x04,
0x05
@@ -714,21 +717,26 @@
test_tlvs_decode_tags_1, GIORPC_TLVS_DECODE_NO_FLAGS,
GIORPC_TLVS_DECODE_DUPLICATE_TAG, NULL
},{
- TEST_CASE("unknown_tag/1"),
+ TEST_CASE("unknown_tag/fail/1"),
{ TEST_ARRAY_AND_SIZE(test_tlvs_decode_input_tags_2_x) },
test_tlvs_decode_tags_too_many, GIORPC_TLVS_DECODE_NO_FLAGS,
GIORPC_TLVS_DECODE_UNKNOWN_TAG, NULL
},{
- TEST_CASE("unknown_tag/2"),
+ TEST_CASE("unknown_tag/fail/2"),
{ TEST_ARRAY_AND_SIZE(test_tlvs_decode_input_tags_2_x) },
test_tlvs_decode_tags_1_2, GIORPC_TLVS_DECODE_NO_FLAGS,
GIORPC_TLVS_DECODE_UNKNOWN_TAG, NULL
},{
- TEST_CASE("unknown_tag/ok"),
+ TEST_CASE("unknown_tag/ok/1"),
{ TEST_ARRAY_AND_SIZE(test_tlvs_decode_input_tags_2_x) },
test_tlvs_decode_tags_1_2, GIORPC_TLVS_DECODE_FLAG_SKIP_UNKNOWN_TAGS,
0x02, test_tlvs_decode_output_x_2
},{
+ TEST_CASE("unknown_tag/ok/2"),
+ { TEST_ARRAY_AND_SIZE(test_tlvs_decode_input_tags_x) },
+ test_tlvs_decode_tags_1_2, GIORPC_TLVS_DECODE_FLAG_SKIP_UNKNOWN_TAGS,
+ 0, NULL
+ },{
TEST_CASE("garbage"),
{ TEST_ARRAY_AND_SIZE(test_tlvs_decode_input_garbage) },
test_tlvs_decode_tags_1, GIORPC_TLVS_DECODE_NO_FLAGS,
|