From f92399ef1865ae557aa97b61ea3ee2dac6220766 Mon Sep 17 00:00:00 2001 From: Tobias Brunner Date: Mon, 11 Aug 2014 18:12:36 +0200 Subject: [PATCH] child-cfg: Ignore duplicate proposals If ESP proposals are added once with and once without DH groups duplicates result during IKE_AUTH when DH groups are stripped. --- src/libcharon/config/child_cfg.c | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/src/libcharon/config/child_cfg.c b/src/libcharon/config/child_cfg.c index 7e4a1433d..ed7c0d406 100644 --- a/src/libcharon/config/child_cfg.c +++ b/src/libcharon/config/child_cfg.c @@ -163,6 +163,11 @@ METHOD(child_cfg_t, add_proposal, void, } } +static bool match_proposal(proposal_t *item, proposal_t *proposal) +{ + return item->equals(item, proposal); +} + METHOD(child_cfg_t, get_proposals, linked_list_t*, private_child_cfg_t *this, bool strip_dh) { @@ -178,6 +183,12 @@ METHOD(child_cfg_t, get_proposals, linked_list_t*, { current->strip_dh(current, MODP_NONE); } + if (proposals->find_first(proposals, (linked_list_match_t)match_proposal, + NULL, current) == SUCCESS) + { + current->destroy(current); + continue; + } proposals->insert_last(proposals, current); } enumerator->destroy(enumerator);