Commit eb6fd8a8f7 for strongswan.org

commit eb6fd8a8f77854f407258b1f986fc8e7ad153600
Author: Tobias Brunner <tobias@strongswan.org>
Date:   Thu Jul 23 10:19:01 2026 +0200

    signature-params: Only modify passed params if parsing succeeded

    This avoids issues if a caller doesn't expect e.g. the scheme to get
    modified on failure.

diff --git a/src/libstrongswan/credentials/keys/signature_params.c b/src/libstrongswan/credentials/keys/signature_params.c
index 5a391df893..b4725af1a4 100644
--- a/src/libstrongswan/credentials/keys/signature_params.c
+++ b/src/libstrongswan/credentials/keys/signature_params.c
@@ -186,13 +186,13 @@ void signature_params_clear(signature_params_t *this)
 bool signature_params_parse(chunk_t asn1, int level0,
 							signature_params_t *params)
 {
+	signature_params_t parsed = {};
 	chunk_t parameters = chunk_empty;
 	int oid;

 	oid = asn1_parse_algorithmIdentifier(asn1, level0, &parameters);
-	params->scheme = signature_scheme_from_oid(oid);
-	params->params = NULL;
-	switch (params->scheme)
+	parsed.scheme = signature_scheme_from_oid(oid);
+	switch (parsed.scheme)
 	{
 		case SIGN_UNKNOWN:
 			return FALSE;
@@ -206,7 +206,7 @@ bool signature_params_parse(chunk_t asn1, int level0,
 				free(pss);
 				return FALSE;
 			}
-			params->params = pss;
+			parsed.params = pss;
 			break;
 		}
 		default:
@@ -214,11 +214,12 @@ bool signature_params_parse(chunk_t asn1, int level0,
 				!chunk_equals(parameters, chunk_from_chars(0x05, 0x00)))
 			{
 				DBG1(DBG_IKE, "unexpected parameters for %N",
-					 signature_scheme_names, params->scheme);
+					 signature_scheme_names, parsed.scheme);
 				return FALSE;
 			}
 			break;
 	}
+	*params = parsed;
 	return TRUE;
 }