added tests for length limit
git-svn-id: https://asn1c.svn.sourceforge.net/svnroot/asn1c/trunk@444 59561ff5-6e30-0410-9f3c-9617f08c8826
diff --git a/skeletons/tests/check-length.c b/skeletons/tests/check-length.c
index 6176ddd..c01c5dd 100644
--- a/skeletons/tests/check-length.c
+++ b/skeletons/tests/check-length.c
@@ -53,12 +53,12 @@
}
buf_off = 0;
- erval = der_encode(&asn1_DEF_OCTET_STRING,
+ erval = der_encode(&asn_DEF_OCTET_STRING,
os, write_to_buf, 0);
assert(erval.encoded == buf_off);
assert(buf_off > size);
- rval = ber_decode(&asn1_DEF_OCTET_STRING, (void **)&nos, buf, buf_off);
+ rval = ber_decode(0, &asn_DEF_OCTET_STRING, (void **)&nos, buf, buf_off);
assert(rval.code == RC_OK);
assert(rval.consumed == buf_off);
@@ -76,12 +76,17 @@
}
- asn1_DEF_OCTET_STRING.free_struct(&asn1_DEF_OCTET_STRING, os, 0);
- asn1_DEF_OCTET_STRING.free_struct(&asn1_DEF_OCTET_STRING, nos, 0);
+ asn_DEF_OCTET_STRING.free_struct(&asn_DEF_OCTET_STRING, os, 0);
+ asn_DEF_OCTET_STRING.free_struct(&asn_DEF_OCTET_STRING, nos, 0);
}
int
main() {
+ uint8_t buf1[] = { 0x85, 0x00, 0x01, 0x02, 0x03, 0x04 };
+ uint8_t buf2[] = { 0x85, 0x00, 0x7f, 0xff, 0x03, 0x04 };
+ uint8_t buf3[] = { 0x85, 0x00, 0x7f, 0xff, 0xff, 0x04 };
+ ber_tlv_len_t tlv_len;
+ ssize_t ret;
int i;
for(i = 0; i < 66000; i++) {
@@ -89,5 +94,17 @@
check(i);
}
+ ret = ber_fetch_length(0, buf1, sizeof(buf1), &tlv_len);
+ printf("ret=%d, len=%d\n", ret, tlv_len);
+ assert(ret == sizeof(buf1));
+
+ ret = ber_fetch_length(0, buf2, sizeof(buf2), &tlv_len);
+ printf("ret=%d, len=%d\n", ret, tlv_len);
+ assert(ret == sizeof(buf2));
+
+ ret = ber_fetch_length(0, buf3, sizeof(buf3), &tlv_len);
+ printf("ret=%d\n", ret);
+ assert(ret == -1);
+
return 0;
}