encode BIT STRING in a minimum number of bits for CANONICAL-UPER
diff --git a/tests/tests-randomized/random-test-driver.c b/tests/tests-randomized/random-test-driver.c
index e2ea475..0b93d96 100644
--- a/tests/tests-randomized/random-test-driver.c
+++ b/tests/tests-randomized/random-test-driver.c
@@ -190,9 +190,6 @@
static void
check_random_roundtrip(enum asn_transfer_syntax syntax, int iterations) {
- char tmp_buffer[512];
- char *buffer = tmp_buffer;
- size_t buffer_size = sizeof(tmp_buffer);
struct encoding_map enc;
for(size_t i = 0; i < sizeof(encodings)/sizeof(encodings[0]); i++) {
@@ -205,6 +202,9 @@
}
for(int i = 0; i < iterations; i++) {
+ char tmp_buffer[512];
+ char *buffer = tmp_buffer;
+ size_t buffer_size = sizeof(tmp_buffer);
T_t *structure = 0;
T_t *decoded_structure = 0;
@@ -228,6 +228,8 @@
exit(EX_SOFTWARE);
}
if(er.encoded > buffer_size && buffer == tmp_buffer) {
+ fprintf(stderr, "Reallocate output buffer %zu -> %zu\n",
+ buffer_size, er.encoded);
buffer = malloc(er.encoded + 1);
assert(buffer);
buffer[er.encoded] = '\0';
@@ -236,7 +238,11 @@
}
break;
}
- assert(er.encoded <= buffer_size);
+ if(er.encoded > buffer_size) {
+ fprintf(stderr, "Data %zd does not fit into buffer %zu\n",
+ er.encoded, buffer_size);
+ assert(er.encoded <= buffer_size);
+ }
asn_dec_rval_t rval =
asn_decode(0, syntax, &asn_DEF_T, (void **)&decoded_structure,
@@ -244,9 +250,9 @@
if(rval.code == RC_OK) {
/* Everything's cool... or is it? Expecting a proper consumed */
if(rval.consumed != er.encoded) {
- fprintf(stderr, "Encoded into %zd, yet consumed %zu",
+ fprintf(stderr, "Encoded into %zd, yet consumed %zu\n",
er.encoded, rval.consumed);
- fprintf(stderr, "Structure:\n");
+ fprintf(stderr, "Original random structure:\n");
asn_fprint(stderr, &asn_DEF_T, structure);
assert(rval.consumed == er.encoded);
exit(EX_SOFTWARE);
@@ -256,7 +262,7 @@
"Decoding %zu bytes of T yielded %s after byte %zu\n",
er.encoded, rval.code == RC_FAIL ? "RC_FAIL" : "RC_WMORE",
rval.consumed);
- fprintf(stderr, "Structure:\n");
+ fprintf(stderr, "Original random structure:\n");
asn_fprint(stderr, &asn_DEF_T, structure);
exit(EX_SOFTWARE);
}
@@ -278,8 +284,6 @@
if(buffer != tmp_buffer) {
free(buffer);
- buffer = tmp_buffer;
- buffer_size = sizeof(tmp_buffer);
}
if(i < 5) {