@@ -441,24 +441,31 @@ add_ec_parameters_to_builder(VALUE key, VALUE value, VALUE arg) {
441441
442442 if (strcmp (OSSL_PKEY_PARAM_GROUP_NAME , key_ptr ) == 0 ) {
443443 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 );
445446 ossl_raise (ePKeyError , "OSSL_PARAM_BLD_push_utf8_string" );
447+ }
446448 return ST_CONTINUE ;
447449 }
448450
449451 if (strcmp (OSSL_PKEY_PARAM_PUB_KEY , key_ptr ) == 0 ) {
450452 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 );
452455 ossl_raise (ePKeyError , "OSSL_PARAM_BLD_push_octet_string" );
456+ }
453457 return ST_CONTINUE ;
454458 }
455459
456460 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 );
458463 ossl_raise (ePKeyError , "OSSL_PARAM_BLD_push_BN" );
464+ }
459465 return ST_CONTINUE ;
460466 }
461467
468+ OSSL_PARAM_BLD_free (params_builder );
462469 ossl_raise (ePKeyError , "Unsupported parameter \"%s\"" , key_ptr );
463470}
464471
@@ -524,11 +531,15 @@ add_rsa_parameters_to_builder(VALUE key, VALUE value, VALUE arg) {
524531 strcmp (OSSL_PKEY_PARAM_RSA_COEFFICIENT7 , key_ptr ) == 0 ||
525532 strcmp (OSSL_PKEY_PARAM_RSA_COEFFICIENT8 , key_ptr ) == 0 ||
526533 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 );
528536 ossl_raise (ePKeyError , "OSSL_PARAM_BLD_push_BN" );
537+ }
538+
529539 return ST_CONTINUE ;
530540 }
531541
542+ OSSL_PARAM_BLD_free (params_builder );
532543 ossl_raise (ePKeyError , "Unsupported parameter \"%s\"" , key_ptr );
533544}
534545
@@ -571,18 +582,23 @@ add_ffc_parameters_to_builder(VALUE key, VALUE value, VALUE arg) {
571582 strcmp (OSSL_PKEY_PARAM_FFC_VALIDATE_PQ , key_ptr ) == 0 ||
572583 strcmp (OSSL_PKEY_PARAM_FFC_VALIDATE_G , key_ptr ) == 0 ||
573584 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 );
575587 ossl_raise (ePKeyError , "OSSL_PARAM_BLD_push_BN" );
588+ }
576589 return ST_CONTINUE ;
577590 }
578591
579592 if (strcmp (OSSL_PKEY_PARAM_FFC_SEED , key_ptr ) == 0 ) {
580593 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 );
582596 ossl_raise (ePKeyError , "OSSL_PARAM_BLD_push_octet_string" );
597+ }
583598 return ST_CONTINUE ;
584599 }
585600
601+ OSSL_PARAM_BLD_free (params_builder );
586602 ossl_raise (ePKeyError , "Unsupported parameter \"%s\"" , key_ptr );
587603}
588604
0 commit comments