diff --git a/skeletons/tests/check-OCTET_STRING.c b/skeletons/tests/check-OCTET_STRING.c
index b3e298f..120e9c8 100644
--- a/skeletons/tests/check-OCTET_STRING.c
+++ b/skeletons/tests/check-OCTET_STRING.c
@@ -19,6 +19,7 @@
 	int verlen = verify ? strlen(verify) : 0;
 	asn_TYPE_descriptor_t *td = &asn_DEF_OCTET_STRING;
 	OCTET_STRING_t *st = 0;
+	OCTET_STRING_t **stp = &st;
 	asn_dec_rval_t rc;
 	xer_type_decoder_f *decoder = 0;
 
@@ -35,7 +36,7 @@
 		break;
 	}
 
-	rc = decoder(0, td, (void **)&st, tagname, xmlbuf, xmllen);
+	rc = decoder(0, td, (void **)stp, tagname, xmlbuf, xmllen);
 	printf("[%s] => [%s]:%d vs [%s]:%d, code %d\n",
 		xmlbuf,
 		st ? (const char *)st->buf : "", st ? st->size : 0,
diff --git a/skeletons/tests/check-OIDs.c b/skeletons/tests/check-OIDs.c
index a28cd00..4d4c9b5 100644
--- a/skeletons/tests/check-OIDs.c
+++ b/skeletons/tests/check-OIDs.c
@@ -245,13 +245,14 @@
 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.xer_decoder(0,
-		&asn_DEF_RELATIVE_OID, (void **)&st, "t",
+		&asn_DEF_RELATIVE_OID, (void **)stp, "t",
 			xer, strlen(xer));
 	if(expect_arcs == -1) {
 		if(rc.code != RC_OK)
diff --git a/skeletons/tests/check-REAL.c b/skeletons/tests/check-REAL.c
index e29df50..641da2d 100644
--- a/skeletons/tests/check-REAL.c
+++ b/skeletons/tests/check-REAL.c
@@ -152,6 +152,8 @@
 	REAL_t st;
 	REAL_t *newst0 = 0;
 	REAL_t *newst1 = 0;
+	REAL_t **newst0p = &newst0;
+	REAL_t **newst1p = &newst1;
 	double value0, value1;
 	int ret;
 
@@ -176,12 +178,12 @@
 		reconstr_lens[0], reconstructed[0]
 	);
 
-	rc = xer_decode(0, &asn_DEF_REAL, (void **)&newst0,
+	rc = xer_decode(0, &asn_DEF_REAL, (void **)newst0p,
 		reconstructed[0], reconstr_lens[0]);
 	assert(rc.code == RC_OK);
 	assert(rc.consumed < reconstr_lens[0]);
 
-	rc = xer_decode(0, &asn_DEF_REAL, (void **)&newst1,
+	rc = xer_decode(0, &asn_DEF_REAL, (void **)newst1p,
 		reconstructed[1], reconstr_lens[1]);
 	assert(rc.code == RC_OK);
 	assert(rc.consumed == reconstr_lens[1]);
diff --git a/skeletons/tests/check-length.c b/skeletons/tests/check-length.c
index 312e037..fc764b0 100644
--- a/skeletons/tests/check-length.c
+++ b/skeletons/tests/check-length.c
@@ -39,6 +39,7 @@
 check(int size) {
 	OCTET_STRING_t *os;
 	OCTET_STRING_t *nos = 0;
+	OCTET_STRING_t **nosp = &nos;
 	asn_enc_rval_t erval;
 	asn_dec_rval_t rval;
 	int i;
@@ -61,7 +62,7 @@
 	assert(erval.encoded == buf_off);
 	assert(buf_off > size);
 
-	rval = ber_decode(0, &asn_DEF_OCTET_STRING, (void **)&nos, buf, buf_off);
+	rval = ber_decode(0, &asn_DEF_OCTET_STRING, (void **)nosp, buf, buf_off);
 	assert(rval.code == RC_OK);
 	assert(rval.consumed == buf_off);
 
@@ -116,7 +117,7 @@
 	if(sizeof(tlv_len) <= 4) {
 		ret = ber_fetch_length(0, buf3, sizeof(buf3), &tlv_len);
 		printf("ret=%ld\n", (long)ret);
-		printf("len=0x%x\n", (long)tlv_len);
+		printf("len=0x%x\n", (int)tlv_len);
 		assert(ret == -1);
 	}
 	if(sizeof(tlv_len) <= 8) {
