diff options
Diffstat (limited to 'Source/charon/payloads/ike_header.c')
-rw-r--r-- | Source/charon/payloads/ike_header.c | 14 |
1 files changed, 13 insertions, 1 deletions
diff --git a/Source/charon/payloads/ike_header.c b/Source/charon/payloads/ike_header.c index 9141e846d..18c9e00b5 100644 --- a/Source/charon/payloads/ike_header.c +++ b/Source/charon/payloads/ike_header.c @@ -173,12 +173,24 @@ static status_t verify(private_ike_header_t *this) /* unsupported exchange type */ return FAILED; } - if ((this->initiator_spi == 0) && (this->responder_spi != 0)) + if (this->initiator_spi == 0) { /* initiator spi not set */ return FAILED; } + if ((this->responder_spi == 0) && (!this->flags.initiator)) + { + /* must be original initiator*/ + return FAILED; + } + + if ((this->responder_spi == 0) && (this->flags.response)) + { + /* must be request*/ + return FAILED; + } + /* verification of version is not done in here */ return SUCCESS; |