aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMartin Willi <martin@revosec.ch>2010-11-10 17:40:43 +0100
committerMartin Willi <martin@revosec.ch>2011-01-05 16:45:44 +0100
commitb0f6b31db8be3a014a7a31338eab2feabda54cec (patch)
tree8ed44f38e756b99312b0871b927715751915c7fc
parent50b28ad8a4e7f15c6fad76178748290651882fd2 (diff)
downloadstrongswan-b0f6b31db8be3a014a7a31338eab2feabda54cec.tar.bz2
strongswan-b0f6b31db8be3a014a7a31338eab2feabda54cec.tar.xz
Fixed length calculation of unknown payload
-rw-r--r--src/libcharon/encoding/payloads/unknown_payload.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/src/libcharon/encoding/payloads/unknown_payload.c b/src/libcharon/encoding/payloads/unknown_payload.c
index 7fa381632..f2c780885 100644
--- a/src/libcharon/encoding/payloads/unknown_payload.c
+++ b/src/libcharon/encoding/payloads/unknown_payload.c
@@ -97,6 +97,10 @@ encoding_rule_t unknown_payload_encodings[] = {
METHOD(payload_t, verify, status_t,
private_unknown_payload_t *this)
{
+ if (this->payload_length != UNKNOWN_PAYLOAD_HEADER_LENGTH + this->data.len)
+ {
+ return FAILED;
+ }
return SUCCESS;
}
@@ -192,6 +196,7 @@ unknown_payload_t *unknown_payload_create_data(payload_type_t type,
this = (private_unknown_payload_t*)unknown_payload_create(type);
this->data = data;
this->critical = critical;
+ this->payload_length = UNKNOWN_PAYLOAD_HEADER_LENGTH + data.len;
return &this->public;
}