diff options
| -rw-r--r-- | src/cm/cm.c | 8 | ||||
| -rwxr-xr-x | test/ecgen.sh | 3 |
2 files changed, 10 insertions, 1 deletions
diff --git a/src/cm/cm.c b/src/cm/cm.c index c604876..a3a70a2 100644 --- a/src/cm/cm.c +++ b/src/cm/cm.c @@ -181,6 +181,14 @@ static int cm_init(exhaustive_t *setup) { fprintf(err, "Order requested not a number: %s\n", cfg->cm_order); return 1; } + long ord_log = logint0(order, gen_2, NULL); + if (ord_log > cfg->bits) { + pari_fprintf(err, + "Order requested does not fit(2^%li) into requested " + "bitsize(2^%li): %Pi\n", + ord_log, cfg->bits, order); + return 1; + } if (delims == 0) { ord_prime = (bool)isprime(order); } else { diff --git a/test/ecgen.sh b/test/ecgen.sh index ef734d8..e9a1d85 100755 --- a/test/ecgen.sh +++ b/test/ecgen.sh @@ -162,9 +162,10 @@ function hex() { function cm() { start_test assert_raises "${ecgen} --fp --order=2147483723 32" - assert_raises "${ecgen} --fp --order=123456789012345678901234567890123456789012345678901234568197 137" + assert_raises "${ecgen} --fp --order=123456789012345678901234567890123456789012345678901234568197 196" assert_raises "${ecgen} --fp --order=46874566546,3546,3125 64" assert_raises "${ecgen} --fp --order=0 16" 1 + assert_raises "${ecgen} --fp --order=0x1000 8" 1 } function secg() { |
