diff options
author | deraadt <> | 2014-05-29 21:07:43 +0000 |
---|---|---|
committer | deraadt <> | 2014-05-29 21:07:43 +0000 |
commit | 3d662abca6b2a7f5bc9108b036434d61fcdb6e53 (patch) | |
tree | d5fe0c330801f3e72c7b588264c6027636db4330 | |
parent | d205a2aecb99564cccfbea61c39ebe3b0ddd7fb7 (diff) | |
download | openbsd-3d662abca6b2a7f5bc9108b036434d61fcdb6e53.tar.gz openbsd-3d662abca6b2a7f5bc9108b036434d61fcdb6e53.tar.bz2 openbsd-3d662abca6b2a7f5bc9108b036434d61fcdb6e53.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
51 files changed, 109 insertions, 93 deletions
diff --git a/src/lib/libcrypto/asn1/a_set.c b/src/lib/libcrypto/asn1/a_set.c index 3aeb7e54ff..8101f7722d 100644 --- a/src/lib/libcrypto/asn1/a_set.c +++ b/src/lib/libcrypto/asn1/a_set.c | |||
@@ -121,7 +121,7 @@ i2d_ASN1_SET(STACK_OF(OPENSSL_BLOCK) *a, unsigned char **pp, i2d_of_void *i2d, | |||
121 | 121 | ||
122 | pStart = p; /* Catch the beg of Setblobs*/ | 122 | pStart = p; /* Catch the beg of Setblobs*/ |
123 | /* In this array we will store the SET blobs */ | 123 | /* In this array we will store the SET blobs */ |
124 | rgSetBlob = malloc(sk_OPENSSL_BLOCK_num(a) * sizeof(MYBLOB)); | 124 | rgSetBlob = reallocarray(NULL, sk_OPENSSL_BLOCK_num(a), sizeof(MYBLOB)); |
125 | if (rgSetBlob == NULL) { | 125 | if (rgSetBlob == NULL) { |
126 | ASN1err(ASN1_F_I2D_ASN1_SET, ERR_R_MALLOC_FAILURE); | 126 | ASN1err(ASN1_F_I2D_ASN1_SET, ERR_R_MALLOC_FAILURE); |
127 | return 0; | 127 | return 0; |
diff --git a/src/lib/libcrypto/asn1/tasn_enc.c b/src/lib/libcrypto/asn1/tasn_enc.c index f5fc8820f6..cfceabe5a9 100644 --- a/src/lib/libcrypto/asn1/tasn_enc.c +++ b/src/lib/libcrypto/asn1/tasn_enc.c | |||
@@ -435,7 +435,7 @@ asn1_set_seq_out(STACK_OF(ASN1_VALUE) *sk, unsigned char **out, int skcontlen, | |||
435 | if (sk_ASN1_VALUE_num(sk) < 2) | 435 | if (sk_ASN1_VALUE_num(sk) < 2) |
436 | do_sort = 0; | 436 | do_sort = 0; |
437 | else { | 437 | else { |
438 | derlst = malloc(sk_ASN1_VALUE_num(sk) * | 438 | derlst = reallocarray(NULL, sk_ASN1_VALUE_num(sk), |
439 | sizeof(*derlst)); | 439 | sizeof(*derlst)); |
440 | tmpdat = malloc(skcontlen); | 440 | tmpdat = malloc(skcontlen); |
441 | if (!derlst || !tmpdat) { | 441 | if (!derlst || !tmpdat) { |
diff --git a/src/lib/libcrypto/bn/bn_ctx.c b/src/lib/libcrypto/bn/bn_ctx.c index 7407dade50..2368e25183 100644 --- a/src/lib/libcrypto/bn/bn_ctx.c +++ b/src/lib/libcrypto/bn/bn_ctx.c | |||
@@ -349,8 +349,8 @@ BN_STACK_push(BN_STACK *st, unsigned int idx) | |||
349 | { | 349 | { |
350 | unsigned int newsize = (st->size ? | 350 | unsigned int newsize = (st->size ? |
351 | (st->size * 3 / 2) : BN_CTX_START_FRAMES); | 351 | (st->size * 3 / 2) : BN_CTX_START_FRAMES); |
352 | unsigned int *newitems = malloc(newsize * | 352 | unsigned int *newitems = reallocarray(NULL, |
353 | sizeof(unsigned int)); | 353 | newsize, sizeof(unsigned int)); |
354 | if (!newitems) | 354 | if (!newitems) |
355 | return 0; | 355 | return 0; |
356 | if (st->depth) | 356 | if (st->depth) |
diff --git a/src/lib/libcrypto/bn/bn_gf2m.c b/src/lib/libcrypto/bn/bn_gf2m.c index 4000fb8733..4bd50924d3 100644 --- a/src/lib/libcrypto/bn/bn_gf2m.c +++ b/src/lib/libcrypto/bn/bn_gf2m.c | |||
@@ -547,7 +547,7 @@ BN_GF2m_mod_mul(BIGNUM *r, const BIGNUM *a, const BIGNUM *b, const BIGNUM *p, | |||
547 | bn_check_top(a); | 547 | bn_check_top(a); |
548 | bn_check_top(b); | 548 | bn_check_top(b); |
549 | bn_check_top(p); | 549 | bn_check_top(p); |
550 | if ((arr = (int *)malloc(sizeof(int) * max)) == NULL) | 550 | if ((arr = reallocarray(NULL, sizeof(int), max)) == NULL) |
551 | goto err; | 551 | goto err; |
552 | ret = BN_GF2m_poly2arr(p, arr, max); | 552 | ret = BN_GF2m_poly2arr(p, arr, max); |
553 | if (!ret || ret > max) { | 553 | if (!ret || ret > max) { |
@@ -609,7 +609,7 @@ BN_GF2m_mod_sqr(BIGNUM *r, const BIGNUM *a, const BIGNUM *p, BN_CTX *ctx) | |||
609 | 609 | ||
610 | bn_check_top(a); | 610 | bn_check_top(a); |
611 | bn_check_top(p); | 611 | bn_check_top(p); |
612 | if ((arr = (int *)malloc(sizeof(int) * max)) == NULL) | 612 | if ((arr = reallocarray(NULL, sizeof(int), max)) == NULL) |
613 | goto err; | 613 | goto err; |
614 | ret = BN_GF2m_poly2arr(p, arr, max); | 614 | ret = BN_GF2m_poly2arr(p, arr, max); |
615 | if (!ret || ret > max) { | 615 | if (!ret || ret > max) { |
@@ -1037,7 +1037,7 @@ BN_GF2m_mod_exp(BIGNUM *r, const BIGNUM *a, const BIGNUM *b, const BIGNUM *p, | |||
1037 | bn_check_top(a); | 1037 | bn_check_top(a); |
1038 | bn_check_top(b); | 1038 | bn_check_top(b); |
1039 | bn_check_top(p); | 1039 | bn_check_top(p); |
1040 | if ((arr = (int *)malloc(sizeof(int) * max)) == NULL) | 1040 | if ((arr = reallocarray(NULL, sizeof(int), max)) == NULL) |
1041 | goto err; | 1041 | goto err; |
1042 | ret = BN_GF2m_poly2arr(p, arr, max); | 1042 | ret = BN_GF2m_poly2arr(p, arr, max); |
1043 | if (!ret || ret > max) { | 1043 | if (!ret || ret > max) { |
@@ -1099,7 +1099,7 @@ BN_GF2m_mod_sqrt(BIGNUM *r, const BIGNUM *a, const BIGNUM *p, BN_CTX *ctx) | |||
1099 | int *arr = NULL; | 1099 | int *arr = NULL; |
1100 | bn_check_top(a); | 1100 | bn_check_top(a); |
1101 | bn_check_top(p); | 1101 | bn_check_top(p); |
1102 | if ((arr = (int *)malloc(sizeof(int) * max)) == NULL) | 1102 | if ((arr = reallocarray(NULL, sizeof(int), max)) == NULL) |
1103 | goto err; | 1103 | goto err; |
1104 | ret = BN_GF2m_poly2arr(p, arr, max); | 1104 | ret = BN_GF2m_poly2arr(p, arr, max); |
1105 | if (!ret || ret > max) { | 1105 | if (!ret || ret > max) { |
@@ -1234,7 +1234,7 @@ BN_GF2m_mod_solve_quad(BIGNUM *r, const BIGNUM *a, const BIGNUM *p, BN_CTX *ctx) | |||
1234 | 1234 | ||
1235 | bn_check_top(a); | 1235 | bn_check_top(a); |
1236 | bn_check_top(p); | 1236 | bn_check_top(p); |
1237 | if ((arr = (int *)malloc(sizeof(int) * max)) == NULL) | 1237 | if ((arr = reallocarray(NULL, sizeof(int), max)) == NULL) |
1238 | goto err; | 1238 | goto err; |
1239 | ret = BN_GF2m_poly2arr(p, arr, max); | 1239 | ret = BN_GF2m_poly2arr(p, arr, max); |
1240 | if (!ret || ret > max) { | 1240 | if (!ret || ret > max) { |
diff --git a/src/lib/libcrypto/bn/bn_lib.c b/src/lib/libcrypto/bn/bn_lib.c index a3a96662e8..28489f8181 100644 --- a/src/lib/libcrypto/bn/bn_lib.c +++ b/src/lib/libcrypto/bn/bn_lib.c | |||
@@ -245,7 +245,7 @@ BN_new(void) | |||
245 | { | 245 | { |
246 | BIGNUM *ret; | 246 | BIGNUM *ret; |
247 | 247 | ||
248 | if ((ret = (BIGNUM *)malloc(sizeof(BIGNUM))) == NULL) { | 248 | if ((ret = malloc(sizeof(BIGNUM))) == NULL) { |
249 | BNerr(BN_F_BN_NEW, ERR_R_MALLOC_FAILURE); | 249 | BNerr(BN_F_BN_NEW, ERR_R_MALLOC_FAILURE); |
250 | return (NULL); | 250 | return (NULL); |
251 | } | 251 | } |
@@ -278,7 +278,7 @@ bn_expand_internal(const BIGNUM *b, int words) | |||
278 | BN_R_EXPAND_ON_STATIC_BIGNUM_DATA); | 278 | BN_R_EXPAND_ON_STATIC_BIGNUM_DATA); |
279 | return (NULL); | 279 | return (NULL); |
280 | } | 280 | } |
281 | a = A = (BN_ULONG *)malloc(sizeof(BN_ULONG)*words); | 281 | a = A = reallocarray(NULL, sizeof(BN_ULONG), words); |
282 | if (A == NULL) { | 282 | if (A == NULL) { |
283 | BNerr(BN_F_BN_EXPAND_INTERNAL, ERR_R_MALLOC_FAILURE); | 283 | BNerr(BN_F_BN_EXPAND_INTERNAL, ERR_R_MALLOC_FAILURE); |
284 | return (NULL); | 284 | return (NULL); |
diff --git a/src/lib/libcrypto/bn/bn_print.c b/src/lib/libcrypto/bn/bn_print.c index 3a0fb25369..ea5fa5c3da 100644 --- a/src/lib/libcrypto/bn/bn_print.c +++ b/src/lib/libcrypto/bn/bn_print.c | |||
@@ -116,7 +116,7 @@ BN_bn2dec(const BIGNUM *a) | |||
116 | */ | 116 | */ |
117 | i = BN_num_bits(a) * 3; | 117 | i = BN_num_bits(a) * 3; |
118 | num = (i / 10 + i / 1000 + 1) + 1; | 118 | num = (i / 10 + i / 1000 + 1) + 1; |
119 | bn_data = (BN_ULONG *)malloc((num / BN_DEC_NUM + 1) * sizeof(BN_ULONG)); | 119 | bn_data = reallocarray(NULL, num / BN_DEC_NUM + 1, sizeof(BN_ULONG)); |
120 | buf = (char *)malloc(num + 3); | 120 | buf = (char *)malloc(num + 3); |
121 | if ((buf == NULL) || (bn_data == NULL)) { | 121 | if ((buf == NULL) || (bn_data == NULL)) { |
122 | BNerr(BN_F_BN_BN2DEC, ERR_R_MALLOC_FAILURE); | 122 | BNerr(BN_F_BN_BN2DEC, ERR_R_MALLOC_FAILURE); |
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; |
diff --git a/src/lib/libcrypto/ec/ecp_nistp224.c b/src/lib/libcrypto/ec/ecp_nistp224.c index 53aced54d5..6e9b9fac3c 100644 --- a/src/lib/libcrypto/ec/ecp_nistp224.c +++ b/src/lib/libcrypto/ec/ecp_nistp224.c | |||
@@ -1438,7 +1438,8 @@ ec_GFp_nistp224_points_mul(const EC_GROUP * group, EC_POINT * r, | |||
1438 | secrets = calloc(num_points, sizeof(felem_bytearray)); | 1438 | secrets = calloc(num_points, sizeof(felem_bytearray)); |
1439 | pre_comp = calloc(num_points, 17 * 3 * sizeof(felem)); | 1439 | pre_comp = calloc(num_points, 17 * 3 * sizeof(felem)); |
1440 | if (mixed) | 1440 | if (mixed) |
1441 | tmp_felems = malloc((num_points * 17 + 1) * sizeof(felem)); | 1441 | tmp_felems = reallocarray(NULL, |
1442 | (num_points * 17 + 1), sizeof(felem)); | ||
1442 | if ((secrets == NULL) || (pre_comp == NULL) || (mixed && (tmp_felems == NULL))) { | 1443 | if ((secrets == NULL) || (pre_comp == NULL) || (mixed && (tmp_felems == NULL))) { |
1443 | ECerr(EC_F_EC_GFP_NISTP224_POINTS_MUL, ERR_R_MALLOC_FAILURE); | 1444 | ECerr(EC_F_EC_GFP_NISTP224_POINTS_MUL, ERR_R_MALLOC_FAILURE); |
1444 | goto err; | 1445 | goto err; |
diff --git a/src/lib/libcrypto/ec/ecp_nistp256.c b/src/lib/libcrypto/ec/ecp_nistp256.c index df80cc2b8a..b2398e106c 100644 --- a/src/lib/libcrypto/ec/ecp_nistp256.c +++ b/src/lib/libcrypto/ec/ecp_nistp256.c | |||
@@ -1987,8 +1987,11 @@ ec_GFp_nistp256_points_mul(const EC_GROUP * group, EC_POINT * r, | |||
1987 | } | 1987 | } |
1988 | secrets = calloc(num_points, sizeof(felem_bytearray)); | 1988 | secrets = calloc(num_points, sizeof(felem_bytearray)); |
1989 | pre_comp = calloc(num_points, 17 * 3 * sizeof(smallfelem)); | 1989 | pre_comp = calloc(num_points, 17 * 3 * sizeof(smallfelem)); |
1990 | if (mixed) | 1990 | if (mixed) { |
1991 | tmp_smallfelems = malloc((num_points * 17 + 1) * sizeof(smallfelem)); | 1991 | /* XXX should do more int overflow checking */ |
1992 | tmp_smallfelems = reallocarray(NULL, | ||
1993 | (num_points * 17 + 1), sizeof(smallfelem)); | ||
1994 | } | ||
1992 | if ((secrets == NULL) || (pre_comp == NULL) || (mixed && (tmp_smallfelems == NULL))) { | 1995 | if ((secrets == NULL) || (pre_comp == NULL) || (mixed && (tmp_smallfelems == NULL))) { |
1993 | ECerr(EC_F_EC_GFP_NISTP256_POINTS_MUL, ERR_R_MALLOC_FAILURE); | 1996 | ECerr(EC_F_EC_GFP_NISTP256_POINTS_MUL, ERR_R_MALLOC_FAILURE); |
1994 | goto err; | 1997 | goto err; |
diff --git a/src/lib/libcrypto/ec/ecp_nistp521.c b/src/lib/libcrypto/ec/ecp_nistp521.c index 6792c5b71d..083e017cdc 100644 --- a/src/lib/libcrypto/ec/ecp_nistp521.c +++ b/src/lib/libcrypto/ec/ecp_nistp521.c | |||
@@ -1874,8 +1874,11 @@ ec_GFp_nistp521_points_mul(const EC_GROUP * group, EC_POINT * r, | |||
1874 | } | 1874 | } |
1875 | secrets = calloc(num_points, sizeof(felem_bytearray)); | 1875 | secrets = calloc(num_points, sizeof(felem_bytearray)); |
1876 | pre_comp = calloc(num_points, 17 * 3 * sizeof(felem)); | 1876 | pre_comp = calloc(num_points, 17 * 3 * sizeof(felem)); |
1877 | if (mixed) | 1877 | if (mixed) { |
1878 | tmp_felems = malloc((num_points * 17 + 1) * sizeof(felem)); | 1878 | /* XXX should do more int overflow checking */ |
1879 | tmp_felems = reallocarray(NULL, | ||
1880 | (num_points * 17 + 1), sizeof(felem)); | ||
1881 | } | ||
1879 | if ((secrets == NULL) || (pre_comp == NULL) || (mixed && (tmp_felems == NULL))) { | 1882 | if ((secrets == NULL) || (pre_comp == NULL) || (mixed && (tmp_felems == NULL))) { |
1880 | ECerr(EC_F_EC_GFP_NISTP521_POINTS_MUL, ERR_R_MALLOC_FAILURE); | 1883 | ECerr(EC_F_EC_GFP_NISTP521_POINTS_MUL, ERR_R_MALLOC_FAILURE); |
1881 | goto err; | 1884 | goto err; |
diff --git a/src/lib/libcrypto/ec/ecp_smpl.c b/src/lib/libcrypto/ec/ecp_smpl.c index b87410120d..46783a47a8 100644 --- a/src/lib/libcrypto/ec/ecp_smpl.c +++ b/src/lib/libcrypto/ec/ecp_smpl.c | |||
@@ -1257,7 +1257,7 @@ ec_GFp_simple_points_make_affine(const EC_GROUP * group, size_t num, EC_POINT * | |||
1257 | */ | 1257 | */ |
1258 | pow2 <<= 1; | 1258 | pow2 <<= 1; |
1259 | 1259 | ||
1260 | heap = malloc(pow2 * sizeof heap[0]); | 1260 | heap = reallocarray(NULL, pow2, sizeof heap[0]); |
1261 | if (heap == NULL) | 1261 | if (heap == NULL) |
1262 | goto err; | 1262 | goto err; |
1263 | 1263 | ||
diff --git a/src/lib/libcrypto/engine/eng_rsax.c b/src/lib/libcrypto/engine/eng_rsax.c index 1b15b6f1a3..0f8e1cd498 100644 --- a/src/lib/libcrypto/engine/eng_rsax.c +++ b/src/lib/libcrypto/engine/eng_rsax.c | |||
@@ -268,7 +268,7 @@ static E_RSAX_MOD_CTX *e_rsax_get_ctx(RSA *rsa, int idx, BIGNUM* m) | |||
268 | 268 | ||
269 | hptr = RSA_get_ex_data(rsa, rsax_ex_data_idx); | 269 | hptr = RSA_get_ex_data(rsa, rsax_ex_data_idx); |
270 | if (!hptr) { | 270 | if (!hptr) { |
271 | hptr = malloc(3*sizeof(E_RSAX_MOD_CTX)); | 271 | hptr = reallocarray(NULL, 3, sizeof(E_RSAX_MOD_CTX)); |
272 | if (!hptr) return NULL; | 272 | if (!hptr) return NULL; |
273 | hptr[2].type = hptr[1].type= hptr[0].type = 0; | 273 | hptr[2].type = hptr[1].type= hptr[0].type = 0; |
274 | RSA_set_ex_data(rsa, rsax_ex_data_idx, hptr); | 274 | RSA_set_ex_data(rsa, rsax_ex_data_idx, hptr); |
diff --git a/src/lib/libcrypto/ex_data.c b/src/lib/libcrypto/ex_data.c index d8d25d320e..5cd01c72d1 100644 --- a/src/lib/libcrypto/ex_data.c +++ b/src/lib/libcrypto/ex_data.c | |||
@@ -424,7 +424,7 @@ int_new_ex_data(int class_index, void *obj, CRYPTO_EX_DATA *ad) | |||
424 | CRYPTO_r_lock(CRYPTO_LOCK_EX_DATA); | 424 | CRYPTO_r_lock(CRYPTO_LOCK_EX_DATA); |
425 | mx = sk_CRYPTO_EX_DATA_FUNCS_num(item->meth); | 425 | mx = sk_CRYPTO_EX_DATA_FUNCS_num(item->meth); |
426 | if (mx > 0) { | 426 | if (mx > 0) { |
427 | storage = malloc(mx * sizeof(CRYPTO_EX_DATA_FUNCS*)); | 427 | storage = reallocarray(NULL, mx, sizeof(CRYPTO_EX_DATA_FUNCS*)); |
428 | if (!storage) | 428 | if (!storage) |
429 | goto skip; | 429 | goto skip; |
430 | for (i = 0; i < mx; i++) | 430 | for (i = 0; i < mx; i++) |
@@ -468,7 +468,7 @@ int_dup_ex_data(int class_index, CRYPTO_EX_DATA *to, CRYPTO_EX_DATA *from) | |||
468 | if (j < mx) | 468 | if (j < mx) |
469 | mx = j; | 469 | mx = j; |
470 | if (mx > 0) { | 470 | if (mx > 0) { |
471 | storage = malloc(mx * sizeof(CRYPTO_EX_DATA_FUNCS*)); | 471 | storage = reallocarray(NULL, mx, sizeof(CRYPTO_EX_DATA_FUNCS*)); |
472 | if (!storage) | 472 | if (!storage) |
473 | goto skip; | 473 | goto skip; |
474 | for (i = 0; i < mx; i++) | 474 | for (i = 0; i < mx; i++) |
@@ -505,7 +505,7 @@ int_free_ex_data(int class_index, void *obj, CRYPTO_EX_DATA *ad) | |||
505 | CRYPTO_r_lock(CRYPTO_LOCK_EX_DATA); | 505 | CRYPTO_r_lock(CRYPTO_LOCK_EX_DATA); |
506 | mx = sk_CRYPTO_EX_DATA_FUNCS_num(item->meth); | 506 | mx = sk_CRYPTO_EX_DATA_FUNCS_num(item->meth); |
507 | if (mx > 0) { | 507 | if (mx > 0) { |
508 | storage = malloc(mx * sizeof(CRYPTO_EX_DATA_FUNCS*)); | 508 | storage = reallocarray(NULL, mx, sizeof(CRYPTO_EX_DATA_FUNCS*)); |
509 | if (!storage) | 509 | if (!storage) |
510 | goto skip; | 510 | goto skip; |
511 | for (i = 0; i < mx; i++) | 511 | for (i = 0; i < mx; i++) |
diff --git a/src/lib/libcrypto/lhash/lhash.c b/src/lib/libcrypto/lhash/lhash.c index ad24a7726b..e75a43f506 100644 --- a/src/lib/libcrypto/lhash/lhash.c +++ b/src/lib/libcrypto/lhash/lhash.c | |||
@@ -119,7 +119,7 @@ lh_new(LHASH_HASH_FN_TYPE h, LHASH_COMP_FN_TYPE c) | |||
119 | 119 | ||
120 | if ((ret = malloc(sizeof(_LHASH))) == NULL) | 120 | if ((ret = malloc(sizeof(_LHASH))) == NULL) |
121 | goto err0; | 121 | goto err0; |
122 | if ((ret->b = malloc(sizeof(LHASH_NODE *) * MIN_NODES)) == NULL) | 122 | if ((ret->b = reallocarray(NULL, sizeof(LHASH_NODE *), MIN_NODES)) == NULL) |
123 | goto err1; | 123 | goto err1; |
124 | for (i = 0; i < MIN_NODES; i++) | 124 | for (i = 0; i < MIN_NODES; i++) |
125 | ret->b[i] = NULL; | 125 | ret->b[i] = NULL; |
diff --git a/src/lib/libcrypto/objects/o_names.c b/src/lib/libcrypto/objects/o_names.c index 196d3ab0a7..169b8ae87d 100644 --- a/src/lib/libcrypto/objects/o_names.c +++ b/src/lib/libcrypto/objects/o_names.c | |||
@@ -292,7 +292,8 @@ OBJ_NAME_do_all_sorted(int type, void (*fn)(const OBJ_NAME *, void *arg), | |||
292 | int n; | 292 | int n; |
293 | 293 | ||
294 | d.type = type; | 294 | d.type = type; |
295 | d.names = malloc(lh_OBJ_NAME_num_items(names_lh)*sizeof *d.names); | 295 | d.names = reallocarray(NULL, lh_OBJ_NAME_num_items(names_lh), |
296 | sizeof *d.names); | ||
296 | d.n = 0; | 297 | d.n = 0; |
297 | OBJ_NAME_do_all(type, do_all_sorted_fn, &d); | 298 | OBJ_NAME_do_all(type, do_all_sorted_fn, &d); |
298 | 299 | ||
diff --git a/src/lib/libcrypto/objects/obj_xref.c b/src/lib/libcrypto/objects/obj_xref.c index 25aed74ff1..8e9128efc4 100644 --- a/src/lib/libcrypto/objects/obj_xref.c +++ b/src/lib/libcrypto/objects/obj_xref.c | |||
@@ -164,7 +164,7 @@ OBJ_add_sigid(int signid, int dig_id, int pkey_id) | |||
164 | sigx_app = sk_nid_triple_new(sigx_cmp); | 164 | sigx_app = sk_nid_triple_new(sigx_cmp); |
165 | if (!sigx_app) | 165 | if (!sigx_app) |
166 | return 0; | 166 | return 0; |
167 | ntr = malloc(sizeof(int) * 3); | 167 | ntr = reallocarray(NULL, sizeof(int), 3); |
168 | if (!ntr) | 168 | if (!ntr) |
169 | return 0; | 169 | return 0; |
170 | ntr->sign_id = signid; | 170 | ntr->sign_id = signid; |
diff --git a/src/lib/libcrypto/pem/pem_lib.c b/src/lib/libcrypto/pem/pem_lib.c index 58d2bfbee9..945262f019 100644 --- a/src/lib/libcrypto/pem/pem_lib.c +++ b/src/lib/libcrypto/pem/pem_lib.c | |||
@@ -605,7 +605,7 @@ PEM_write_bio(BIO *bp, const char *name, char *header, unsigned char *data, | |||
605 | goto err; | 605 | goto err; |
606 | } | 606 | } |
607 | 607 | ||
608 | buf = malloc(PEM_BUFSIZE * 8); | 608 | buf = reallocarray(NULL, PEM_BUFSIZE, 8); |
609 | if (buf == NULL) { | 609 | if (buf == NULL) { |
610 | reason = ERR_R_MALLOC_FAILURE; | 610 | reason = ERR_R_MALLOC_FAILURE; |
611 | goto err; | 611 | goto err; |
diff --git a/src/lib/libcrypto/pem/pem_seal.c b/src/lib/libcrypto/pem/pem_seal.c index 92b70157cd..a7b9379223 100644 --- a/src/lib/libcrypto/pem/pem_seal.c +++ b/src/lib/libcrypto/pem/pem_seal.c | |||
@@ -85,7 +85,7 @@ PEM_SealInit(PEM_ENCODE_SEAL_CTX *ctx, EVP_CIPHER *type, EVP_MD *md_type, | |||
85 | if (j > max) | 85 | if (j > max) |
86 | max = j; | 86 | max = j; |
87 | } | 87 | } |
88 | s = (char *)malloc(max*2); | 88 | s = (char *)reallocarray(NULL, max, 2); |
89 | if (s == NULL) { | 89 | if (s == NULL) { |
90 | PEMerr(PEM_F_PEM_SEALINIT, ERR_R_MALLOC_FAILURE); | 90 | PEMerr(PEM_F_PEM_SEALINIT, ERR_R_MALLOC_FAILURE); |
91 | goto err; | 91 | goto err; |
@@ -159,7 +159,7 @@ PEM_SealFinal(PEM_ENCODE_SEAL_CTX *ctx, unsigned char *sig, int *sigl, | |||
159 | i = RSA_size(priv->pkey.rsa); | 159 | i = RSA_size(priv->pkey.rsa); |
160 | if (i < 100) | 160 | if (i < 100) |
161 | i = 100; | 161 | i = 100; |
162 | s = (unsigned char *)malloc(i*2); | 162 | s = reallocarray(NULL, i, 2); |
163 | if (s == NULL) { | 163 | if (s == NULL) { |
164 | PEMerr(PEM_F_PEM_SEALFINAL, ERR_R_MALLOC_FAILURE); | 164 | PEMerr(PEM_F_PEM_SEALFINAL, ERR_R_MALLOC_FAILURE); |
165 | goto err; | 165 | goto err; |
diff --git a/src/lib/libcrypto/srp/srp_lib.c b/src/lib/libcrypto/srp/srp_lib.c index a3a67eda2e..77e2c2c2f2 100644 --- a/src/lib/libcrypto/srp/srp_lib.c +++ b/src/lib/libcrypto/srp/srp_lib.c | |||
@@ -121,7 +121,7 @@ BIGNUM *SRP_Calc_u(BIGNUM *A, BIGNUM *B, BIGNUM *N) | |||
121 | 121 | ||
122 | longN= BN_num_bytes(N); | 122 | longN= BN_num_bytes(N); |
123 | 123 | ||
124 | if ((cAB = malloc(2*longN)) == NULL) | 124 | if ((cAB = reallocarray(NULL, 2, longN)) == NULL) |
125 | return NULL; | 125 | return NULL; |
126 | 126 | ||
127 | memset(cAB, 0, longN); | 127 | memset(cAB, 0, longN); |
diff --git a/src/lib/libcrypto/srp/srp_vfy.c b/src/lib/libcrypto/srp/srp_vfy.c index de7dbe5bbd..6ad80ef992 100644 --- a/src/lib/libcrypto/srp/srp_vfy.c +++ b/src/lib/libcrypto/srp/srp_vfy.c | |||
@@ -573,7 +573,7 @@ char *SRP_create_verifier(const char *user, const char *pass, char **salt, | |||
573 | if(!SRP_create_verifier_BN(user, pass, &s, &v, N_bn, g_bn)) goto err; | 573 | if(!SRP_create_verifier_BN(user, pass, &s, &v, N_bn, g_bn)) goto err; |
574 | 574 | ||
575 | BN_bn2bin(v,tmp); | 575 | BN_bn2bin(v,tmp); |
576 | if (((vf = malloc(BN_num_bytes(v)*2)) == NULL)) | 576 | if (((vf = reallocarray(NULL, BN_num_bytes(v), 2)) == NULL)) |
577 | goto err; | 577 | goto err; |
578 | t_tob64(vf, tmp, BN_num_bytes(v)); | 578 | t_tob64(vf, tmp, BN_num_bytes(v)); |
579 | 579 | ||
@@ -582,7 +582,7 @@ char *SRP_create_verifier(const char *user, const char *pass, char **salt, | |||
582 | { | 582 | { |
583 | char *tmp_salt; | 583 | char *tmp_salt; |
584 | 584 | ||
585 | if ((tmp_salt = malloc(SRP_RANDOM_SALT_LEN * 2)) == NULL) | 585 | if ((tmp_salt = reallocarray(NULL, SRP_RANDOM_SALT_LEN, 2)) == NULL) |
586 | { | 586 | { |
587 | free(vf); | 587 | free(vf); |
588 | goto err; | 588 | goto err; |
diff --git a/src/lib/libcrypto/txt_db/txt_db.c b/src/lib/libcrypto/txt_db/txt_db.c index a2afa3df23..0f3a7ffbb3 100644 --- a/src/lib/libcrypto/txt_db/txt_db.c +++ b/src/lib/libcrypto/txt_db/txt_db.c | |||
@@ -94,9 +94,9 @@ TXT_DB_read(BIO *in, int num) | |||
94 | ret->qual = NULL; | 94 | ret->qual = NULL; |
95 | if ((ret->data = sk_OPENSSL_PSTRING_new_null()) == NULL) | 95 | if ((ret->data = sk_OPENSSL_PSTRING_new_null()) == NULL) |
96 | goto err; | 96 | goto err; |
97 | if ((ret->index = malloc(sizeof(*ret->index)*num)) == NULL) | 97 | if ((ret->index = reallocarray(NULL, sizeof(*ret->index), num)) == NULL) |
98 | goto err; | 98 | goto err; |
99 | if ((ret->qual = malloc(sizeof(*(ret->qual))*num)) == NULL) | 99 | if ((ret->qual = reallocarray(NULL, sizeof(*(ret->qual)), num)) == NULL) |
100 | goto err; | 100 | goto err; |
101 | for (i = 0; i < num; i++) { | 101 | for (i = 0; i < num; i++) { |
102 | ret->index[i] = NULL; | 102 | ret->index[i] = NULL; |
diff --git a/src/lib/libcrypto/x509/x509spki.c b/src/lib/libcrypto/x509/x509spki.c index b5f67b5a97..23172fdb8e 100644 --- a/src/lib/libcrypto/x509/x509spki.c +++ b/src/lib/libcrypto/x509/x509spki.c | |||
@@ -115,7 +115,7 @@ NETSCAPE_SPKI_b64_encode(NETSCAPE_SPKI *spki) | |||
115 | int der_len; | 115 | int der_len; |
116 | der_len = i2d_NETSCAPE_SPKI(spki, NULL); | 116 | der_len = i2d_NETSCAPE_SPKI(spki, NULL); |
117 | der_spki = malloc(der_len); | 117 | der_spki = malloc(der_len); |
118 | b64_str = malloc(der_len * 2); | 118 | b64_str = reallocarray(NULL, der_len, 2); |
119 | if (!der_spki || !b64_str) { | 119 | if (!der_spki || !b64_str) { |
120 | X509err(X509_F_NETSCAPE_SPKI_B64_ENCODE, ERR_R_MALLOC_FAILURE); | 120 | X509err(X509_F_NETSCAPE_SPKI_B64_ENCODE, ERR_R_MALLOC_FAILURE); |
121 | free(der_spki); | 121 | free(der_spki); |
diff --git a/src/lib/libcrypto/x509v3/pcy_tree.c b/src/lib/libcrypto/x509v3/pcy_tree.c index ebc4809371..080a87d674 100644 --- a/src/lib/libcrypto/x509v3/pcy_tree.c +++ b/src/lib/libcrypto/x509v3/pcy_tree.c | |||
@@ -220,7 +220,7 @@ tree_init(X509_POLICY_TREE **ptree, STACK_OF(X509) *certs, unsigned int flags) | |||
220 | return 0; | 220 | return 0; |
221 | 221 | ||
222 | tree->flags = 0; | 222 | tree->flags = 0; |
223 | tree->levels = malloc(sizeof(X509_POLICY_LEVEL) * n); | 223 | tree->levels = reallocarray(NULL, sizeof(X509_POLICY_LEVEL), n); |
224 | tree->nlevel = 0; | 224 | tree->nlevel = 0; |
225 | tree->extra_data = NULL; | 225 | tree->extra_data = NULL; |
226 | tree->auth_policies = NULL; | 226 | tree->auth_policies = NULL; |
diff --git a/src/lib/libssl/src/apps/apps.c b/src/lib/libssl/src/apps/apps.c index 6d1faab482..a5ffee3e5f 100644 --- a/src/lib/libssl/src/apps/apps.c +++ b/src/lib/libssl/src/apps/apps.c | |||
@@ -214,7 +214,7 @@ chopup_args(ARGS *arg, char *buf, int *argc, char **argv[]) | |||
214 | i = 0; | 214 | i = 0; |
215 | if (arg->count == 0) { | 215 | if (arg->count == 0) { |
216 | arg->count = 20; | 216 | arg->count = 20; |
217 | arg->data = (char **)malloc(sizeof(char *) * arg->count); | 217 | arg->data = reallocarray(NULL, sizeof(char *), arg->count); |
218 | } | 218 | } |
219 | for (i = 0; i < arg->count; i++) | 219 | for (i = 0; i < arg->count; i++) |
220 | arg->data[i] = NULL; | 220 | arg->data[i] = NULL; |
@@ -1838,9 +1838,9 @@ parse_name(char *subject, long chtype, int multirdn) | |||
1838 | * only become shorter */ | 1838 | * only become shorter */ |
1839 | char *buf = malloc(buflen); | 1839 | char *buf = malloc(buflen); |
1840 | size_t max_ne = buflen / 2 + 1; /* maximum number of name elements */ | 1840 | size_t max_ne = buflen / 2 + 1; /* maximum number of name elements */ |
1841 | char **ne_types = malloc(max_ne * sizeof(char *)); | 1841 | char **ne_types = reallocarray(NULL, max_ne, sizeof(char *)); |
1842 | char **ne_values = malloc(max_ne * sizeof(char *)); | 1842 | char **ne_values = reallocarray(NULL, max_ne, sizeof(char *)); |
1843 | int *mval = malloc(max_ne * sizeof(int)); | 1843 | int *mval = reallocarray(NULL, max_ne, sizeof(int)); |
1844 | 1844 | ||
1845 | char *sp = subject, *bp = buf; | 1845 | char *sp = subject, *bp = buf; |
1846 | int i, ne_num = 0; | 1846 | int i, ne_num = 0; |
diff --git a/src/lib/libssl/src/apps/ca.c b/src/lib/libssl/src/apps/ca.c index 87b5dd1511..89c4f84613 100644 --- a/src/lib/libssl/src/apps/ca.c +++ b/src/lib/libssl/src/apps/ca.c | |||
@@ -1974,7 +1974,7 @@ again2: | |||
1974 | row[DB_type][0] = 'V'; | 1974 | row[DB_type][0] = 'V'; |
1975 | row[DB_type][1] = '\0'; | 1975 | row[DB_type][1] = '\0'; |
1976 | 1976 | ||
1977 | if ((irow = (char **)malloc(sizeof(char *) * (DB_NUMBER + 1))) == | 1977 | if ((irow = reallocarray(NULL, sizeof(char *), (DB_NUMBER + 1))) == |
1978 | NULL) { | 1978 | NULL) { |
1979 | BIO_printf(bio_err, "Memory allocation failure\n"); | 1979 | BIO_printf(bio_err, "Memory allocation failure\n"); |
1980 | goto err; | 1980 | goto err; |
@@ -2238,7 +2238,7 @@ do_revoke(X509 * x509, CA_DB * db, int type, char *value) | |||
2238 | row[DB_type][0] = 'V'; | 2238 | row[DB_type][0] = 'V'; |
2239 | row[DB_type][1] = '\0'; | 2239 | row[DB_type][1] = '\0'; |
2240 | 2240 | ||
2241 | if ((irow = (char **)malloc(sizeof(char *) * | 2241 | if ((irow = reallocarray(NULL, sizeof(char *), |
2242 | (DB_NUMBER + 1))) == NULL) { | 2242 | (DB_NUMBER + 1))) == NULL) { |
2243 | BIO_printf(bio_err, "Memory allocation failure\n"); | 2243 | BIO_printf(bio_err, "Memory allocation failure\n"); |
2244 | goto err; | 2244 | goto err; |
diff --git a/src/lib/libssl/src/apps/ecparam.c b/src/lib/libssl/src/apps/ecparam.c index 46c23a22d1..29eaf9ba1a 100644 --- a/src/lib/libssl/src/apps/ecparam.c +++ b/src/lib/libssl/src/apps/ecparam.c | |||
@@ -308,7 +308,7 @@ bad: | |||
308 | 308 | ||
309 | crv_len = EC_get_builtin_curves(NULL, 0); | 309 | crv_len = EC_get_builtin_curves(NULL, 0); |
310 | 310 | ||
311 | curves = malloc((int) (sizeof(EC_builtin_curve) * crv_len)); | 311 | curves = reallocarray(NULL, sizeof(EC_builtin_curve), crv_len); |
312 | 312 | ||
313 | if (curves == NULL) | 313 | if (curves == NULL) |
314 | goto end; | 314 | goto end; |
diff --git a/src/lib/libssl/src/apps/rsautl.c b/src/lib/libssl/src/apps/rsautl.c index 08d28a496b..0e4cae5ffc 100644 --- a/src/lib/libssl/src/apps/rsautl.c +++ b/src/lib/libssl/src/apps/rsautl.c | |||
@@ -253,7 +253,7 @@ rsautl_main(int argc, char **argv) | |||
253 | 253 | ||
254 | keysize = RSA_size(rsa); | 254 | keysize = RSA_size(rsa); |
255 | 255 | ||
256 | rsa_in = malloc(keysize * 2); | 256 | rsa_in = reallocarray(NULL, keysize, 2); |
257 | rsa_out = malloc(keysize); | 257 | rsa_out = malloc(keysize); |
258 | 258 | ||
259 | /* Read the input data */ | 259 | /* Read the input data */ |
diff --git a/src/lib/libssl/src/apps/speed.c b/src/lib/libssl/src/apps/speed.c index d7e212178a..da8c3b3196 100644 --- a/src/lib/libssl/src/apps/speed.c +++ b/src/lib/libssl/src/apps/speed.c | |||
@@ -2106,7 +2106,7 @@ do_multi(int multi) | |||
2106 | int *fds; | 2106 | int *fds; |
2107 | static char sep[] = ":"; | 2107 | static char sep[] = ":"; |
2108 | 2108 | ||
2109 | fds = malloc(multi * sizeof *fds); | 2109 | fds = reallocarray(NULL, multi, sizeof *fds); |
2110 | for (n = 0; n < multi; ++n) { | 2110 | for (n = 0; n < multi; ++n) { |
2111 | if (pipe(fd) == -1) { | 2111 | if (pipe(fd) == -1) { |
2112 | fprintf(stderr, "pipe failure\n"); | 2112 | fprintf(stderr, "pipe failure\n"); |
diff --git a/src/lib/libssl/src/crypto/asn1/a_set.c b/src/lib/libssl/src/crypto/asn1/a_set.c index 3aeb7e54ff..8101f7722d 100644 --- a/src/lib/libssl/src/crypto/asn1/a_set.c +++ b/src/lib/libssl/src/crypto/asn1/a_set.c | |||
@@ -121,7 +121,7 @@ i2d_ASN1_SET(STACK_OF(OPENSSL_BLOCK) *a, unsigned char **pp, i2d_of_void *i2d, | |||
121 | 121 | ||
122 | pStart = p; /* Catch the beg of Setblobs*/ | 122 | pStart = p; /* Catch the beg of Setblobs*/ |
123 | /* In this array we will store the SET blobs */ | 123 | /* In this array we will store the SET blobs */ |
124 | rgSetBlob = malloc(sk_OPENSSL_BLOCK_num(a) * sizeof(MYBLOB)); | 124 | rgSetBlob = reallocarray(NULL, sk_OPENSSL_BLOCK_num(a), sizeof(MYBLOB)); |
125 | if (rgSetBlob == NULL) { | 125 | if (rgSetBlob == NULL) { |
126 | ASN1err(ASN1_F_I2D_ASN1_SET, ERR_R_MALLOC_FAILURE); | 126 | ASN1err(ASN1_F_I2D_ASN1_SET, ERR_R_MALLOC_FAILURE); |
127 | return 0; | 127 | return 0; |
diff --git a/src/lib/libssl/src/crypto/asn1/tasn_enc.c b/src/lib/libssl/src/crypto/asn1/tasn_enc.c index f5fc8820f6..cfceabe5a9 100644 --- a/src/lib/libssl/src/crypto/asn1/tasn_enc.c +++ b/src/lib/libssl/src/crypto/asn1/tasn_enc.c | |||
@@ -435,7 +435,7 @@ asn1_set_seq_out(STACK_OF(ASN1_VALUE) *sk, unsigned char **out, int skcontlen, | |||
435 | if (sk_ASN1_VALUE_num(sk) < 2) | 435 | if (sk_ASN1_VALUE_num(sk) < 2) |
436 | do_sort = 0; | 436 | do_sort = 0; |
437 | else { | 437 | else { |
438 | derlst = malloc(sk_ASN1_VALUE_num(sk) * | 438 | derlst = reallocarray(NULL, sk_ASN1_VALUE_num(sk), |
439 | sizeof(*derlst)); | 439 | sizeof(*derlst)); |
440 | tmpdat = malloc(skcontlen); | 440 | tmpdat = malloc(skcontlen); |
441 | if (!derlst || !tmpdat) { | 441 | if (!derlst || !tmpdat) { |
diff --git a/src/lib/libssl/src/crypto/bn/bn_ctx.c b/src/lib/libssl/src/crypto/bn/bn_ctx.c index 7407dade50..2368e25183 100644 --- a/src/lib/libssl/src/crypto/bn/bn_ctx.c +++ b/src/lib/libssl/src/crypto/bn/bn_ctx.c | |||
@@ -349,8 +349,8 @@ BN_STACK_push(BN_STACK *st, unsigned int idx) | |||
349 | { | 349 | { |
350 | unsigned int newsize = (st->size ? | 350 | unsigned int newsize = (st->size ? |
351 | (st->size * 3 / 2) : BN_CTX_START_FRAMES); | 351 | (st->size * 3 / 2) : BN_CTX_START_FRAMES); |
352 | unsigned int *newitems = malloc(newsize * | 352 | unsigned int *newitems = reallocarray(NULL, |
353 | sizeof(unsigned int)); | 353 | newsize, sizeof(unsigned int)); |
354 | if (!newitems) | 354 | if (!newitems) |
355 | return 0; | 355 | return 0; |
356 | if (st->depth) | 356 | if (st->depth) |
diff --git a/src/lib/libssl/src/crypto/bn/bn_gf2m.c b/src/lib/libssl/src/crypto/bn/bn_gf2m.c index 4000fb8733..4bd50924d3 100644 --- a/src/lib/libssl/src/crypto/bn/bn_gf2m.c +++ b/src/lib/libssl/src/crypto/bn/bn_gf2m.c | |||
@@ -547,7 +547,7 @@ BN_GF2m_mod_mul(BIGNUM *r, const BIGNUM *a, const BIGNUM *b, const BIGNUM *p, | |||
547 | bn_check_top(a); | 547 | bn_check_top(a); |
548 | bn_check_top(b); | 548 | bn_check_top(b); |
549 | bn_check_top(p); | 549 | bn_check_top(p); |
550 | if ((arr = (int *)malloc(sizeof(int) * max)) == NULL) | 550 | if ((arr = reallocarray(NULL, sizeof(int), max)) == NULL) |
551 | goto err; | 551 | goto err; |
552 | ret = BN_GF2m_poly2arr(p, arr, max); | 552 | ret = BN_GF2m_poly2arr(p, arr, max); |
553 | if (!ret || ret > max) { | 553 | if (!ret || ret > max) { |
@@ -609,7 +609,7 @@ BN_GF2m_mod_sqr(BIGNUM *r, const BIGNUM *a, const BIGNUM *p, BN_CTX *ctx) | |||
609 | 609 | ||
610 | bn_check_top(a); | 610 | bn_check_top(a); |
611 | bn_check_top(p); | 611 | bn_check_top(p); |
612 | if ((arr = (int *)malloc(sizeof(int) * max)) == NULL) | 612 | if ((arr = reallocarray(NULL, sizeof(int), max)) == NULL) |
613 | goto err; | 613 | goto err; |
614 | ret = BN_GF2m_poly2arr(p, arr, max); | 614 | ret = BN_GF2m_poly2arr(p, arr, max); |
615 | if (!ret || ret > max) { | 615 | if (!ret || ret > max) { |
@@ -1037,7 +1037,7 @@ BN_GF2m_mod_exp(BIGNUM *r, const BIGNUM *a, const BIGNUM *b, const BIGNUM *p, | |||
1037 | bn_check_top(a); | 1037 | bn_check_top(a); |
1038 | bn_check_top(b); | 1038 | bn_check_top(b); |
1039 | bn_check_top(p); | 1039 | bn_check_top(p); |
1040 | if ((arr = (int *)malloc(sizeof(int) * max)) == NULL) | 1040 | if ((arr = reallocarray(NULL, sizeof(int), max)) == NULL) |
1041 | goto err; | 1041 | goto err; |
1042 | ret = BN_GF2m_poly2arr(p, arr, max); | 1042 | ret = BN_GF2m_poly2arr(p, arr, max); |
1043 | if (!ret || ret > max) { | 1043 | if (!ret || ret > max) { |
@@ -1099,7 +1099,7 @@ BN_GF2m_mod_sqrt(BIGNUM *r, const BIGNUM *a, const BIGNUM *p, BN_CTX *ctx) | |||
1099 | int *arr = NULL; | 1099 | int *arr = NULL; |
1100 | bn_check_top(a); | 1100 | bn_check_top(a); |
1101 | bn_check_top(p); | 1101 | bn_check_top(p); |
1102 | if ((arr = (int *)malloc(sizeof(int) * max)) == NULL) | 1102 | if ((arr = reallocarray(NULL, sizeof(int), max)) == NULL) |
1103 | goto err; | 1103 | goto err; |
1104 | ret = BN_GF2m_poly2arr(p, arr, max); | 1104 | ret = BN_GF2m_poly2arr(p, arr, max); |
1105 | if (!ret || ret > max) { | 1105 | if (!ret || ret > max) { |
@@ -1234,7 +1234,7 @@ BN_GF2m_mod_solve_quad(BIGNUM *r, const BIGNUM *a, const BIGNUM *p, BN_CTX *ctx) | |||
1234 | 1234 | ||
1235 | bn_check_top(a); | 1235 | bn_check_top(a); |
1236 | bn_check_top(p); | 1236 | bn_check_top(p); |
1237 | if ((arr = (int *)malloc(sizeof(int) * max)) == NULL) | 1237 | if ((arr = reallocarray(NULL, sizeof(int), max)) == NULL) |
1238 | goto err; | 1238 | goto err; |
1239 | ret = BN_GF2m_poly2arr(p, arr, max); | 1239 | ret = BN_GF2m_poly2arr(p, arr, max); |
1240 | if (!ret || ret > max) { | 1240 | if (!ret || ret > max) { |
diff --git a/src/lib/libssl/src/crypto/bn/bn_lib.c b/src/lib/libssl/src/crypto/bn/bn_lib.c index a3a96662e8..28489f8181 100644 --- a/src/lib/libssl/src/crypto/bn/bn_lib.c +++ b/src/lib/libssl/src/crypto/bn/bn_lib.c | |||
@@ -245,7 +245,7 @@ BN_new(void) | |||
245 | { | 245 | { |
246 | BIGNUM *ret; | 246 | BIGNUM *ret; |
247 | 247 | ||
248 | if ((ret = (BIGNUM *)malloc(sizeof(BIGNUM))) == NULL) { | 248 | if ((ret = malloc(sizeof(BIGNUM))) == NULL) { |
249 | BNerr(BN_F_BN_NEW, ERR_R_MALLOC_FAILURE); | 249 | BNerr(BN_F_BN_NEW, ERR_R_MALLOC_FAILURE); |
250 | return (NULL); | 250 | return (NULL); |
251 | } | 251 | } |
@@ -278,7 +278,7 @@ bn_expand_internal(const BIGNUM *b, int words) | |||
278 | BN_R_EXPAND_ON_STATIC_BIGNUM_DATA); | 278 | BN_R_EXPAND_ON_STATIC_BIGNUM_DATA); |
279 | return (NULL); | 279 | return (NULL); |
280 | } | 280 | } |
281 | a = A = (BN_ULONG *)malloc(sizeof(BN_ULONG)*words); | 281 | a = A = reallocarray(NULL, sizeof(BN_ULONG), words); |
282 | if (A == NULL) { | 282 | if (A == NULL) { |
283 | BNerr(BN_F_BN_EXPAND_INTERNAL, ERR_R_MALLOC_FAILURE); | 283 | BNerr(BN_F_BN_EXPAND_INTERNAL, ERR_R_MALLOC_FAILURE); |
284 | return (NULL); | 284 | return (NULL); |
diff --git a/src/lib/libssl/src/crypto/bn/bn_print.c b/src/lib/libssl/src/crypto/bn/bn_print.c index 3a0fb25369..ea5fa5c3da 100644 --- a/src/lib/libssl/src/crypto/bn/bn_print.c +++ b/src/lib/libssl/src/crypto/bn/bn_print.c | |||
@@ -116,7 +116,7 @@ BN_bn2dec(const BIGNUM *a) | |||
116 | */ | 116 | */ |
117 | i = BN_num_bits(a) * 3; | 117 | i = BN_num_bits(a) * 3; |
118 | num = (i / 10 + i / 1000 + 1) + 1; | 118 | num = (i / 10 + i / 1000 + 1) + 1; |
119 | bn_data = (BN_ULONG *)malloc((num / BN_DEC_NUM + 1) * sizeof(BN_ULONG)); | 119 | bn_data = reallocarray(NULL, num / BN_DEC_NUM + 1, sizeof(BN_ULONG)); |
120 | buf = (char *)malloc(num + 3); | 120 | buf = (char *)malloc(num + 3); |
121 | if ((buf == NULL) || (bn_data == NULL)) { | 121 | if ((buf == NULL) || (bn_data == NULL)) { |
122 | BNerr(BN_F_BN_BN2DEC, ERR_R_MALLOC_FAILURE); | 122 | BNerr(BN_F_BN_BN2DEC, ERR_R_MALLOC_FAILURE); |
diff --git a/src/lib/libssl/src/crypto/ec/ec_mult.c b/src/lib/libssl/src/crypto/ec/ec_mult.c index c0525c4940..b3bd34d82d 100644 --- a/src/lib/libssl/src/crypto/ec/ec_mult.c +++ b/src/lib/libssl/src/crypto/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; |
diff --git a/src/lib/libssl/src/crypto/ec/ecp_nistp224.c b/src/lib/libssl/src/crypto/ec/ecp_nistp224.c index 53aced54d5..6e9b9fac3c 100644 --- a/src/lib/libssl/src/crypto/ec/ecp_nistp224.c +++ b/src/lib/libssl/src/crypto/ec/ecp_nistp224.c | |||
@@ -1438,7 +1438,8 @@ ec_GFp_nistp224_points_mul(const EC_GROUP * group, EC_POINT * r, | |||
1438 | secrets = calloc(num_points, sizeof(felem_bytearray)); | 1438 | secrets = calloc(num_points, sizeof(felem_bytearray)); |
1439 | pre_comp = calloc(num_points, 17 * 3 * sizeof(felem)); | 1439 | pre_comp = calloc(num_points, 17 * 3 * sizeof(felem)); |
1440 | if (mixed) | 1440 | if (mixed) |
1441 | tmp_felems = malloc((num_points * 17 + 1) * sizeof(felem)); | 1441 | tmp_felems = reallocarray(NULL, |
1442 | (num_points * 17 + 1), sizeof(felem)); | ||
1442 | if ((secrets == NULL) || (pre_comp == NULL) || (mixed && (tmp_felems == NULL))) { | 1443 | if ((secrets == NULL) || (pre_comp == NULL) || (mixed && (tmp_felems == NULL))) { |
1443 | ECerr(EC_F_EC_GFP_NISTP224_POINTS_MUL, ERR_R_MALLOC_FAILURE); | 1444 | ECerr(EC_F_EC_GFP_NISTP224_POINTS_MUL, ERR_R_MALLOC_FAILURE); |
1444 | goto err; | 1445 | goto err; |
diff --git a/src/lib/libssl/src/crypto/ec/ecp_nistp256.c b/src/lib/libssl/src/crypto/ec/ecp_nistp256.c index df80cc2b8a..b2398e106c 100644 --- a/src/lib/libssl/src/crypto/ec/ecp_nistp256.c +++ b/src/lib/libssl/src/crypto/ec/ecp_nistp256.c | |||
@@ -1987,8 +1987,11 @@ ec_GFp_nistp256_points_mul(const EC_GROUP * group, EC_POINT * r, | |||
1987 | } | 1987 | } |
1988 | secrets = calloc(num_points, sizeof(felem_bytearray)); | 1988 | secrets = calloc(num_points, sizeof(felem_bytearray)); |
1989 | pre_comp = calloc(num_points, 17 * 3 * sizeof(smallfelem)); | 1989 | pre_comp = calloc(num_points, 17 * 3 * sizeof(smallfelem)); |
1990 | if (mixed) | 1990 | if (mixed) { |
1991 | tmp_smallfelems = malloc((num_points * 17 + 1) * sizeof(smallfelem)); | 1991 | /* XXX should do more int overflow checking */ |
1992 | tmp_smallfelems = reallocarray(NULL, | ||
1993 | (num_points * 17 + 1), sizeof(smallfelem)); | ||
1994 | } | ||
1992 | if ((secrets == NULL) || (pre_comp == NULL) || (mixed && (tmp_smallfelems == NULL))) { | 1995 | if ((secrets == NULL) || (pre_comp == NULL) || (mixed && (tmp_smallfelems == NULL))) { |
1993 | ECerr(EC_F_EC_GFP_NISTP256_POINTS_MUL, ERR_R_MALLOC_FAILURE); | 1996 | ECerr(EC_F_EC_GFP_NISTP256_POINTS_MUL, ERR_R_MALLOC_FAILURE); |
1994 | goto err; | 1997 | goto err; |
diff --git a/src/lib/libssl/src/crypto/ec/ecp_nistp521.c b/src/lib/libssl/src/crypto/ec/ecp_nistp521.c index 6792c5b71d..083e017cdc 100644 --- a/src/lib/libssl/src/crypto/ec/ecp_nistp521.c +++ b/src/lib/libssl/src/crypto/ec/ecp_nistp521.c | |||
@@ -1874,8 +1874,11 @@ ec_GFp_nistp521_points_mul(const EC_GROUP * group, EC_POINT * r, | |||
1874 | } | 1874 | } |
1875 | secrets = calloc(num_points, sizeof(felem_bytearray)); | 1875 | secrets = calloc(num_points, sizeof(felem_bytearray)); |
1876 | pre_comp = calloc(num_points, 17 * 3 * sizeof(felem)); | 1876 | pre_comp = calloc(num_points, 17 * 3 * sizeof(felem)); |
1877 | if (mixed) | 1877 | if (mixed) { |
1878 | tmp_felems = malloc((num_points * 17 + 1) * sizeof(felem)); | 1878 | /* XXX should do more int overflow checking */ |
1879 | tmp_felems = reallocarray(NULL, | ||
1880 | (num_points * 17 + 1), sizeof(felem)); | ||
1881 | } | ||
1879 | if ((secrets == NULL) || (pre_comp == NULL) || (mixed && (tmp_felems == NULL))) { | 1882 | if ((secrets == NULL) || (pre_comp == NULL) || (mixed && (tmp_felems == NULL))) { |
1880 | ECerr(EC_F_EC_GFP_NISTP521_POINTS_MUL, ERR_R_MALLOC_FAILURE); | 1883 | ECerr(EC_F_EC_GFP_NISTP521_POINTS_MUL, ERR_R_MALLOC_FAILURE); |
1881 | goto err; | 1884 | goto err; |
diff --git a/src/lib/libssl/src/crypto/ec/ecp_smpl.c b/src/lib/libssl/src/crypto/ec/ecp_smpl.c index b87410120d..46783a47a8 100644 --- a/src/lib/libssl/src/crypto/ec/ecp_smpl.c +++ b/src/lib/libssl/src/crypto/ec/ecp_smpl.c | |||
@@ -1257,7 +1257,7 @@ ec_GFp_simple_points_make_affine(const EC_GROUP * group, size_t num, EC_POINT * | |||
1257 | */ | 1257 | */ |
1258 | pow2 <<= 1; | 1258 | pow2 <<= 1; |
1259 | 1259 | ||
1260 | heap = malloc(pow2 * sizeof heap[0]); | 1260 | heap = reallocarray(NULL, pow2, sizeof heap[0]); |
1261 | if (heap == NULL) | 1261 | if (heap == NULL) |
1262 | goto err; | 1262 | goto err; |
1263 | 1263 | ||
diff --git a/src/lib/libssl/src/crypto/engine/eng_rsax.c b/src/lib/libssl/src/crypto/engine/eng_rsax.c index 1b15b6f1a3..0f8e1cd498 100644 --- a/src/lib/libssl/src/crypto/engine/eng_rsax.c +++ b/src/lib/libssl/src/crypto/engine/eng_rsax.c | |||
@@ -268,7 +268,7 @@ static E_RSAX_MOD_CTX *e_rsax_get_ctx(RSA *rsa, int idx, BIGNUM* m) | |||
268 | 268 | ||
269 | hptr = RSA_get_ex_data(rsa, rsax_ex_data_idx); | 269 | hptr = RSA_get_ex_data(rsa, rsax_ex_data_idx); |
270 | if (!hptr) { | 270 | if (!hptr) { |
271 | hptr = malloc(3*sizeof(E_RSAX_MOD_CTX)); | 271 | hptr = reallocarray(NULL, 3, sizeof(E_RSAX_MOD_CTX)); |
272 | if (!hptr) return NULL; | 272 | if (!hptr) return NULL; |
273 | hptr[2].type = hptr[1].type= hptr[0].type = 0; | 273 | hptr[2].type = hptr[1].type= hptr[0].type = 0; |
274 | RSA_set_ex_data(rsa, rsax_ex_data_idx, hptr); | 274 | RSA_set_ex_data(rsa, rsax_ex_data_idx, hptr); |
diff --git a/src/lib/libssl/src/crypto/ex_data.c b/src/lib/libssl/src/crypto/ex_data.c index d8d25d320e..5cd01c72d1 100644 --- a/src/lib/libssl/src/crypto/ex_data.c +++ b/src/lib/libssl/src/crypto/ex_data.c | |||
@@ -424,7 +424,7 @@ int_new_ex_data(int class_index, void *obj, CRYPTO_EX_DATA *ad) | |||
424 | CRYPTO_r_lock(CRYPTO_LOCK_EX_DATA); | 424 | CRYPTO_r_lock(CRYPTO_LOCK_EX_DATA); |
425 | mx = sk_CRYPTO_EX_DATA_FUNCS_num(item->meth); | 425 | mx = sk_CRYPTO_EX_DATA_FUNCS_num(item->meth); |
426 | if (mx > 0) { | 426 | if (mx > 0) { |
427 | storage = malloc(mx * sizeof(CRYPTO_EX_DATA_FUNCS*)); | 427 | storage = reallocarray(NULL, mx, sizeof(CRYPTO_EX_DATA_FUNCS*)); |
428 | if (!storage) | 428 | if (!storage) |
429 | goto skip; | 429 | goto skip; |
430 | for (i = 0; i < mx; i++) | 430 | for (i = 0; i < mx; i++) |
@@ -468,7 +468,7 @@ int_dup_ex_data(int class_index, CRYPTO_EX_DATA *to, CRYPTO_EX_DATA *from) | |||
468 | if (j < mx) | 468 | if (j < mx) |
469 | mx = j; | 469 | mx = j; |
470 | if (mx > 0) { | 470 | if (mx > 0) { |
471 | storage = malloc(mx * sizeof(CRYPTO_EX_DATA_FUNCS*)); | 471 | storage = reallocarray(NULL, mx, sizeof(CRYPTO_EX_DATA_FUNCS*)); |
472 | if (!storage) | 472 | if (!storage) |
473 | goto skip; | 473 | goto skip; |
474 | for (i = 0; i < mx; i++) | 474 | for (i = 0; i < mx; i++) |
@@ -505,7 +505,7 @@ int_free_ex_data(int class_index, void *obj, CRYPTO_EX_DATA *ad) | |||
505 | CRYPTO_r_lock(CRYPTO_LOCK_EX_DATA); | 505 | CRYPTO_r_lock(CRYPTO_LOCK_EX_DATA); |
506 | mx = sk_CRYPTO_EX_DATA_FUNCS_num(item->meth); | 506 | mx = sk_CRYPTO_EX_DATA_FUNCS_num(item->meth); |
507 | if (mx > 0) { | 507 | if (mx > 0) { |
508 | storage = malloc(mx * sizeof(CRYPTO_EX_DATA_FUNCS*)); | 508 | storage = reallocarray(NULL, mx, sizeof(CRYPTO_EX_DATA_FUNCS*)); |
509 | if (!storage) | 509 | if (!storage) |
510 | goto skip; | 510 | goto skip; |
511 | for (i = 0; i < mx; i++) | 511 | for (i = 0; i < mx; i++) |
diff --git a/src/lib/libssl/src/crypto/lhash/lhash.c b/src/lib/libssl/src/crypto/lhash/lhash.c index ad24a7726b..e75a43f506 100644 --- a/src/lib/libssl/src/crypto/lhash/lhash.c +++ b/src/lib/libssl/src/crypto/lhash/lhash.c | |||
@@ -119,7 +119,7 @@ lh_new(LHASH_HASH_FN_TYPE h, LHASH_COMP_FN_TYPE c) | |||
119 | 119 | ||
120 | if ((ret = malloc(sizeof(_LHASH))) == NULL) | 120 | if ((ret = malloc(sizeof(_LHASH))) == NULL) |
121 | goto err0; | 121 | goto err0; |
122 | if ((ret->b = malloc(sizeof(LHASH_NODE *) * MIN_NODES)) == NULL) | 122 | if ((ret->b = reallocarray(NULL, sizeof(LHASH_NODE *), MIN_NODES)) == NULL) |
123 | goto err1; | 123 | goto err1; |
124 | for (i = 0; i < MIN_NODES; i++) | 124 | for (i = 0; i < MIN_NODES; i++) |
125 | ret->b[i] = NULL; | 125 | ret->b[i] = NULL; |
diff --git a/src/lib/libssl/src/crypto/objects/o_names.c b/src/lib/libssl/src/crypto/objects/o_names.c index 196d3ab0a7..169b8ae87d 100644 --- a/src/lib/libssl/src/crypto/objects/o_names.c +++ b/src/lib/libssl/src/crypto/objects/o_names.c | |||
@@ -292,7 +292,8 @@ OBJ_NAME_do_all_sorted(int type, void (*fn)(const OBJ_NAME *, void *arg), | |||
292 | int n; | 292 | int n; |
293 | 293 | ||
294 | d.type = type; | 294 | d.type = type; |
295 | d.names = malloc(lh_OBJ_NAME_num_items(names_lh)*sizeof *d.names); | 295 | d.names = reallocarray(NULL, lh_OBJ_NAME_num_items(names_lh), |
296 | sizeof *d.names); | ||
296 | d.n = 0; | 297 | d.n = 0; |
297 | OBJ_NAME_do_all(type, do_all_sorted_fn, &d); | 298 | OBJ_NAME_do_all(type, do_all_sorted_fn, &d); |
298 | 299 | ||
diff --git a/src/lib/libssl/src/crypto/objects/obj_xref.c b/src/lib/libssl/src/crypto/objects/obj_xref.c index 25aed74ff1..8e9128efc4 100644 --- a/src/lib/libssl/src/crypto/objects/obj_xref.c +++ b/src/lib/libssl/src/crypto/objects/obj_xref.c | |||
@@ -164,7 +164,7 @@ OBJ_add_sigid(int signid, int dig_id, int pkey_id) | |||
164 | sigx_app = sk_nid_triple_new(sigx_cmp); | 164 | sigx_app = sk_nid_triple_new(sigx_cmp); |
165 | if (!sigx_app) | 165 | if (!sigx_app) |
166 | return 0; | 166 | return 0; |
167 | ntr = malloc(sizeof(int) * 3); | 167 | ntr = reallocarray(NULL, sizeof(int), 3); |
168 | if (!ntr) | 168 | if (!ntr) |
169 | return 0; | 169 | return 0; |
170 | ntr->sign_id = signid; | 170 | ntr->sign_id = signid; |
diff --git a/src/lib/libssl/src/crypto/pem/pem_lib.c b/src/lib/libssl/src/crypto/pem/pem_lib.c index 58d2bfbee9..945262f019 100644 --- a/src/lib/libssl/src/crypto/pem/pem_lib.c +++ b/src/lib/libssl/src/crypto/pem/pem_lib.c | |||
@@ -605,7 +605,7 @@ PEM_write_bio(BIO *bp, const char *name, char *header, unsigned char *data, | |||
605 | goto err; | 605 | goto err; |
606 | } | 606 | } |
607 | 607 | ||
608 | buf = malloc(PEM_BUFSIZE * 8); | 608 | buf = reallocarray(NULL, PEM_BUFSIZE, 8); |
609 | if (buf == NULL) { | 609 | if (buf == NULL) { |
610 | reason = ERR_R_MALLOC_FAILURE; | 610 | reason = ERR_R_MALLOC_FAILURE; |
611 | goto err; | 611 | goto err; |
diff --git a/src/lib/libssl/src/crypto/pem/pem_seal.c b/src/lib/libssl/src/crypto/pem/pem_seal.c index 92b70157cd..a7b9379223 100644 --- a/src/lib/libssl/src/crypto/pem/pem_seal.c +++ b/src/lib/libssl/src/crypto/pem/pem_seal.c | |||
@@ -85,7 +85,7 @@ PEM_SealInit(PEM_ENCODE_SEAL_CTX *ctx, EVP_CIPHER *type, EVP_MD *md_type, | |||
85 | if (j > max) | 85 | if (j > max) |
86 | max = j; | 86 | max = j; |
87 | } | 87 | } |
88 | s = (char *)malloc(max*2); | 88 | s = (char *)reallocarray(NULL, max, 2); |
89 | if (s == NULL) { | 89 | if (s == NULL) { |
90 | PEMerr(PEM_F_PEM_SEALINIT, ERR_R_MALLOC_FAILURE); | 90 | PEMerr(PEM_F_PEM_SEALINIT, ERR_R_MALLOC_FAILURE); |
91 | goto err; | 91 | goto err; |
@@ -159,7 +159,7 @@ PEM_SealFinal(PEM_ENCODE_SEAL_CTX *ctx, unsigned char *sig, int *sigl, | |||
159 | i = RSA_size(priv->pkey.rsa); | 159 | i = RSA_size(priv->pkey.rsa); |
160 | if (i < 100) | 160 | if (i < 100) |
161 | i = 100; | 161 | i = 100; |
162 | s = (unsigned char *)malloc(i*2); | 162 | s = reallocarray(NULL, i, 2); |
163 | if (s == NULL) { | 163 | if (s == NULL) { |
164 | PEMerr(PEM_F_PEM_SEALFINAL, ERR_R_MALLOC_FAILURE); | 164 | PEMerr(PEM_F_PEM_SEALFINAL, ERR_R_MALLOC_FAILURE); |
165 | goto err; | 165 | goto err; |
diff --git a/src/lib/libssl/src/crypto/srp/srp_lib.c b/src/lib/libssl/src/crypto/srp/srp_lib.c index a3a67eda2e..77e2c2c2f2 100644 --- a/src/lib/libssl/src/crypto/srp/srp_lib.c +++ b/src/lib/libssl/src/crypto/srp/srp_lib.c | |||
@@ -121,7 +121,7 @@ BIGNUM *SRP_Calc_u(BIGNUM *A, BIGNUM *B, BIGNUM *N) | |||
121 | 121 | ||
122 | longN= BN_num_bytes(N); | 122 | longN= BN_num_bytes(N); |
123 | 123 | ||
124 | if ((cAB = malloc(2*longN)) == NULL) | 124 | if ((cAB = reallocarray(NULL, 2, longN)) == NULL) |
125 | return NULL; | 125 | return NULL; |
126 | 126 | ||
127 | memset(cAB, 0, longN); | 127 | memset(cAB, 0, longN); |
diff --git a/src/lib/libssl/src/crypto/srp/srp_vfy.c b/src/lib/libssl/src/crypto/srp/srp_vfy.c index de7dbe5bbd..6ad80ef992 100644 --- a/src/lib/libssl/src/crypto/srp/srp_vfy.c +++ b/src/lib/libssl/src/crypto/srp/srp_vfy.c | |||
@@ -573,7 +573,7 @@ char *SRP_create_verifier(const char *user, const char *pass, char **salt, | |||
573 | if(!SRP_create_verifier_BN(user, pass, &s, &v, N_bn, g_bn)) goto err; | 573 | if(!SRP_create_verifier_BN(user, pass, &s, &v, N_bn, g_bn)) goto err; |
574 | 574 | ||
575 | BN_bn2bin(v,tmp); | 575 | BN_bn2bin(v,tmp); |
576 | if (((vf = malloc(BN_num_bytes(v)*2)) == NULL)) | 576 | if (((vf = reallocarray(NULL, BN_num_bytes(v), 2)) == NULL)) |
577 | goto err; | 577 | goto err; |
578 | t_tob64(vf, tmp, BN_num_bytes(v)); | 578 | t_tob64(vf, tmp, BN_num_bytes(v)); |
579 | 579 | ||
@@ -582,7 +582,7 @@ char *SRP_create_verifier(const char *user, const char *pass, char **salt, | |||
582 | { | 582 | { |
583 | char *tmp_salt; | 583 | char *tmp_salt; |
584 | 584 | ||
585 | if ((tmp_salt = malloc(SRP_RANDOM_SALT_LEN * 2)) == NULL) | 585 | if ((tmp_salt = reallocarray(NULL, SRP_RANDOM_SALT_LEN, 2)) == NULL) |
586 | { | 586 | { |
587 | free(vf); | 587 | free(vf); |
588 | goto err; | 588 | goto err; |
diff --git a/src/lib/libssl/src/crypto/txt_db/txt_db.c b/src/lib/libssl/src/crypto/txt_db/txt_db.c index a2afa3df23..0f3a7ffbb3 100644 --- a/src/lib/libssl/src/crypto/txt_db/txt_db.c +++ b/src/lib/libssl/src/crypto/txt_db/txt_db.c | |||
@@ -94,9 +94,9 @@ TXT_DB_read(BIO *in, int num) | |||
94 | ret->qual = NULL; | 94 | ret->qual = NULL; |
95 | if ((ret->data = sk_OPENSSL_PSTRING_new_null()) == NULL) | 95 | if ((ret->data = sk_OPENSSL_PSTRING_new_null()) == NULL) |
96 | goto err; | 96 | goto err; |
97 | if ((ret->index = malloc(sizeof(*ret->index)*num)) == NULL) | 97 | if ((ret->index = reallocarray(NULL, sizeof(*ret->index), num)) == NULL) |
98 | goto err; | 98 | goto err; |
99 | if ((ret->qual = malloc(sizeof(*(ret->qual))*num)) == NULL) | 99 | if ((ret->qual = reallocarray(NULL, sizeof(*(ret->qual)), num)) == NULL) |
100 | goto err; | 100 | goto err; |
101 | for (i = 0; i < num; i++) { | 101 | for (i = 0; i < num; i++) { |
102 | ret->index[i] = NULL; | 102 | ret->index[i] = NULL; |
diff --git a/src/lib/libssl/src/crypto/x509/x509spki.c b/src/lib/libssl/src/crypto/x509/x509spki.c index b5f67b5a97..23172fdb8e 100644 --- a/src/lib/libssl/src/crypto/x509/x509spki.c +++ b/src/lib/libssl/src/crypto/x509/x509spki.c | |||
@@ -115,7 +115,7 @@ NETSCAPE_SPKI_b64_encode(NETSCAPE_SPKI *spki) | |||
115 | int der_len; | 115 | int der_len; |
116 | der_len = i2d_NETSCAPE_SPKI(spki, NULL); | 116 | der_len = i2d_NETSCAPE_SPKI(spki, NULL); |
117 | der_spki = malloc(der_len); | 117 | der_spki = malloc(der_len); |
118 | b64_str = malloc(der_len * 2); | 118 | b64_str = reallocarray(NULL, der_len, 2); |
119 | if (!der_spki || !b64_str) { | 119 | if (!der_spki || !b64_str) { |
120 | X509err(X509_F_NETSCAPE_SPKI_B64_ENCODE, ERR_R_MALLOC_FAILURE); | 120 | X509err(X509_F_NETSCAPE_SPKI_B64_ENCODE, ERR_R_MALLOC_FAILURE); |
121 | free(der_spki); | 121 | free(der_spki); |
diff --git a/src/lib/libssl/src/crypto/x509v3/pcy_tree.c b/src/lib/libssl/src/crypto/x509v3/pcy_tree.c index ebc4809371..080a87d674 100644 --- a/src/lib/libssl/src/crypto/x509v3/pcy_tree.c +++ b/src/lib/libssl/src/crypto/x509v3/pcy_tree.c | |||
@@ -220,7 +220,7 @@ tree_init(X509_POLICY_TREE **ptree, STACK_OF(X509) *certs, unsigned int flags) | |||
220 | return 0; | 220 | return 0; |
221 | 221 | ||
222 | tree->flags = 0; | 222 | tree->flags = 0; |
223 | tree->levels = malloc(sizeof(X509_POLICY_LEVEL) * n); | 223 | tree->levels = reallocarray(NULL, sizeof(X509_POLICY_LEVEL), n); |
224 | tree->nlevel = 0; | 224 | tree->nlevel = 0; |
225 | tree->extra_data = NULL; | 225 | tree->extra_data = NULL; |
226 | tree->auth_policies = NULL; | 226 | tree->auth_policies = NULL; |