summaryrefslogtreecommitdiff
path: root/testcode
diff options
context:
space:
mode:
Diffstat (limited to 'testcode')
-rw-r--r--testcode/asynclook.c2
-rw-r--r--testcode/delayer.c6
-rw-r--r--testcode/fake_event.c2
-rw-r--r--testcode/memstats.c11
-rwxr-xr-xtestcode/mini_tdir.sh4
-rw-r--r--testcode/perf.c2
-rw-r--r--testcode/petal.c4
-rw-r--r--testcode/streamtcp.c4
-rw-r--r--testcode/testbound.c27
-rw-r--r--testcode/testpkts.c47
-rw-r--r--testcode/unitmain.c6
-rw-r--r--testcode/unitmsgparse.c6
-rw-r--r--testcode/unitregional.c4
13 files changed, 87 insertions, 38 deletions
diff --git a/testcode/asynclook.c b/testcode/asynclook.c
index f82c6dcab71c7..660f72a7df8cb 100644
--- a/testcode/asynclook.c
+++ b/testcode/asynclook.c
@@ -482,7 +482,9 @@ int main(int argc, char** argv)
ERR_load_SSL_strings();
#endif
#if OPENSSL_VERSION_NUMBER < 0x10100000 || !defined(HAVE_OPENSSL_INIT_CRYPTO)
+# ifndef S_SPLINT_S
OpenSSL_add_all_algorithms();
+# endif
#else
OPENSSL_init_crypto(OPENSSL_INIT_ADD_ALL_CIPHERS
| OPENSSL_INIT_ADD_ALL_DIGESTS
diff --git a/testcode/delayer.c b/testcode/delayer.c
index 4abcfc235dcdc..ebf883926cba6 100644
--- a/testcode/delayer.c
+++ b/testcode/delayer.c
@@ -174,7 +174,7 @@ dl_tv_add(struct timeval* t1, const struct timeval* t2)
#ifndef S_SPLINT_S
t1->tv_sec += t2->tv_sec;
t1->tv_usec += t2->tv_usec;
- while(t1->tv_usec > 1000000) {
+ while(t1->tv_usec >= 1000000) {
t1->tv_usec -= 1000000;
t1->tv_sec++;
}
@@ -1042,7 +1042,7 @@ service(const char* bind_str, int bindport, const char* serv_str,
}
i=0;
if(bindport == 0) {
- bindport = 1024 + arc4random()%64000;
+ bindport = 1024 + ((int)arc4random())%64000;
i = 100;
}
while(1) {
@@ -1058,7 +1058,7 @@ service(const char* bind_str, int bindport, const char* serv_str,
#endif
if(i--==0)
fatal_exit("cannot bind any port");
- bindport = 1024 + arc4random()%64000;
+ bindport = 1024 + ((int)arc4random())%64000;
} else break;
}
fd_set_nonblock(s);
diff --git a/testcode/fake_event.c b/testcode/fake_event.c
index 713e247592b7c..d6e904a4d3cb9 100644
--- a/testcode/fake_event.c
+++ b/testcode/fake_event.c
@@ -100,7 +100,7 @@ timeval_add(struct timeval* d, const struct timeval* add)
#ifndef S_SPLINT_S
d->tv_sec += add->tv_sec;
d->tv_usec += add->tv_usec;
- if(d->tv_usec > 1000000) {
+ if(d->tv_usec >= 1000000) {
d->tv_usec -= 1000000;
d->tv_sec++;
}
diff --git a/testcode/memstats.c b/testcode/memstats.c
index dc29058ad7747..a253b00ac506d 100644
--- a/testcode/memstats.c
+++ b/testcode/memstats.c
@@ -106,9 +106,16 @@ get_codeline(rbtree_type* tree, char* key, char* func)
cl = calloc(1, sizeof(*cl));
if(!cl) return 0;
cl->codeline = strdup(key);
- if(!cl->codeline) return 0;
+ if(!cl->codeline) {
+ free(cl);
+ return 0;
+ }
cl->func = strdup(func);
- if(!cl->func) return 0;
+ if(!cl->func) {
+ free(cl->codeline);
+ free(cl);
+ return 0;
+ }
cl->alloc = 0;
cl->node.key = cl->codeline;
(void)rbtree_insert(tree, &cl->node);
diff --git a/testcode/mini_tdir.sh b/testcode/mini_tdir.sh
index 96745515e3e4a..5f02b0862ee2b 100755
--- a/testcode/mini_tdir.sh
+++ b/testcode/mini_tdir.sh
@@ -119,7 +119,11 @@ fi
# Copy
echo "minitdir copy $1 to $dir"
mkdir $dir
+if cp --help 2>&1 | grep -- "-a" >/dev/null; then
cp -a $name.tdir/* $dir/
+else
+cp -R $name.tdir/* $dir/
+fi
cd $dir
# EXE
diff --git a/testcode/perf.c b/testcode/perf.c
index d6d2b05298e82..5b170ca57379d 100644
--- a/testcode/perf.c
+++ b/testcode/perf.c
@@ -177,7 +177,7 @@ perf_tv_add(struct timeval* t1, struct timeval* t2)
#ifndef S_SPLINT_S
t1->tv_sec += t2->tv_sec;
t1->tv_usec += t2->tv_usec;
- while(t1->tv_usec > 1000000) {
+ while(t1->tv_usec >= 1000000) {
t1->tv_usec -= 1000000;
t1->tv_sec++;
}
diff --git a/testcode/petal.c b/testcode/petal.c
index a733017a470bb..dcc31fdc5d99a 100644
--- a/testcode/petal.c
+++ b/testcode/petal.c
@@ -301,7 +301,7 @@ setup_ssl(int s, SSL_CTX* ctx)
SSL* ssl = SSL_new(ctx);
if(!ssl) return NULL;
SSL_set_accept_state(ssl);
- (void)SSL_set_mode(ssl, SSL_MODE_AUTO_RETRY);
+ (void)SSL_set_mode(ssl, (long)SSL_MODE_AUTO_RETRY);
if(!SSL_set_fd(ssl, s)) {
SSL_free(ssl);
return NULL;
@@ -657,7 +657,9 @@ int main(int argc, char* argv[])
ERR_load_SSL_strings();
#endif
#if OPENSSL_VERSION_NUMBER < 0x10100000 || !defined(HAVE_OPENSSL_INIT_CRYPTO)
+# ifndef S_SPLINT_S
OpenSSL_add_all_algorithms();
+# endif
#else
OPENSSL_init_crypto(OPENSSL_INIT_ADD_ALL_CIPHERS
| OPENSSL_INIT_ADD_ALL_DIGESTS
diff --git a/testcode/streamtcp.c b/testcode/streamtcp.c
index 668d6360bb9a4..65ea8d4bcae96 100644
--- a/testcode/streamtcp.c
+++ b/testcode/streamtcp.c
@@ -314,7 +314,7 @@ static int get_random(void)
if (RAND_bytes((unsigned char*)&r, (int)sizeof(r)) == 1) {
return r;
}
- return arc4random();
+ return (int)arc4random();
}
/** send the TCP queries and print answers */
@@ -485,7 +485,9 @@ int main(int argc, char** argv)
ERR_load_SSL_strings();
#endif
#if OPENSSL_VERSION_NUMBER < 0x10100000 || !defined(HAVE_OPENSSL_INIT_CRYPTO)
+# ifndef S_SPLINT_S
OpenSSL_add_all_algorithms();
+# endif
#else
OPENSSL_init_crypto(OPENSSL_INIT_ADD_ALL_CIPHERS
| OPENSSL_INIT_ADD_ALL_DIGESTS
diff --git a/testcode/testbound.c b/testcode/testbound.c
index 246bc6735b450..4405231c08626 100644
--- a/testcode/testbound.c
+++ b/testcode/testbound.c
@@ -65,6 +65,23 @@
/** config files (removed at exit) */
static struct config_strlist* cfgfiles = NULL;
+#ifdef UNBOUND_ALLOC_STATS
+# define strdup(s) unbound_stat_strdup_log(s, __FILE__, __LINE__, __func__)
+char* unbound_stat_strdup_log(char* s, const char* file, int line,
+ const char* func);
+char* unbound_stat_strdup_log(char* s, const char* file, int line,
+ const char* func) {
+ char* result;
+ size_t len;
+ if(!s) return NULL;
+ len = strlen(s);
+ log_info("%s:%d %s strdup(%u)", file, line, func, (unsigned)len+1);
+ result = unbound_stat_malloc(len+1);
+ memmove(result, s, len+1);
+ return result;
+}
+#endif /* UNBOUND_ALLOC_STATS */
+
/** give commandline usage for testbound. */
static void
testbound_usage(void)
@@ -358,7 +375,7 @@ main(int argc, char* argv[])
testbound_selftest();
checklock_stop();
if(log_get_lock()) {
- lock_quick_destroy((lock_quick_type*)log_get_lock());
+ lock_basic_destroy((lock_basic_type*)log_get_lock());
}
exit(0);
case '1':
@@ -463,8 +480,14 @@ main(int argc, char* argv[])
free(pass_argv[c]);
if(res == 0) {
log_info("Testbound Exit Success\n");
+ /* remove configfile from here, the atexit() is for when
+ * there is a crash to remove the tmpdir file.
+ * This one removes the file while alloc and log locks are
+ * still valid, and can be logged (for memory calculation),
+ * it leaves the ptr NULL so the atexit does nothing. */
+ remove_configfile();
if(log_get_lock()) {
- lock_quick_destroy((lock_quick_type*)log_get_lock());
+ lock_basic_destroy((lock_basic_type*)log_get_lock());
}
#ifdef HAVE_PTHREAD
/* dlopen frees its thread state (dlopen of gost engine) */
diff --git a/testcode/testpkts.c b/testcode/testpkts.c
index 6c90567aa321a..82c1439677c01 100644
--- a/testcode/testpkts.c
+++ b/testcode/testpkts.c
@@ -704,6 +704,7 @@ static sldns_rr_type get_qtype(uint8_t* pkt, size_t pktlen)
uint8_t* d;
size_t dl, sl=0;
char* snull = NULL;
+ int comprloop = 0;
if(pktlen < LDNS_HEADER_SIZE)
return 0;
if(LDNS_QDCOUNT(pkt) == 0)
@@ -711,7 +712,7 @@ static sldns_rr_type get_qtype(uint8_t* pkt, size_t pktlen)
/* skip over dname with dname-scan routine */
d = pkt+LDNS_HEADER_SIZE;
dl = pktlen-LDNS_HEADER_SIZE;
- (void)sldns_wire2str_dname_scan(&d, &dl, &snull, &sl, pkt, pktlen);
+ (void)sldns_wire2str_dname_scan(&d, &dl, &snull, &sl, pkt, pktlen, &comprloop);
if(dl < 2)
return 0;
return sldns_read_uint16(d);
@@ -723,6 +724,7 @@ static size_t get_qname_len(uint8_t* pkt, size_t pktlen)
uint8_t* d;
size_t dl, sl=0;
char* snull = NULL;
+ int comprloop = 0;
if(pktlen < LDNS_HEADER_SIZE)
return 0;
if(LDNS_QDCOUNT(pkt) == 0)
@@ -730,7 +732,7 @@ static size_t get_qname_len(uint8_t* pkt, size_t pktlen)
/* skip over dname with dname-scan routine */
d = pkt+LDNS_HEADER_SIZE;
dl = pktlen-LDNS_HEADER_SIZE;
- (void)sldns_wire2str_dname_scan(&d, &dl, &snull, &sl, pkt, pktlen);
+ (void)sldns_wire2str_dname_scan(&d, &dl, &snull, &sl, pkt, pktlen, &comprloop);
return pktlen-dl-LDNS_HEADER_SIZE;
}
@@ -767,6 +769,7 @@ static uint32_t get_serial(uint8_t* p, size_t plen)
size_t walk_len = plen, sl=0;
char* snull = NULL;
uint16_t i;
+ int comprloop = 0;
if(walk_len < LDNS_HEADER_SIZE)
return 0;
@@ -776,10 +779,10 @@ static uint32_t get_serial(uint8_t* p, size_t plen)
/* skip other records with wire2str_scan */
for(i=0; i < LDNS_QDCOUNT(p); i++)
(void)sldns_wire2str_rrquestion_scan(&walk, &walk_len,
- &snull, &sl, p, plen);
+ &snull, &sl, p, plen, &comprloop);
for(i=0; i < LDNS_ANCOUNT(p); i++)
(void)sldns_wire2str_rr_scan(&walk, &walk_len, &snull, &sl,
- p, plen);
+ p, plen, &comprloop);
/* walk through authority section */
for(i=0; i < LDNS_NSCOUNT(p); i++) {
@@ -787,7 +790,7 @@ static uint32_t get_serial(uint8_t* p, size_t plen)
uint8_t* dstart = walk;
size_t dlen = walk_len;
(void)sldns_wire2str_dname_scan(&dstart, &dlen, &snull, &sl,
- p, plen);
+ p, plen, &comprloop);
if(dlen >= 2 && sldns_read_uint16(dstart) == LDNS_RR_TYPE_SOA) {
/* skip type, class, TTL, rdatalen */
if(dlen < 10)
@@ -798,9 +801,9 @@ static uint32_t get_serial(uint8_t* p, size_t plen)
dlen -= 10;
/* check third rdf */
(void)sldns_wire2str_dname_scan(&dstart, &dlen, &snull,
- &sl, p, plen);
+ &sl, p, plen, &comprloop);
(void)sldns_wire2str_dname_scan(&dstart, &dlen, &snull,
- &sl, p, plen);
+ &sl, p, plen, &comprloop);
if(dlen < 4)
return 0;
verbose(3, "found serial %u in msg. ",
@@ -809,7 +812,7 @@ static uint32_t get_serial(uint8_t* p, size_t plen)
}
/* move to next RR */
(void)sldns_wire2str_rr_scan(&walk, &walk_len, &snull, &sl,
- p, plen);
+ p, plen, &comprloop);
}
return 0;
}
@@ -823,6 +826,7 @@ pkt_find_edns_opt(uint8_t** p, size_t* plen)
size_t wlen = *plen, sl=0;
char* snull = NULL;
uint16_t i;
+ int comprloop = 0;
if(wlen < LDNS_HEADER_SIZE)
return 0;
@@ -832,11 +836,11 @@ pkt_find_edns_opt(uint8_t** p, size_t* plen)
/* skip other records with wire2str_scan */
for(i=0; i < LDNS_QDCOUNT(*p); i++)
(void)sldns_wire2str_rrquestion_scan(&w, &wlen, &snull, &sl,
- *p, *plen);
+ *p, *plen, &comprloop);
for(i=0; i < LDNS_ANCOUNT(*p); i++)
- (void)sldns_wire2str_rr_scan(&w, &wlen, &snull, &sl, *p, *plen);
+ (void)sldns_wire2str_rr_scan(&w, &wlen, &snull, &sl, *p, *plen, &comprloop);
for(i=0; i < LDNS_NSCOUNT(*p); i++)
- (void)sldns_wire2str_rr_scan(&w, &wlen, &snull, &sl, *p, *plen);
+ (void)sldns_wire2str_rr_scan(&w, &wlen, &snull, &sl, *p, *plen, &comprloop);
/* walk through additional section */
for(i=0; i < LDNS_ARCOUNT(*p); i++) {
@@ -844,14 +848,14 @@ pkt_find_edns_opt(uint8_t** p, size_t* plen)
uint8_t* dstart = w;
size_t dlen = wlen;
(void)sldns_wire2str_dname_scan(&dstart, &dlen, &snull, &sl,
- *p, *plen);
+ *p, *plen, &comprloop);
if(dlen >= 2 && sldns_read_uint16(dstart) == LDNS_RR_TYPE_OPT) {
*p = dstart+2;
*plen = dlen-2;
return 1;
}
/* move to next RR */
- (void)sldns_wire2str_rr_scan(&w, &wlen, &snull, &sl, *p, *plen);
+ (void)sldns_wire2str_rr_scan(&w, &wlen, &snull, &sl, *p, *plen, &comprloop);
}
return 0;
}
@@ -889,25 +893,26 @@ zerottls(uint8_t* pkt, size_t pktlen)
char* snull = NULL;
uint16_t i;
uint16_t num = LDNS_ANCOUNT(pkt)+LDNS_NSCOUNT(pkt)+LDNS_ARCOUNT(pkt);
+ int comprloop = 0;
if(walk_len < LDNS_HEADER_SIZE)
return;
walk += LDNS_HEADER_SIZE;
walk_len -= LDNS_HEADER_SIZE;
for(i=0; i < LDNS_QDCOUNT(pkt); i++)
(void)sldns_wire2str_rrquestion_scan(&walk, &walk_len,
- &snull, &sl, pkt, pktlen);
+ &snull, &sl, pkt, pktlen, &comprloop);
for(i=0; i < num; i++) {
/* wipe TTL */
uint8_t* dstart = walk;
size_t dlen = walk_len;
(void)sldns_wire2str_dname_scan(&dstart, &dlen, &snull, &sl,
- pkt, pktlen);
+ pkt, pktlen, &comprloop);
if(dlen < 8)
return;
sldns_write_uint32(dstart+4, 0);
/* go to next RR */
(void)sldns_wire2str_rr_scan(&walk, &walk_len, &snull, &sl,
- pkt, pktlen);
+ pkt, pktlen, &comprloop);
}
}
@@ -1347,10 +1352,11 @@ static int equal_dname(uint8_t* q, size_t qlen, uint8_t* p, size_t plen)
char qs[512], ps[512];
size_t qslen = sizeof(qs), pslen = sizeof(ps);
char* qss = qs, *pss = ps;
+ int comprloop = 0;
if(!qn || !pn)
return 0;
- (void)sldns_wire2str_dname_scan(&qn, &qlen, &qss, &qslen, q, qlen);
- (void)sldns_wire2str_dname_scan(&pn, &plen, &pss, &pslen, p, plen);
+ (void)sldns_wire2str_dname_scan(&qn, &qlen, &qss, &qslen, q, qlen, &comprloop);
+ (void)sldns_wire2str_dname_scan(&pn, &plen, &pss, &pslen, p, plen, &comprloop);
return (strcmp(qs, ps) == 0);
}
@@ -1364,11 +1370,12 @@ static int subdomain_dname(uint8_t* q, size_t qlen, uint8_t* p, size_t plen)
char qs[5120], ps[5120];
size_t qslen = sizeof(qs), pslen = sizeof(ps);
char* qss = qs, *pss = ps;
+ int comprloop = 0;
if(!qn || !pn)
return 0;
/* decompresses domain names */
- (void)sldns_wire2str_dname_scan(&qn, &qlen, &qss, &qslen, q, qlen);
- (void)sldns_wire2str_dname_scan(&pn, &plen, &pss, &pslen, p, plen);
+ (void)sldns_wire2str_dname_scan(&qn, &qlen, &qss, &qslen, q, qlen, &comprloop);
+ (void)sldns_wire2str_dname_scan(&pn, &plen, &pss, &pslen, p, plen, &comprloop);
/* same: false, (strict subdomain check)??? */
if(strcmp(qs, ps) == 0)
return 1;
diff --git a/testcode/unitmain.c b/testcode/unitmain.c
index e28be8c833afc..e8e7a44c7cb60 100644
--- a/testcode/unitmain.c
+++ b/testcode/unitmain.c
@@ -538,10 +538,8 @@ rnd_test(void)
struct ub_randstate* r;
int num = 1000, i;
long int a[1000];
- unsigned int seed = (unsigned)time(NULL);
unit_show_feature("ub_random");
- printf("ub_random seed is %u\n", seed);
- unit_assert( (r = ub_initstate(seed, NULL)) );
+ unit_assert( (r = ub_initstate(NULL)) );
for(i=0; i<num; i++) {
a[i] = ub_random(r);
unit_assert(a[i] >= 0);
@@ -907,7 +905,7 @@ main(int argc, char* argv[])
ecs_test();
#endif /* CLIENT_SUBNET */
if(log_get_lock()) {
- lock_quick_destroy((lock_quick_type*)log_get_lock());
+ lock_basic_destroy((lock_basic_type*)log_get_lock());
}
checklock_stop();
printf("%d checks ok.\n", testcount);
diff --git a/testcode/unitmsgparse.c b/testcode/unitmsgparse.c
index c0b38bac76e4f..6f1edc6e9d6e5 100644
--- a/testcode/unitmsgparse.c
+++ b/testcode/unitmsgparse.c
@@ -179,7 +179,7 @@ perf_encode(struct query_info* qi, struct reply_info* rep, uint16_t id,
/* encode a couple times */
for(i=0; i<max; i++) {
ret = reply_info_encode(qi, rep, id, flags, out, timenow,
- r2, 65535, (int)(edns->bits & EDNS_DO) );
+ r2, 65535, (int)(edns->bits & EDNS_DO), 0);
unit_assert(ret != 0); /* udp packets should fit */
attach_edns_record(out, edns);
regional_free_all(r2);
@@ -342,7 +342,7 @@ testpkt(sldns_buffer* pkt, struct alloc_cache* alloc, sldns_buffer* out,
} else if(!check_formerr_gone) {
const size_t lim = 512;
ret = reply_info_encode(&qi, rep, id, flags, out, timenow,
- region, 65535, (int)(edns.bits & EDNS_DO) );
+ region, 65535, (int)(edns.bits & EDNS_DO), 0);
unit_assert(ret != 0); /* udp packets should fit */
attach_edns_record(out, &edns);
if(vbmp) printf("inlen %u outlen %u\n",
@@ -357,7 +357,7 @@ testpkt(sldns_buffer* pkt, struct alloc_cache* alloc, sldns_buffer* out,
ret = reply_info_encode(&qi, rep, id, flags, out,
timenow, region,
lim - calc_edns_field_size(&edns),
- (int)(edns.bits & EDNS_DO));
+ (int)(edns.bits & EDNS_DO), 0);
unit_assert(ret != 0); /* should fit, but with TC */
attach_edns_record(out, &edns);
if( LDNS_QDCOUNT(sldns_buffer_begin(out)) !=
diff --git a/testcode/unitregional.c b/testcode/unitregional.c
index 49c8147c944c6..d21e2caa366e6 100644
--- a/testcode/unitregional.c
+++ b/testcode/unitregional.c
@@ -50,7 +50,9 @@ corner_cases(struct regional* r)
size_t s; /* shadow count of allocated memory */
void* a;
size_t minsize = sizeof(uint64_t);
+#ifndef UNBOUND_ALLOC_NONREGIONAL
size_t mysize;
+#endif
char* str;
unit_assert(r);
/* alloc cases:
@@ -75,6 +77,7 @@ corner_cases(struct regional* r)
s+=0;
unit_assert(r->available == r->first_size - s);
+#ifndef UNBOUND_ALLOC_NONREGIONAL
a = regional_alloc(r, 1);
unit_assert(a);
memset(a, 0x42, 1);
@@ -171,6 +174,7 @@ corner_cases(struct regional* r)
memset(a, 0x42, mysize);
unit_assert(a);
unit_assert(r->available == 8);
+#endif /* UNBOUND_ALLOC_NONREGIONAL */
/* test if really copied over */
str = "test12345";