From 74e92e5ecf40cb9736e637e6b6dc5fc023bf7204 Mon Sep 17 00:00:00 2001 From: Brent Cook Date: Sat, 12 Mar 2022 11:26:23 -0600 Subject: add infinite loop fix in BN_mod_sqrt --- patches/bn_sqrt.patch | 38 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 patches/bn_sqrt.patch diff --git a/patches/bn_sqrt.patch b/patches/bn_sqrt.patch new file mode 100644 index 0000000..495de31 --- /dev/null +++ b/patches/bn_sqrt.patch @@ -0,0 +1,38 @@ +--- crypto/bn/bn_sqrt.c.orig Fri Feb 18 16:30:39 2022 ++++ crypto/bn/bn_sqrt.c Sat Mar 12 11:23:53 2022 +@@ -351,21 +351,22 @@ + goto vrfy; + } + +- +- /* find smallest i such that b^(2^i) = 1 */ +- i = 1; +- if (!BN_mod_sqr(t, b, p, ctx)) +- goto end; +- while (!BN_is_one(t)) { +- i++; +- if (i == e) { +- BNerror(BN_R_NOT_A_SQUARE); +- goto end; ++ /* Find the smallest i with 0 < i < e such that b^(2^i) = 1. */ ++ for (i = 1; i < e; i++) { ++ if (i == 1) { ++ if (!BN_mod_sqr(t, b, p, ctx)) ++ goto end; ++ } else { ++ if (!BN_mod_sqr(t, t, p, ctx)) ++ goto end; + } +- if (!BN_mod_mul(t, t, t, p, ctx)) +- goto end; ++ if (BN_is_one(t)) ++ break; + } +- ++ if (i >= e) { ++ BNerror(BN_R_NOT_A_SQUARE); ++ goto end; ++ } + + /* t := y^2^(e - i - 1) */ + if (!BN_copy(t, y)) -- cgit v1.2.3-55-g6feb