From e754076c379fb97d382da5a7ef83c696344600f7 Mon Sep 17 00:00:00 2001 From: Sean Parkinson Date: Mon, 13 Jul 2020 16:24:02 +1000 Subject: [PATCH] Change mp_leading_bit (integer.c) to not to require a copy --- src/ssl.c | 2 +- wolfcrypt/src/integer.c | 19 +++---------------- 2 files changed, 4 insertions(+), 17 deletions(-) diff --git a/src/ssl.c b/src/ssl.c index 6ea012544..2d5077255 100644 --- a/src/ssl.c +++ b/src/ssl.c @@ -41804,7 +41804,7 @@ int wolfSSL_X509_NAME_print_ex(WOLFSSL_BIO* bio, WOLFSSL_X509_NAME* name, if (i < count - 1) { /* tmpSz+1 for last null char */ XSNPRINTF(tmp, tmpSz+1, "%s=%s,", buf, str->data); - XSTRNCAT(fullName, tmp, tmpSz); + XSTRNCAT(fullName, tmp, tmpSz+1); } else { XSNPRINTF(tmp, tmpSz, "%s=%s", buf, str->data); diff --git a/wolfcrypt/src/integer.c b/wolfcrypt/src/integer.c index 56d684b46..27f8d6699 100644 --- a/wolfcrypt/src/integer.c +++ b/wolfcrypt/src/integer.c @@ -271,23 +271,10 @@ int mp_count_bits (mp_int * a) int mp_leading_bit (mp_int * a) { - int bit = 0; - mp_int t; + int c = mp_count_bits(a); - if (mp_init_copy(&t, a) != MP_OKAY) - return 0; - - while (mp_iszero(&t) == MP_NO) { -#ifndef MP_8BIT - bit = (t.dp[0] & 0x80) != 0; -#else - bit = ((t.dp[0] | ((t.dp[1] & 0x01) << 7)) & 0x80) != 0; -#endif - if (mp_div_2d (&t, 8, &t, NULL) != MP_OKAY) - break; - } - mp_clear(&t); - return bit; + if (c == 0) return 0; + return (c % 8) == 0; } int mp_to_unsigned_bin_at_pos(int x, mp_int *t, unsigned char *b)