aboutsummaryrefslogtreecommitdiffstats
path: root/Source/charon/payloads/ike_header.c
diff options
context:
space:
mode:
Diffstat (limited to 'Source/charon/payloads/ike_header.c')
-rw-r--r--Source/charon/payloads/ike_header.c14
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;