@@ -441,24 +441,31 @@ add_ec_parameters_to_builder(VALUE key, VALUE value, VALUE arg) {
441
441
442
442
if (strcmp (OSSL_PKEY_PARAM_GROUP_NAME , key_ptr ) == 0 ) {
443
443
StringValue (value );
444
- if (!OSSL_PARAM_BLD_push_utf8_string (params_builder , key_ptr , RSTRING_PTR (value ), RSTRING_LENINT (value )))
444
+ if (!OSSL_PARAM_BLD_push_utf8_string (params_builder , key_ptr , RSTRING_PTR (value ), RSTRING_LENINT (value ))) {
445
+ OSSL_PARAM_BLD_free (params_builder );
445
446
ossl_raise (ePKeyError , "OSSL_PARAM_BLD_push_utf8_string" );
447
+ }
446
448
return ST_CONTINUE ;
447
449
}
448
450
449
451
if (strcmp (OSSL_PKEY_PARAM_PUB_KEY , key_ptr ) == 0 ) {
450
452
StringValue (value );
451
- if (!OSSL_PARAM_BLD_push_octet_string (params_builder , OSSL_PKEY_PARAM_PUB_KEY , RSTRING_PTR (value ), RSTRING_LENINT (value )))
453
+ if (!OSSL_PARAM_BLD_push_octet_string (params_builder , OSSL_PKEY_PARAM_PUB_KEY , RSTRING_PTR (value ), RSTRING_LENINT (value ))) {
454
+ OSSL_PARAM_BLD_free (params_builder );
452
455
ossl_raise (ePKeyError , "OSSL_PARAM_BLD_push_octet_string" );
456
+ }
453
457
return ST_CONTINUE ;
454
458
}
455
459
456
460
if (strcmp (OSSL_PKEY_PARAM_PRIV_KEY , key_ptr ) == 0 ) {
457
- if (!OSSL_PARAM_BLD_push_BN (params_builder , OSSL_PKEY_PARAM_PRIV_KEY , GetBNPtr (value )))
461
+ if (!OSSL_PARAM_BLD_push_BN (params_builder , OSSL_PKEY_PARAM_PRIV_KEY , GetBNPtr (value ))) {
462
+ OSSL_PARAM_BLD_free (params_builder );
458
463
ossl_raise (ePKeyError , "OSSL_PARAM_BLD_push_BN" );
464
+ }
459
465
return ST_CONTINUE ;
460
466
}
461
467
468
+ OSSL_PARAM_BLD_free (params_builder );
462
469
ossl_raise (ePKeyError , "Unsupported parameter \"%s\"" , key_ptr );
463
470
}
464
471
@@ -524,11 +531,15 @@ add_rsa_parameters_to_builder(VALUE key, VALUE value, VALUE arg) {
524
531
strcmp (OSSL_PKEY_PARAM_RSA_COEFFICIENT7 , key_ptr ) == 0 ||
525
532
strcmp (OSSL_PKEY_PARAM_RSA_COEFFICIENT8 , key_ptr ) == 0 ||
526
533
strcmp (OSSL_PKEY_PARAM_RSA_COEFFICIENT9 , key_ptr ) == 0 ) {
527
- if (!OSSL_PARAM_BLD_push_BN (params_builder , key_ptr , GetBNPtr (value )))
534
+ if (!OSSL_PARAM_BLD_push_BN (params_builder , key_ptr , GetBNPtr (value ))) {
535
+ OSSL_PARAM_BLD_free (params_builder );
528
536
ossl_raise (ePKeyError , "OSSL_PARAM_BLD_push_BN" );
537
+ }
538
+
529
539
return ST_CONTINUE ;
530
540
}
531
541
542
+ OSSL_PARAM_BLD_free (params_builder );
532
543
ossl_raise (ePKeyError , "Unsupported parameter \"%s\"" , key_ptr );
533
544
}
534
545
@@ -571,18 +582,23 @@ add_ffc_parameters_to_builder(VALUE key, VALUE value, VALUE arg) {
571
582
strcmp (OSSL_PKEY_PARAM_FFC_VALIDATE_PQ , key_ptr ) == 0 ||
572
583
strcmp (OSSL_PKEY_PARAM_FFC_VALIDATE_G , key_ptr ) == 0 ||
573
584
strcmp (OSSL_PKEY_PARAM_FFC_VALIDATE_LEGACY , key_ptr ) == 0 ) {
574
- if (!OSSL_PARAM_BLD_push_BN (params_builder , key_ptr , GetBNPtr (value )))
585
+ if (!OSSL_PARAM_BLD_push_BN (params_builder , key_ptr , GetBNPtr (value ))) {
586
+ OSSL_PARAM_BLD_free (params_builder );
575
587
ossl_raise (ePKeyError , "OSSL_PARAM_BLD_push_BN" );
588
+ }
576
589
return ST_CONTINUE ;
577
590
}
578
591
579
592
if (strcmp (OSSL_PKEY_PARAM_FFC_SEED , key_ptr ) == 0 ) {
580
593
StringValue (value );
581
- if (!OSSL_PARAM_BLD_push_octet_string (params_builder , key_ptr , RSTRING_PTR (value ), RSTRING_LENINT (value )))
594
+ if (!OSSL_PARAM_BLD_push_octet_string (params_builder , key_ptr , RSTRING_PTR (value ), RSTRING_LENINT (value ))) {
595
+ OSSL_PARAM_BLD_free (params_builder );
582
596
ossl_raise (ePKeyError , "OSSL_PARAM_BLD_push_octet_string" );
597
+ }
583
598
return ST_CONTINUE ;
584
599
}
585
600
601
+ OSSL_PARAM_BLD_free (params_builder );
586
602
ossl_raise (ePKeyError , "Unsupported parameter \"%s\"" , key_ptr );
587
603
}
588
604
0 commit comments