diff --git a/tests/tests-skeletons/check-length.c b/tests/tests-skeletons/check-length.c
index d09e581..1281f24 100644
--- a/tests/tests-skeletons/check-length.c
+++ b/tests/tests-skeletons/check-length.c
@@ -80,44 +80,48 @@
 
 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 };
-	uint8_t buf4[] = { 0x89, 0x00, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x04 };
-	ber_tlv_len_t tlv_len;
-	ssize_t ret;
+    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};
+    uint8_t buf4[] = {0x89, 0x00, 0x7f, 0xff, 0xff,
+                      0xff, 0xff, 0xff, 0xff, 0x04};
+    ber_tlv_len_t tlv_len;
+    ssize_t ret;
 
-	for(size_t i = 0; i < 66000; i++) {
-		if(i == 4500) i = 64000;	/* Jump */
-		check(i);
-	}
+    for(size_t i = 0; i < 66000; i++) {
+        if(i == 4500) i = 64000; /* Jump */
+        check(i);
+    }
 
-	ret = ber_fetch_length(0, buf1, sizeof(buf1), &tlv_len);
-	printf("ret=%ld, len=%ld\n", (long)ret, (long)tlv_len);
-	assert(ret == sizeof(buf1));
-	assert(tlv_len == 0x01020304);
+    ret = ber_fetch_length(0, buf1, sizeof(buf1), &tlv_len);
+    printf("ret=%zd, len=%zd\n", ret, tlv_len);
+    assert(ret == sizeof(buf1));
+    assert(tlv_len == 0x01020304);
 
-	ret = ber_fetch_length(0, buf2, sizeof(buf2), &tlv_len);
-	printf("ret=%ld, len=%ld\n", (long)ret, (long)tlv_len);
-	assert(ret == sizeof(buf2));
-	assert(tlv_len == 0x7fff0304);
+    /*
+     * Here although tlv_len is not greater than 2^31,
+     * we ought to hit embedded length exploitation preventive checks.
+     */
+    ret = ber_fetch_length(0, buf2, sizeof(buf2), &tlv_len);
+    if(sizeof(tlv_len) <= 4) {
+        assert(ret == -1);
+    } else {
+        printf("ret=%zd, len=%zd\n", ret, tlv_len);
+        assert(ret == sizeof(buf2));
+        assert(tlv_len == 0x7fff0304);
+    }
 
-	/*
-	 * Here although tlv_len is not greater than 2^31,
-	 * we ought to hit an embedded length exploitation preventive check.
-	 */
-	printf("sizeof(tlv_len) = %d\n", (int)sizeof(tlv_len));
-	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", (unsigned int)tlv_len);
-		assert(ret == -1);
-	}
-	if(sizeof(tlv_len) <= 8) {
-		ret = ber_fetch_length(0, buf4, sizeof(buf4), &tlv_len);
-		printf("ret=%lld\n", (long long)ret);
-		assert(ret == -1);
-	}
+    if(sizeof(tlv_len) <= 4) {
+        ret = ber_fetch_length(0, buf3, sizeof(buf3), &tlv_len);
+        printf("ret=%zd\n", ret);
+        printf("len=0x%08zx\n", tlv_len);
+        assert(ret == -1);
+    }
+    if(sizeof(tlv_len) <= 8) {
+        ret = ber_fetch_length(0, buf4, sizeof(buf4), &tlv_len);
+        printf("ret=%zd\n", ret);
+        assert(ret == -1);
+    }
 
-	return 0;
+    return 0;
 }
