diff options
author | Andreas Steffen <andreas.steffen@strongswan.org> | 2008-04-28 16:00:52 +0000 |
---|---|---|
committer | Andreas Steffen <andreas.steffen@strongswan.org> | 2008-04-28 16:00:52 +0000 |
commit | 460025e253a19b190dde7fded8aedd91e828955b (patch) | |
tree | 6ac1cc0a5d0246b2b14aa72d826ba518d87b1ca9 /src/libstrongswan/asn1/asn1_parser.c | |
parent | 63cdbca21196c027b8c13701084522e31ee59775 (diff) | |
download | strongswan-460025e253a19b190dde7fded8aedd91e828955b.tar.bz2 strongswan-460025e253a19b190dde7fded8aedd91e828955b.tar.xz |
introduced ASN1_EXIT command in ASN.1 object syntax definition
Diffstat (limited to 'src/libstrongswan/asn1/asn1_parser.c')
-rw-r--r-- | src/libstrongswan/asn1/asn1_parser.c | 14 |
1 files changed, 5 insertions, 9 deletions
diff --git a/src/libstrongswan/asn1/asn1_parser.c b/src/libstrongswan/asn1/asn1_parser.c index 5a32d6e64..ce35a9fae 100644 --- a/src/libstrongswan/asn1/asn1_parser.c +++ b/src/libstrongswan/asn1/asn1_parser.c @@ -46,11 +46,6 @@ struct private_asn1_parser_t { asn1Object_t const *objects; /** - * Total number of syntax definition lines - */ - int roof; - - /** * Current syntax definition line */ int line; @@ -98,12 +93,14 @@ static bool iterate(private_asn1_parser_t *this, int *objectID, chunk_t *object) *object = chunk_empty; + /* Advance to the next object syntax definition line */ + obj = this->objects[++(this->line)]; + /* Terminate if the end of the object syntax definition has been reached */ - if (++(this->line) >= this->roof) + if (obj.flags & ASN1_EXIT) { return FALSE; } - obj = this->objects[this->line]; if (obj.flags & ASN1_END) /* end of loop or option found */ { @@ -284,7 +281,7 @@ static void destroy(private_asn1_parser_t *this) /** * Defined in header. */ -asn1_parser_t* asn1_parser_create(asn1Object_t const *objects, int roof, chunk_t blob) +asn1_parser_t* asn1_parser_create(asn1Object_t const *objects, chunk_t blob) { private_asn1_parser_t *this = malloc_thing(private_asn1_parser_t); @@ -292,7 +289,6 @@ asn1_parser_t* asn1_parser_create(asn1Object_t const *objects, int roof, chunk_t this->objects = objects; this->blobs[0] = blob; this->line = -1; - this->roof = roof; this->success = TRUE; this->public.iterate = (bool (*)(asn1_parser_t*, int*, chunk_t*))iterate; |