bind/2432-check-param_template-i-.pValue-is-non-NULL.patch

54 lines
1.5 KiB
Diff
Raw Normal View History

2019-12-28 09:41:34 +08:00
From 8ac0152651725cfa3dd887f9f73e6ff9671ce2dd Mon Sep 17 00:00:00 2001
From: Bill Parker <wp02855@gmail.com>
Date: Tue, 10 Jul 2018 12:34:00 +1000
Subject: [PATCH 2432/3677] check param_template[i].pValue is non NULL
---
bin/pkcs11/pkcs11-keygen.c | 22 ++++++++++++++++++----
1 file changed, 18 insertions(+), 4 deletions(-)
diff --git a/bin/pkcs11/pkcs11-keygen.c b/bin/pkcs11/pkcs11-keygen.c
index fe314ab..9631c0e 100644
--- a/bin/pkcs11/pkcs11-keygen.c
+++ b/bin/pkcs11/pkcs11-keygen.c
@@ -657,8 +657,18 @@ main(int argc, char *argv[]) {
}
/* Allocate space for parameter attributes */
- for (i = 0; i < param_attrcnt; i++)
+ for (i = 0; i < param_attrcnt; i++) {
+ param_template[i].pValue = NULL;
+ }
+
+ for (i = 0; i < param_attrcnt; i++) {
param_template[i].pValue = malloc(param_template[i].ulValueLen);
+ if (param_template[i].pValue == NULL) {
+ fprintf(stderr, "malloc failed\n");
+ error = 1;
+ goto exit_params;
+ }
+ }
rv = pkcs_C_GetAttributeValue(hSession, domainparams,
dsa_param_template, DSA_PARAM_ATTRS);
@@ -713,9 +723,13 @@ main(int argc, char *argv[]) {
exit_params:
/* Free parameter attributes */
- if (keyclass == key_dsa || keyclass == key_dh)
- for (i = 0; i < param_attrcnt; i++)
- free(param_template[i].pValue);
+ if (keyclass == key_dsa || keyclass == key_dh) {
+ for (i = 0; i < param_attrcnt; i++) {
+ if (param_template[i].pValue != NULL) {
+ free(param_template[i].pValue);
+ }
+ }
+ }
exit_domain:
/* Destroy domain parameters */
--
1.8.3.1