aboutsummaryrefslogtreecommitdiffstats
path: root/src/libcharon/encoding
diff options
context:
space:
mode:
authorTobias Brunner <tobias@strongswan.org>2013-04-26 15:36:42 +0200
committerTobias Brunner <tobias@strongswan.org>2013-06-21 11:09:03 +0200
commit0adf165c7e4ce14f156f3f2eec2edbef0ea57e0d (patch)
tree2a73e933138771cf54db8b95a1792831081fe69f /src/libcharon/encoding
parent9d6a147c81b4bfd14f51462fccaf688ba725e04a (diff)
downloadstrongswan-0adf165c7e4ce14f156f3f2eec2edbef0ea57e0d.tar.bz2
strongswan-0adf165c7e4ce14f156f3f2eec2edbef0ea57e0d.tar.xz
Fix crash if the initiator has no suitable proposal available
Could be triggered with a typo in the ike or esp options when ! is used.
Diffstat (limited to 'src/libcharon/encoding')
-rw-r--r--src/libcharon/encoding/payloads/sa_payload.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/src/libcharon/encoding/payloads/sa_payload.c b/src/libcharon/encoding/payloads/sa_payload.c
index a588d4e97..613412014 100644
--- a/src/libcharon/encoding/payloads/sa_payload.c
+++ b/src/libcharon/encoding/payloads/sa_payload.c
@@ -560,6 +560,11 @@ sa_payload_t *sa_payload_create_from_proposals_v1(linked_list_t *proposals,
this = (private_sa_payload_t*)sa_payload_create(SECURITY_ASSOCIATION_V1);
+ if (!proposals || !proposals->get_count(proposals))
+ {
+ return &this->public;
+ }
+
/* IKEv1 encodes multiple proposals in a single substructure
* TODO-IKEv1: Encode ESP+AH proposals in two substructs with same num */
substruct = proposal_substructure_create_from_proposals_v1(proposals,