summaryrefslogtreecommitdiffstats
path: root/crypto
diff options
context:
space:
mode:
authorVitezslav Cizek <vcizek@suse.com>2018-10-25 13:53:26 +0200
committerDr. Matthias St. Pierre <Matthias.St.Pierre@ncp-e.com>2018-11-14 13:07:54 +0100
commit42acb69fd1fdab9099833c946171eefc9b86ecde (patch)
tree777618cb31353100c7dc8000c395b5379d27a32e /crypto
parenteaa32f3679a8f36975142ece0958a68422af8bbc (diff)
DSA: Check for sanity of input parameters
dsa_builtin_paramgen2 expects the L parameter to be greater than N, otherwise the generation will get stuck in an infinite loop. Reviewed-by: Bernd Edlinger <bernd.edlinger@hotmail.de> Reviewed-by: Paul Dale <paul.dale@oracle.com> Reviewed-by: Richard Levitte <levitte@openssl.org> Reviewed-by: Matthias St. Pierre <Matthias.St.Pierre@ncp-e.com> (cherry picked from commit 3afd38b277a806b901e039c6ad281c5e5c97ef67) (Merged from https://github.com/openssl/openssl/pull/7493)
Diffstat (limited to 'crypto')
-rw-r--r--crypto/dsa/dsa_gen.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/crypto/dsa/dsa_gen.c b/crypto/dsa/dsa_gen.c
index 46f4f01ee0..383d853b6d 100644
--- a/crypto/dsa/dsa_gen.c
+++ b/crypto/dsa/dsa_gen.c
@@ -327,6 +327,12 @@ int dsa_builtin_paramgen2(DSA *ret, size_t L, size_t N,
if (mctx == NULL)
goto err;
+ /* make sure L > N, otherwise we'll get trapped in an infinite loop */
+ if (L <= N) {
+ DSAerr(DSA_F_DSA_BUILTIN_PARAMGEN2, DSA_R_INVALID_PARAMETERS);
+ goto err;
+ }
+
if (evpmd == NULL) {
if (N == 160)
evpmd = EVP_sha1();