aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorTobias Brunner <tobias@strongswan.org>2011-11-25 17:59:39 +0100
committerTobias Brunner <tobias@strongswan.org>2012-03-20 17:31:08 +0100
commit37639e94fba52dad26f8205ac3c263b34e697720 (patch)
treeae99f223f8ddd43a71f1a4a0c39b5f5c5119b818 /src
parent29a5e0707eb6cb1fd3f23b399af8f2fa0e7efe9b (diff)
downloadstrongswan-37639e94fba52dad26f8205ac3c263b34e697720.tar.bz2
strongswan-37639e94fba52dad26f8205ac3c263b34e697720.tar.xz
Handle invalid IKEv1 hashes more specifically.
Diffstat (limited to 'src')
-rw-r--r--src/libcharon/encoding/message.c2
-rw-r--r--src/libcharon/encoding/payloads/notify_payload.h2
-rw-r--r--src/libcharon/sa/task_manager_v1.c2
3 files changed, 4 insertions, 2 deletions
diff --git a/src/libcharon/encoding/message.c b/src/libcharon/encoding/message.c
index 3b45b7608..6c6004fac 100644
--- a/src/libcharon/encoding/message.c
+++ b/src/libcharon/encoding/message.c
@@ -1942,7 +1942,7 @@ METHOD(message_t, parse_body, status_t,
DBG1(DBG_ENC, "our hash does not match received %B",
&other_hash);
chunk_free(&hash);
- return VERIFY_ERROR;
+ return FAILED;
}
DBG2(DBG_ENC, "verified IKEv1 message with hash %B", &hash);
chunk_free(&hash);
diff --git a/src/libcharon/encoding/payloads/notify_payload.h b/src/libcharon/encoding/payloads/notify_payload.h
index 1fc310962..9539231ca 100644
--- a/src/libcharon/encoding/payloads/notify_payload.h
+++ b/src/libcharon/encoding/payloads/notify_payload.h
@@ -51,6 +51,8 @@ enum notify_type_t {
/* IKEv1 only */
PAYLOAD_MALFORMED = 16,
INVALID_KE_PAYLOAD = 17,
+ /* IKEv1 only */
+ INVALID_HASH_INFORMATION = 23,
AUTHENTICATION_FAILED = 24,
SINGLE_PAIR_REQUIRED = 34,
NO_ADDITIONAL_SAS = 35,
diff --git a/src/libcharon/sa/task_manager_v1.c b/src/libcharon/sa/task_manager_v1.c
index c1868f224..5c9c926d8 100644
--- a/src/libcharon/sa/task_manager_v1.c
+++ b/src/libcharon/sa/task_manager_v1.c
@@ -717,7 +717,7 @@ static status_t parse_message(private_task_manager_t *this, message_t *msg)
case FAILED:
DBG1(DBG_IKE, "integrity check failed");
send_notify_response(this, msg,
- PAYLOAD_MALFORMED, chunk_empty);
+ INVALID_HASH_INFORMATION, chunk_empty);
break;
case INVALID_STATE:
DBG1(DBG_IKE, "found encrypted message, but no keys available");