fixed memory leaks in test code
diff --git a/tests/tests-skeletons/check-GeneralizedTime.c b/tests/tests-skeletons/check-GeneralizedTime.c
index 4b1fd18..0aa74b9 100644
--- a/tests/tests-skeletons/check-GeneralizedTime.c
+++ b/tests/tests-skeletons/check-GeneralizedTime.c
@@ -59,6 +59,7 @@
} else {
assert(!expect);
}
+ ASN_STRUCT_FREE(asn_DEF_GeneralizedTime, gt);
}
#define RECODE(foo, bar) recode(__LINE__, foo, bar)
diff --git a/tests/tests-skeletons/check-INTEGER.c b/tests/tests-skeletons/check-INTEGER.c
index 543ae54..d7b38b6 100644
--- a/tests/tests-skeletons/check-INTEGER.c
+++ b/tests/tests-skeletons/check-INTEGER.c
@@ -54,6 +54,7 @@
ret = asn_INTEGER2long(&val, &rlong2);
assert(ret == 0);
assert(rlong == rlong2);
+ ASN_STRUCT_RESET(asn_DEF_INTEGER, &val2);
}
shared_scratch_start = scratch;
@@ -119,6 +120,7 @@
ret = asn_INTEGER2ulong(&val, &rlong2);
assert(ret == 0);
assert(rlong == rlong2);
+ ASN_STRUCT_RESET(asn_DEF_INTEGER, &val2);
}
return;
@@ -155,6 +157,7 @@
if(rc.code != RC_OK) {
assert(tofail);
printf("\tfailed, as expected\n");
+ ASN_STRUCT_FREE(asn_DEF_INTEGER, st);
return;
}
assert(!tofail);
diff --git a/tests/tests-skeletons/check-OCTET_STRING.c b/tests/tests-skeletons/check-OCTET_STRING.c
index bfbfc8f..2581cdc 100644
--- a/tests/tests-skeletons/check-OCTET_STRING.c
+++ b/tests/tests-skeletons/check-OCTET_STRING.c
@@ -48,6 +48,8 @@
} else {
assert(rc.code != RC_OK);
}
+
+ ASN_STRUCT_FREE(*td, st);
}
static char buf[1024];
@@ -78,6 +80,7 @@
printf("Orig: [%s], encoded: [%s], check [%s]\n",
orig, buf, encoded);
assert(strcmp(buf, encoded) == 0);
+ ASN_STRUCT_RESET(asn_DEF_OCTET_STRING, &os);
}
int
diff --git a/tests/tests-skeletons/check-OER-INTEGER.c b/tests/tests-skeletons/check-OER-INTEGER.c
index 5fcd93e..de6da6f 100644
--- a/tests/tests-skeletons/check-OER-INTEGER.c
+++ b/tests/tests-skeletons/check-OER-INTEGER.c
@@ -48,6 +48,7 @@
lineno, control, size);
if(ret.code == code) {
fprintf(stderr, " (That was expected)\n");
+ ASN_STRUCT_FREE(asn_DEF_INTEGER, st);
return;
} else {
fprintf(
@@ -76,6 +77,7 @@
}
fprintf(stderr, "%d: Decode result %" PRIdMAX "\n", lineno, control);
+ ASN_STRUCT_FREE(asn_DEF_INTEGER, st);
}
static void
diff --git a/tests/tests-skeletons/check-OIDs.c b/tests/tests-skeletons/check-OIDs.c
index dac2193..d5873c3 100644
--- a/tests/tests-skeletons/check-OIDs.c
+++ b/tests/tests-skeletons/check-OIDs.c
@@ -57,6 +57,7 @@
printf(" }\n");
assert(alen == ck_len);
+ ASN_STRUCT_FREE(asn_DEF_OBJECT_IDENTIFIER, oid);
}
static void
@@ -101,6 +102,7 @@
assert(arcs[i] == (unsigned long)ck_buf[i]);
}
printf(" }\n");
+ ASN_STRUCT_FREE(asn_DEF_RELATIVE_OID, oid);
}
/*
@@ -142,6 +144,7 @@
fprintf(stderr, "}\n");
}
+ ASN_STRUCT_RESET(asn_DEF_RELATIVE_OID, &oid);
}
/*
@@ -183,7 +186,10 @@
}
fprintf(stderr, "}\n");
}
+
+ ASN_STRUCT_RESET(asn_DEF_RELATIVE_OID, &oid);
}
+
static int
check_speed() {
uint8_t buf[] = { 0x80 | 7, 0x80 | 2, 0x80 | 3, 0x80 | 4, 13 };
@@ -240,18 +246,18 @@
static void check_xer(int expect_arcs, char *xer) {
asn_dec_rval_t rc;
RELATIVE_OID_t *st = 0;
- RELATIVE_OID_t **stp = &st;
long arcs[10];
int ret;
int i;
printf("[%s] => ", xer); fflush(stdout);
rc = asn_DEF_RELATIVE_OID.op->xer_decoder(0,
- &asn_DEF_RELATIVE_OID, (void **)stp, "t",
+ &asn_DEF_RELATIVE_OID, (void **)&st, "t",
xer, strlen(xer));
if(expect_arcs == -1) {
if(rc.code != RC_OK) {
printf("-1\n");
+ ASN_STRUCT_FREE(asn_DEF_RELATIVE_OID, st);
return;
}
}
@@ -262,6 +268,7 @@
assert(ret < 10);
if(expect_arcs == -1) {
assert(ret == -1);
+ ASN_STRUCT_FREE(asn_DEF_RELATIVE_OID, st);
return;
}
for(i = 0; i < ret; i++) {
@@ -272,6 +279,7 @@
}
printf(": %d == %d\n", ret, expect_arcs);
assert(ret == expect_arcs);
+ ASN_STRUCT_FREE(asn_DEF_RELATIVE_OID, st);
}
#define CHECK_OID(n) \
diff --git a/tests/tests-skeletons/check-PER-INTEGER.c b/tests/tests-skeletons/check-PER-INTEGER.c
index 732c284..d2558c9 100644
--- a/tests/tests-skeletons/check-PER-INTEGER.c
+++ b/tests/tests-skeletons/check-PER-INTEGER.c
@@ -112,6 +112,8 @@
asn_INTEGER2long(reconstructed_st, &reconstructed_value);
assert(reconstructed_value == value);
}
+ ASN_STRUCT_RESET(asn_DEF_INTEGER, &st);
+ ASN_STRUCT_FREE(asn_DEF_INTEGER, reconstructed_st);
}
#define CHECK(u, v, l, r, b) \
diff --git a/tests/tests-skeletons/check-REAL.c b/tests/tests-skeletons/check-REAL.c
index c7b8112..f4afd64 100644
--- a/tests/tests-skeletons/check-REAL.c
+++ b/tests/tests-skeletons/check-REAL.c
@@ -124,11 +124,9 @@
reconstr_lens[0] = 0;
reconstr_lens[1] = 0;
- er = xer_encode(&asn_DEF_REAL, &st,
- XER_F_BASIC, callback, 0);
+ er = xer_encode(&asn_DEF_REAL, &st, XER_F_BASIC, callback, 0);
assert(er.encoded == reconstr_lens[0]);
- er = xer_encode(&asn_DEF_REAL, &st,
- XER_F_CANONICAL, callback, (void *)1);
+ er = xer_encode(&asn_DEF_REAL, &st, XER_F_CANONICAL, callback, (void *)1);
assert(er.encoded == reconstr_lens[1]);
reconstructed[0][reconstr_lens[0]] = 0;
reconstructed[1][reconstr_lens[1]] = 0;
@@ -164,6 +162,9 @@
assert(newst1->size == st.size);
assert(fuzzy || memcmp(newst0->buf, st.buf, st.size) == 0);
assert(memcmp(newst1->buf, st.buf, st.size) == 0);
+ ASN_STRUCT_RESET(asn_DEF_REAL, &st);
+ ASN_STRUCT_FREE(asn_DEF_REAL, newst0);
+ ASN_STRUCT_FREE(asn_DEF_REAL, newst1);
}
static void
@@ -200,49 +201,56 @@
assert((size_t)rn.size == outsize);
}
assert(memcmp(rn.buf, outbuf, rn.size) == 0);
+ ASN_STRUCT_RESET(asn_DEF_REAL, &rn);
check_str_representation(d, sample, canonical_sample, lineno);
}
static void
check_ber_buffer_oneway(double d, const char *sample, const char *canonical_sample, uint8_t *buf, size_t bufsize, int lineno) {
- REAL_t rn;
- double val;
+ REAL_t rn0;
+ REAL_t rn1;
+ double val0;
+ double val1;
uint8_t *p, *end;
int ret;
- memset(&rn, 0, sizeof(rn));
+ memset(&rn0, 0, sizeof(rn0));
+ memset(&rn1, 0, sizeof(rn1));
printf("verify double value %.12f [", d);
for(p = (uint8_t *)&d, end = p + sizeof(double); p < end ; p++)
printf("%02x", *p);
printf("] (ilogb %d)\n", ilogb(d));
-
- ret = asn_double2REAL(&rn, d);
+ ret = asn_double2REAL(&rn0, d);
assert(ret == 0);
printf("canonical DER: [");
- for(p = rn.buf, end = p + rn.size; p < end; p++)
+ for(p = rn0.buf, end = p + rn0.size; p < end; p++)
printf("%02x", *p);
- printf("]\n");
+ ret = asn_REAL2double(&rn0, &val0);
+ assert(ret == 0);
+ printf("] => %f\n", val0);
- rn.buf = buf;
- rn.size = bufsize;
+ rn1.buf = buf;
+ rn1.size = bufsize;
printf("received as: [");
- for(p = rn.buf, end = p + rn.size; p < end; p++)
+ for(p = rn1.buf, end = p + rn1.size; p < end; p++)
printf("%02x", *p);
- printf("]\n");
-
- ret = asn_REAL2double(&rn, &val);
+ ret = asn_REAL2double(&rn1, &val1);
assert(ret == 0);
+ printf("] => %f\n", val1);
- printf("%.12f vs %.12f\n", d, val);
+ printf("%.12f vs %.12f vs %.12f\n", d, val0, val1);
- assert(val == d);
+ assert(val0 == d);
+ assert(val1 == d);
- check_str_representation(val, sample, canonical_sample, lineno);
+ ASN_STRUCT_RESET(asn_DEF_REAL, &rn0);
+
+ check_str_representation(val1, sample, canonical_sample, lineno);
}
/*
@@ -696,5 +704,6 @@
check_xer(1, 0.0000000000000000000001);
check_xer(1, -0.0000000000000000000001);
+ ASN_STRUCT_RESET(asn_DEF_REAL, &rn);
return 0;
}