Fix garbage free on malloc failure in ec_wNAF_mul.
PR#3595
(Imported from upstream's e04d426bf98ebb22abf0f15b6f09d333a6e8b2ad.)
Change-Id: I01a9d9bef7e911b3fb1565f8a582f5d6cc7d5537
Reviewed-on: https://boringssl-review.googlesource.com/2290
Reviewed-by: Adam Langley <agl@google.com>
diff --git a/crypto/ec/wnaf.c b/crypto/ec/wnaf.c
index cac7234..1976460 100644
--- a/crypto/ec/wnaf.c
+++ b/crypto/ec/wnaf.c
@@ -389,13 +389,16 @@
sizeof wNAF[0]); /* includes space for pivot */
val_sub = OPENSSL_malloc(totalnum * sizeof val_sub[0]);
+ /* Ensure wNAF is initialised in case we end up going to err. */
+ if (wNAF) {
+ wNAF[0] = NULL; /* preliminary pivot */
+ }
+
if (!wsize || !wNAF_len || !wNAF || !val_sub) {
OPENSSL_PUT_ERROR(EC, ec_wNAF_mul, ERR_R_MALLOC_FAILURE);
goto err;
}
- wNAF[0] = NULL; /* preliminary pivot */
-
/* num_val will be the total number of temporarily precomputed points */
num_val = 0;