aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/charon/encoding/parser.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/src/charon/encoding/parser.c b/src/charon/encoding/parser.c
index 3e333f76d..76ae32fb9 100644
--- a/src/charon/encoding/parser.c
+++ b/src/charon/encoding/parser.c
@@ -329,6 +329,12 @@ static bool parse_list(private_parser_t *this, int rule_number,
list->insert_last(list, payload);
length -= this->byte_pos - pos_before;
}
+ if (length != 0)
+ { /* must yield exactly to zero */
+ DBG1(DBG_ENC, " length of %N substructure list invalid",
+ payload_type_names, payload_type);
+ return FALSE;
+ }
*output_pos = list;
return TRUE;
}