summaryrefslogtreecommitdiff
path: root/src/lib/libcrypto/ec/ec_mult.c
diff options
context:
space:
mode:
authorderaadt <>2014-05-29 21:07:43 +0000
committerderaadt <>2014-05-29 21:07:43 +0000
commit642d45ae22413aa8195b105d051ca8896e782c5d (patch)
treed5fe0c330801f3e72c7b588264c6027636db4330 /src/lib/libcrypto/ec/ec_mult.c
parentf60b3b3365842d8869513a7e36981671cd726939 (diff)
downloadopenbsd-642d45ae22413aa8195b105d051ca8896e782c5d.tar.gz
openbsd-642d45ae22413aa8195b105d051ca8896e782c5d.tar.bz2
openbsd-642d45ae22413aa8195b105d051ca8896e782c5d.zip
convert 53 malloc(a*b) to reallocarray(NULL, a, b). that is 53
potential integer overflows easily changed into an allocation return of NULL, with errno nicely set if need be. checks for an allocations returning NULL are commonplace, or if the object is dereferenced (quite normal) will result in a nice fault which can be detected & repaired properly. ok tedu
Diffstat (limited to 'src/lib/libcrypto/ec/ec_mult.c')
-rw-r--r--src/lib/libcrypto/ec/ec_mult.c14
1 files changed, 7 insertions, 7 deletions
diff --git a/src/lib/libcrypto/ec/ec_mult.c b/src/lib/libcrypto/ec/ec_mult.c
index c0525c4940..b3bd34d82d 100644
--- a/src/lib/libcrypto/ec/ec_mult.c
+++ b/src/lib/libcrypto/ec/ec_mult.c
@@ -425,11 +425,11 @@ ec_wNAF_mul(const EC_GROUP * group, EC_POINT * r, const BIGNUM * scalar,
425 } 425 }
426 totalnum = num + numblocks; 426 totalnum = num + numblocks;
427 427
428 wsize = malloc(totalnum * sizeof wsize[0]); 428 wsize = reallocarray(NULL, totalnum, sizeof wsize[0]);
429 wNAF_len = malloc(totalnum * sizeof wNAF_len[0]); 429 wNAF_len = reallocarray(NULL, totalnum, sizeof wNAF_len[0]);
430 wNAF = malloc((totalnum + 1) * sizeof wNAF[0]); /* includes space for 430 /* includes space for pivot */
431 * pivot */ 431 wNAF = reallocarray(NULL, (totalnum + 1), sizeof wNAF[0]);
432 val_sub = malloc(totalnum * sizeof val_sub[0]); 432 val_sub = reallocarray(NULL, totalnum, sizeof val_sub[0]);
433 433
434 if (!wsize || !wNAF_len || !wNAF || !val_sub) { 434 if (!wsize || !wNAF_len || !wNAF || !val_sub) {
435 ECerr(EC_F_EC_WNAF_MUL, ERR_R_MALLOC_FAILURE); 435 ECerr(EC_F_EC_WNAF_MUL, ERR_R_MALLOC_FAILURE);
@@ -573,7 +573,7 @@ ec_wNAF_mul(const EC_GROUP * group, EC_POINT * r, const BIGNUM * scalar,
573 * to a subarray of 'pre_comp->points' if we already have 573 * to a subarray of 'pre_comp->points' if we already have
574 * precomputation. 574 * precomputation.
575 */ 575 */
576 val = malloc((num_val + 1) * sizeof val[0]); 576 val = reallocarray(NULL, (num_val + 1), sizeof val[0]);
577 if (val == NULL) { 577 if (val == NULL) {
578 ECerr(EC_F_EC_WNAF_MUL, ERR_R_MALLOC_FAILURE); 578 ECerr(EC_F_EC_WNAF_MUL, ERR_R_MALLOC_FAILURE);
579 goto err; 579 goto err;
@@ -790,7 +790,7 @@ ec_wNAF_precompute_mult(EC_GROUP * group, BN_CTX * ctx)
790 num = pre_points_per_block * numblocks; /* number of points to 790 num = pre_points_per_block * numblocks; /* number of points to
791 * compute and store */ 791 * compute and store */
792 792
793 points = malloc(sizeof(EC_POINT *) * (num + 1)); 793 points = reallocarray(NULL, sizeof(EC_POINT *), (num + 1));
794 if (!points) { 794 if (!points) {
795 ECerr(EC_F_EC_WNAF_PRECOMPUTE_MULT, ERR_R_MALLOC_FAILURE); 795 ECerr(EC_F_EC_WNAF_PRECOMPUTE_MULT, ERR_R_MALLOC_FAILURE);
796 goto err; 796 goto err;