diff --git a/tests/api/test_wolfmath.c b/tests/api/test_wolfmath.c index 1e4b622727..fa91c2cc97 100644 --- a/tests/api/test_wolfmath.c +++ b/tests/api/test_wolfmath.c @@ -199,7 +199,7 @@ int test_wc_export_int(void) len = sizeof(buf); ExpectIntEQ(mp_init(&mp), MP_OKAY); ExpectIntEQ(mp_set_bit(&mp, 257), 0); - ExpectIntEQ(wc_export_int(&mp, buf, &len, 0, WC_TYPE_UNSIGNED_BIN), + ExpectIntEQ(wc_export_int(&mp, buf, &len, keySz, WC_TYPE_UNSIGNED_BIN), WC_NO_ERR_TRACE(BUFFER_E)); mp_clear(&mp); diff --git a/wolfcrypt/src/wolfmath.c b/wolfcrypt/src/wolfmath.c index 60cd6b965d..74af4f2d22 100644 --- a/wolfcrypt/src/wolfmath.c +++ b/wolfcrypt/src/wolfmath.c @@ -253,14 +253,14 @@ int wc_export_int(mp_int* mp, byte* buf, word32* len, word32 keySz, else { /* for WC_TYPE_UNSIGNED_BIN keySz is used to zero pad. * The key size is always returned as the size */ - word32 mpSz = 0; + int mpSz = 0; if (*len < keySz) { *len = keySz; return BUFFER_E; } *len = keySz; - mpSz = (word32)mp_unsigned_bin_size(mp); - if (mpSz > keySz) { + mpSz = mp_unsigned_bin_size(mp); + if (mpSz < 0 || (word32)mpSz > keySz) { return BUFFER_E; } XMEMSET(buf, 0, *len);