diff options
author | Martin Willi <martin@revosec.ch> | 2014-09-10 11:14:22 +0200 |
---|---|---|
committer | Martin Willi <martin@revosec.ch> | 2014-09-22 13:42:11 +0200 |
commit | 2dee0a85a6923da94d669dc5de337dc5ef1806e7 (patch) | |
tree | 51031cdf1a5b8d12b9ce2dc307e236a9339f7b0e /src | |
parent | d8ad0fc35175cd82b998648028938c8d6a8b0581 (diff) | |
download | strongswan-2dee0a85a6923da94d669dc5de337dc5ef1806e7.tar.bz2 strongswan-2dee0a85a6923da94d669dc5de337dc5ef1806e7.tar.xz |
encoding: Accept all exchange types for non IKEv1/IKEv2 major versions
Diffstat (limited to 'src')
-rw-r--r-- | src/libcharon/encoding/payloads/ike_header.c | 16 |
1 files changed, 11 insertions, 5 deletions
diff --git a/src/libcharon/encoding/payloads/ike_header.c b/src/libcharon/encoding/payloads/ike_header.c index 7015667ee..c96738a34 100644 --- a/src/libcharon/encoding/payloads/ike_header.c +++ b/src/libcharon/encoding/payloads/ike_header.c @@ -210,8 +210,9 @@ METHOD(payload_t, verify, status_t, case TRANSACTION: case QUICK_MODE: case NEW_GROUP_MODE: - if (this->maj_version != IKEV1_MAJOR_VERSION) + if (this->maj_version == IKEV2_MAJOR_VERSION) { + /* IKEv1 exchange type in IKEv2? */ return FAILED; } break; @@ -223,14 +224,20 @@ METHOD(payload_t, verify, status_t, #ifdef ME case ME_CONNECT: #endif /* ME */ - if (this->maj_version != IKEV2_MAJOR_VERSION) + if (this->maj_version == IKEV1_MAJOR_VERSION) { + /* IKEv2 exchange type in IKEv1? */ return FAILED; } break; default: - /* unsupported exchange type */ - return FAILED; + if (this->maj_version == IKEV1_MAJOR_VERSION || + this->maj_version == IKEV2_MAJOR_VERSION) + { + /* unsupported exchange type for known version */ + return FAILED; + } + break; } if (this->initiator_spi == 0) { @@ -501,4 +508,3 @@ ike_header_t *ike_header_create_version(int major, int minor) } return this; } - |