]> git.ipfire.org Git - thirdparty/bind9.git/commitdiff
check param_template[i].pValue is non NULL
authorBill Parker <wp02855@gmail.com>
Tue, 10 Jul 2018 02:34:00 +0000 (12:34 +1000)
committerEvan Hunt <each@isc.org>
Tue, 10 Jul 2018 21:24:07 +0000 (14:24 -0700)
bin/pkcs11/pkcs11-keygen.c

index fe314ab409242f5f8b778e03cbfbdc7f9b0de787..9631c0ebf2252a6848da21c6dc50f1a9b1caf0aa 100644 (file)
@@ -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 */