aboutsummaryrefslogtreecommitdiff
path: root/test/bntest.c
diff options
context:
space:
mode:
Diffstat (limited to 'test/bntest.c')
-rw-r--r--test/bntest.c29
1 files changed, 18 insertions, 11 deletions
diff --git a/test/bntest.c b/test/bntest.c
index 6b62c05..d315ad8 100644
--- a/test/bntest.c
+++ b/test/bntest.c
@@ -502,18 +502,25 @@ int test_div(BIO *bp, BN_CTX *ctx)
static void print_word(BIO *bp, BN_ULONG w)
{
-#ifdef SIXTY_FOUR_BIT
- if (sizeof(w) > sizeof(unsigned long)) {
- unsigned long h = (unsigned long)(w >> 32), l = (unsigned long)(w);
-
- if (h)
- BIO_printf(bp, "%lX%08lX", h, l);
+ int i = sizeof(w) * 8;
+ char *fmt = NULL;
+ unsigned char byte;
+
+ do {
+ i -= 8;
+ byte = (unsigned char)(w >> i);
+ if (fmt == NULL)
+ fmt = byte ? "%X" : NULL;
else
- BIO_printf(bp, "%lX", l);
- return;
- }
-#endif
- BIO_printf(bp, BN_HEX_FMT1, w);
+ fmt = "%02X";
+
+ if (fmt != NULL)
+ BIO_printf(bp, fmt, byte);
+ } while (i);
+
+ /* If we haven't printed anything, at least print a zero! */
+ if (fmt == NULL)
+ BIO_printf(bp, "0");
}
int test_div_word(BIO *bp)