From: Martin Willi Date: Mon, 21 Nov 2011 09:10:48 +0000 (+0100) Subject: Update header length after each parsed rule, as it might change when parsing SPI... X-Git-Tag: 5.0.0~338^2~9^2~465 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=4ea258538e396949b6c8c626e80bf8cc3c191dc3;p=thirdparty%2Fstrongswan.git Update header length after each parsed rule, as it might change when parsing SPI size --- diff --git a/src/libcharon/encoding/parser.c b/src/libcharon/encoding/parser.c index e599b84d9d..39ce2db67c 100644 --- a/src/libcharon/encoding/parser.c +++ b/src/libcharon/encoding/parser.c @@ -380,12 +380,13 @@ METHOD(parser_t, parse_payload, status_t, /* base pointer for output, avoids casting in every rule */ output = pld; - - header_length = pld->get_header_length(pld); /* parse the payload with its own rulse */ rule_count = pld->get_encoding_rules(pld, &this->rules); for (rule_number = 0; rule_number < rule_count; rule_number++) { + /* update header length for each rule, as it is dynamic (SPIs) */ + header_length = pld->get_header_length(pld); + rule = &(this->rules[rule_number]); DBG2(DBG_ENC, " parsing rule %d %N", rule_number, encoding_type_names, rule->type);