diff options
author | Martin Willi <martin@revosec.ch> | 2010-11-10 17:40:43 +0100 |
---|---|---|
committer | Martin Willi <martin@revosec.ch> | 2011-01-05 16:45:44 +0100 |
commit | b0f6b31db8be3a014a7a31338eab2feabda54cec (patch) | |
tree | 8ed44f38e756b99312b0871b927715751915c7fc /src | |
parent | 50b28ad8a4e7f15c6fad76178748290651882fd2 (diff) | |
download | strongswan-b0f6b31db8be3a014a7a31338eab2feabda54cec.tar.bz2 strongswan-b0f6b31db8be3a014a7a31338eab2feabda54cec.tar.xz |
Fixed length calculation of unknown payload
Diffstat (limited to 'src')
-rw-r--r-- | src/libcharon/encoding/payloads/unknown_payload.c | 5 |
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; } |