diff options
author | Martin Willi <martin@strongswan.org> | 2009-06-17 13:38:05 +0200 |
---|---|---|
committer | Martin Willi <martin@strongswan.org> | 2009-06-17 13:38:05 +0200 |
commit | 80d3a187c5b8d0ea0e88296c48dddaecece837a2 (patch) | |
tree | 27001569988f2208648a5e4985ba74eb9a85f4d8 /src/charon/encoding/parser.c | |
parent | df2565a2d57929f68b6de06e1e4475e605a6acff (diff) | |
download | strongswan-80d3a187c5b8d0ea0e88296c48dddaecece837a2.tar.bz2 strongswan-80d3a187c5b8d0ea0e88296c48dddaecece837a2.tar.xz |
double check that parsing a list consumes all bytes
Diffstat (limited to 'src/charon/encoding/parser.c')
-rw-r--r-- | src/charon/encoding/parser.c | 6 |
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; } |