diff options
Diffstat (limited to 'Source/charon/encoding/payloads/sa_payload.c')
-rw-r--r-- | Source/charon/encoding/payloads/sa_payload.c | 13 |
1 files changed, 8 insertions, 5 deletions
diff --git a/Source/charon/encoding/payloads/sa_payload.c b/Source/charon/encoding/payloads/sa_payload.c index d9175de60..4054c6fb3 100644 --- a/Source/charon/encoding/payloads/sa_payload.c +++ b/Source/charon/encoding/payloads/sa_payload.c @@ -115,7 +115,7 @@ encoding_rule_t sa_payload_encodings[] = { static status_t verify(private_sa_payload_t *this) { int proposal_number = 1; - status_t status; + status_t status = SUCCESS; iterator_t *iterator; bool first = TRUE; @@ -131,10 +131,7 @@ static status_t verify(private_sa_payload_t *this) while(iterator->has_next(iterator)) { proposal_substructure_t *current_proposal; - status = iterator->current(iterator,(void **)¤t_proposal); - { - break; - } + iterator->current(iterator,(void **)¤t_proposal); if (current_proposal->get_proposal_number(current_proposal) > proposal_number) { if (first) @@ -158,6 +155,12 @@ static status_t verify(private_sa_payload_t *this) status = FAILED; break; } + + status = current_proposal->payload_interface.verify(&(current_proposal->payload_interface)); + if (status != SUCCESS) + { + break; + } first = FALSE; } |