From: Tobias Brunner Date: Thu, 6 Feb 2020 14:46:05 +0000 (+0100) Subject: proposal-substructure: Store transform number for IKEv1 proposals X-Git-Tag: 5.8.3rc1~9^2~3 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=7da3143aacb778c40eb7b0257ecf9d9f72fabe9c;p=thirdparty%2Fstrongswan.git proposal-substructure: Store transform number for IKEv1 proposals --- diff --git a/src/libcharon/encoding/payloads/proposal_substructure.c b/src/libcharon/encoding/payloads/proposal_substructure.c index 2d0cb1f829..4cf0340b56 100644 --- a/src/libcharon/encoding/payloads/proposal_substructure.c +++ b/src/libcharon/encoding/payloads/proposal_substructure.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2012-2014 Tobias Brunner + * Copyright (C) 2012-2020 Tobias Brunner * Copyright (C) 2005-2010 Martin Willi * Copyright (C) 2005 Jan Hutter * HSR Hochschule fuer Technik Rapperswil @@ -1004,18 +1004,25 @@ METHOD(proposal_substructure_t, get_proposals, void, enumerator = this->transforms->create_enumerator(this->transforms); while (enumerator->enumerate(enumerator, &transform)) { - if (!proposal) - { - proposal = proposal_create(this->protocol_id, this->proposal_number); - proposal->set_spi(proposal, spi); - proposals->insert_last(proposals, proposal); - } if (this->type == PLV2_PROPOSAL_SUBSTRUCTURE) { + if (!proposal) + { + proposal = proposal_create(this->protocol_id, + this->proposal_number); + proposal->set_spi(proposal, spi); + proposals->insert_last(proposals, proposal); + } add_to_proposal_v2(proposal, transform); } else { + /* create a new proposal for each transform in IKEv1 */ + proposal = proposal_create_v1( + this->protocol_id, this->proposal_number, + transform->get_transform_type_or_number(transform)); + proposal->set_spi(proposal, spi); + proposals->insert_last(proposals, proposal); switch (this->protocol_id) { case PROTO_IKE: @@ -1028,8 +1035,6 @@ METHOD(proposal_substructure_t, get_proposals, void, default: break; } - /* create a new proposal for each transform in IKEv1 */ - proposal = NULL; } } enumerator->destroy(enumerator);