diff options
author | Andrew Bartlett <abartlet@samba.org> | 2007-08-22 06:46:34 +0000 |
---|---|---|
committer | Gerald (Jerry) Carter <jerry@samba.org> | 2007-10-10 15:02:25 -0500 |
commit | b39330c4873d4c3923a577e89690fc0e43b0c61a (patch) | |
tree | 882a09a9e2ef446d3662ac542d1bf60fb8e7dfb2 /source4/heimdal/lib/asn1 | |
parent | db24e606f10902de49891e32600403274ece16da (diff) | |
download | samba-b39330c4873d4c3923a577e89690fc0e43b0c61a.tar.gz samba-b39330c4873d4c3923a577e89690fc0e43b0c61a.tar.bz2 samba-b39330c4873d4c3923a577e89690fc0e43b0c61a.zip |
r24614: Merge with current lorikeet-heimdal. This brings us one step closer
to an alpha release.
Andrew Bartlett
(This used to be commit 30e02747d511630659c59eafec8d28f58605943b)
Diffstat (limited to 'source4/heimdal/lib/asn1')
-rw-r--r-- | source4/heimdal/lib/asn1/asn1_err.et | 5 | ||||
-rw-r--r-- | source4/heimdal/lib/asn1/der_get.c | 25 | ||||
-rw-r--r-- | source4/heimdal/lib/asn1/gen.c | 3 | ||||
-rw-r--r-- | source4/heimdal/lib/asn1/gen_decode.c | 72 | ||||
-rw-r--r-- | source4/heimdal/lib/asn1/gen_encode.c | 19 | ||||
-rw-r--r-- | source4/heimdal/lib/asn1/gen_length.c | 13 | ||||
-rw-r--r-- | source4/heimdal/lib/asn1/k5.asn1 | 6 | ||||
-rw-r--r-- | source4/heimdal/lib/asn1/lex.c | 33 | ||||
-rw-r--r-- | source4/heimdal/lib/asn1/parse.c | 795 | ||||
-rw-r--r-- | source4/heimdal/lib/asn1/parse.h | 6 | ||||
-rw-r--r-- | source4/heimdal/lib/asn1/rfc2459.asn1 | 23 | ||||
-rw-r--r-- | source4/heimdal/lib/asn1/test.asn1 | 9 | ||||
-rw-r--r-- | source4/heimdal/lib/asn1/timegm.c | 6 |
13 files changed, 580 insertions, 435 deletions
diff --git a/source4/heimdal/lib/asn1/asn1_err.et b/source4/heimdal/lib/asn1/asn1_err.et index 67af1a44fc..c624e218e7 100644 --- a/source4/heimdal/lib/asn1/asn1_err.et +++ b/source4/heimdal/lib/asn1/asn1_err.et @@ -3,7 +3,7 @@ # # This might look like a com_err file, but is not # -id "$Id: asn1_err.et 20010 2007-01-20 21:52:27Z lha $" +id "$Id: asn1_err.et 21394 2007-07-02 10:14:43Z lha $" error_table asn1 prefix ASN1 @@ -19,4 +19,7 @@ error_code BAD_FORMAT, "ASN.1 badly-formatted encoding" error_code PARSE_ERROR, "ASN.1 parse error" error_code EXTRA_DATA, "ASN.1 extra data past end of end structure" error_code BAD_CHARACTER, "ASN.1 invalid character in string" +error_code MIN_CONSTRAINT, "ASN.1 too few elements" +error_code MAX_CONSTRAINT, "ASN.1 too many elements" +error_code EXACT_CONSTRAINT, "ASN.1 wrong number of elements" end diff --git a/source4/heimdal/lib/asn1/der_get.c b/source4/heimdal/lib/asn1/der_get.c index 3022435b33..f232ce9a29 100644 --- a/source4/heimdal/lib/asn1/der_get.c +++ b/source4/heimdal/lib/asn1/der_get.c @@ -33,7 +33,7 @@ #include "der_locl.h" -RCSID("$Id: der_get.c 20570 2007-04-27 14:06:27Z lha $"); +RCSID("$Id: der_get.c 21369 2007-06-27 10:14:39Z lha $"); #include <version.h> @@ -336,32 +336,25 @@ generalizedtime2time (const char *s, time_t *t) *t = _der_timegm (&tm); return 0; } -#undef timegm static int der_get_time (const unsigned char *p, size_t len, time_t *data, size_t *size) { - heim_octet_string k; char *times; - size_t ret = 0; - size_t l; int e; - e = der_get_octet_string (p, len, &k, &l); - if (e) return e; - p += l; - len -= l; - ret += l; - times = realloc(k.data, k.length + 1); - if (times == NULL){ - free(k.data); + if (len > len + 1 || len == 0) + return ASN1_BAD_LENGTH; + + times = malloc(len + 1); + if (times == NULL) return ENOMEM; - } - times[k.length] = 0; + memcpy(times, p, len); + times[len] = '\0'; e = generalizedtime2time(times, data); free (times); - if(size) *size = ret; + if(size) *size = len; return e; } diff --git a/source4/heimdal/lib/asn1/gen.c b/source4/heimdal/lib/asn1/gen.c index cc1a3056de..26890212ae 100644 --- a/source4/heimdal/lib/asn1/gen.c +++ b/source4/heimdal/lib/asn1/gen.c @@ -33,7 +33,7 @@ #include "gen_locl.h" -RCSID("$Id: gen.c 20670 2007-05-11 00:39:41Z lha $"); +RCSID("$Id: gen.c 21364 2007-06-27 08:51:06Z lha $"); FILE *headerfile, *codefile, *logfile; @@ -253,6 +253,7 @@ generate_header_of_codefile(const char *name) "#include <time.h>\n" "#include <string.h>\n" "#include <errno.h>\n" + "#include <limits.h>\n" "#include <krb5-types.h>\n", orig_filename); diff --git a/source4/heimdal/lib/asn1/gen_decode.c b/source4/heimdal/lib/asn1/gen_decode.c index 7ebef6cdce..face9ba47a 100644 --- a/source4/heimdal/lib/asn1/gen_decode.c +++ b/source4/heimdal/lib/asn1/gen_decode.c @@ -34,7 +34,7 @@ #include "gen_locl.h" #include "lex.h" -RCSID("$Id: gen_decode.c 19572 2006-12-29 17:30:32Z lha $"); +RCSID("$Id: gen_decode.c 21503 2007-07-12 11:57:19Z lha $"); static void decode_primitive (const char *typename, const char *name, const char *forwstr) @@ -202,6 +202,32 @@ find_tag (const Type *t, } } +static void +range_check(const char *name, + const char *length, + const char *forwstr, + struct range *r) +{ + if (r->min == r->max + 2 || r->min < r->max) + fprintf (codefile, + "if ((%s)->%s > %d) {\n" + "e = ASN1_MAX_CONSTRAINT; %s;\n" + "}\n", + name, length, r->max, forwstr); + if (r->min - 1 == r->max || r->min < r->max) + fprintf (codefile, + "if ((%s)->%s < %d) {\n" + "e = ASN1_MIN_CONSTRAINT; %s;\n" + "}\n", + name, length, r->min, forwstr); + if (r->max == r->min) + fprintf (codefile, + "if ((%s)->%s != %d) {\n" + "e = ASN1_EXACT_CONSTRAINT; %s;\n" + "}\n", + name, length, r->min, forwstr); +} + static int decode_type (const char *name, const Type *t, int optional, const char *forwstr, const char *tmpstr) @@ -236,12 +262,14 @@ decode_type (const char *name, const Type *t, int optional, } case TInteger: if(t->members) { - char *s; - asprintf(&s, "(int*)%s", name); - if (s == NULL) - errx (1, "out of memory"); - decode_primitive ("integer", s, forwstr); - free(s); + fprintf(codefile, + "{\n" + "int enumint;\n"); + decode_primitive ("integer", "&enumint", forwstr); + fprintf(codefile, + "*%s = enumint;\n" + "}\n", + name); } else if (t->range == NULL) { decode_primitive ("heim_integer", name, forwstr); } else if (t->range->min == INT_MIN && t->range->max == INT_MAX) { @@ -262,6 +290,8 @@ decode_type (const char *name, const Type *t, int optional, break; case TOctetString: decode_primitive ("octet_string", name, forwstr); + if (t->range) + range_check(name, "length", forwstr, t->range); break; case TBitString: { Member *m; @@ -394,19 +424,31 @@ decode_type (const char *name, const Type *t, int optional, "{\n" "size_t %s_origlen = len;\n" "size_t %s_oldret = ret;\n" + "size_t %s_olen = 0;\n" "void *%s_tmp;\n" "ret = 0;\n" "(%s)->len = 0;\n" - "(%s)->val = NULL;\n" + "(%s)->val = NULL;\n", + tmpstr, + tmpstr, + tmpstr, + tmpstr, + name, + name); + + fprintf (codefile, "while(ret < %s_origlen) {\n" - "%s_tmp = realloc((%s)->val, " - " sizeof(*((%s)->val)) * ((%s)->len + 1));\n" - "if (%s_tmp == NULL) { %s; }\n" + "size_t %s_nlen = %s_olen + sizeof(*((%s)->val));\n" + "if (%s_olen > %s_nlen) { e = ASN1_OVERFLOW; %s; }\n" + "%s_olen = %s_nlen;\n" + "%s_tmp = realloc((%s)->val, %s_olen);\n" + "if (%s_tmp == NULL) { e = ENOMEM; %s; }\n" "(%s)->val = %s_tmp;\n", - tmpstr, tmpstr, tmpstr, - name, name, + tmpstr, + tmpstr, tmpstr, name, + tmpstr, tmpstr, forwstr, tmpstr, tmpstr, - name, name, name, + tmpstr, name, tmpstr, tmpstr, forwstr, name, tmpstr); @@ -425,6 +467,8 @@ decode_type (const char *name, const Type *t, int optional, "}\n", name, tmpstr, tmpstr); + if (t->range) + range_check(name, "len", forwstr, t->range); free (n); free (sname); break; diff --git a/source4/heimdal/lib/asn1/gen_encode.c b/source4/heimdal/lib/asn1/gen_encode.c index b5337b1c43..9544514212 100644 --- a/source4/heimdal/lib/asn1/gen_encode.c +++ b/source4/heimdal/lib/asn1/gen_encode.c @@ -33,7 +33,7 @@ #include "gen_locl.h" -RCSID("$Id: gen_encode.c 19572 2006-12-29 17:30:32Z lha $"); +RCSID("$Id: gen_encode.c 21503 2007-07-12 11:57:19Z lha $"); static void encode_primitive (const char *typename, const char *name) @@ -121,12 +121,12 @@ encode_type (const char *name, const Type *t, const char *tmpstr) break; case TInteger: if(t->members) { - char *s; - asprintf(&s, "(const int*)%s", name); - if(s == NULL) - errx(1, "out of memory"); - encode_primitive ("integer", s); - free(s); + fprintf(codefile, + "{\n" + "int enumint = (int)*%s;\n", + name); + encode_primitive ("integer", "&enumint"); + fprintf(codefile, "}\n;"); } else if (t->range == NULL) { encode_primitive ("heim_integer", name); } else if (t->range->min == INT_MIN && t->range->max == INT_MAX) { @@ -293,6 +293,11 @@ encode_type (const char *name, const Type *t, const char *tmpstr) "int eret;\n"); fprintf(codefile, + "if ((%s)->len > UINT_MAX/sizeof(val[0]))\n" + "return ERANGE;\n", + name); + + fprintf(codefile, "val = malloc(sizeof(val[0]) * (%s)->len);\n" "if (val == NULL && (%s)->len != 0) return ENOMEM;\n", name, name); diff --git a/source4/heimdal/lib/asn1/gen_length.c b/source4/heimdal/lib/asn1/gen_length.c index a1f7cc6644..4cb5d45089 100644 --- a/source4/heimdal/lib/asn1/gen_length.c +++ b/source4/heimdal/lib/asn1/gen_length.c @@ -33,7 +33,7 @@ #include "gen_locl.h" -RCSID("$Id: gen_length.c 19539 2006-12-28 17:15:05Z lha $"); +RCSID("$Id: gen_length.c 21503 2007-07-12 11:57:19Z lha $"); static void length_primitive (const char *typename, @@ -72,12 +72,11 @@ length_type (const char *name, const Type *t, break; case TInteger: if(t->members) { - char *s; - asprintf(&s, "(const int*)%s", name); - if(s == NULL) - errx (1, "out of memory"); - length_primitive ("integer", s, variable); - free(s); + fprintf(codefile, + "{\n" + "int enumint = *%s;\n", name); + length_primitive ("integer", "&enumint", variable); + fprintf(codefile, "}\n"); } else if (t->range == NULL) { length_primitive ("heim_integer", name, variable); } else if (t->range->min == INT_MIN && t->range->max == INT_MAX) { diff --git a/source4/heimdal/lib/asn1/k5.asn1 b/source4/heimdal/lib/asn1/k5.asn1 index 14e9793fdc..e3fe2b11e9 100644 --- a/source4/heimdal/lib/asn1/k5.asn1 +++ b/source4/heimdal/lib/asn1/k5.asn1 @@ -1,4 +1,4 @@ --- $Id: k5.asn1 21092 2007-06-15 19:47:46Z lha $ +-- $Id: k5.asn1 21400 2007-07-02 19:57:31Z lha $ KERBEROS5 DEFINITIONS ::= BEGIN @@ -332,7 +332,7 @@ ETYPE-INFO2-ENTRY ::= SEQUENCE { s2kparams[2] OCTET STRING OPTIONAL } -ETYPE-INFO2 ::= SEQUENCE OF ETYPE-INFO2-ENTRY +ETYPE-INFO2 ::= SEQUENCE SIZE (1..MAX) OF ETYPE-INFO2-ENTRY METHOD-DATA ::= SEQUENCE OF PA-DATA @@ -341,7 +341,7 @@ TypedData ::= SEQUENCE { data-value[1] OCTET STRING OPTIONAL } -TYPED-DATA ::= SEQUENCE OF TypedData +TYPED-DATA ::= SEQUENCE SIZE (1..MAX) OF TypedData KDC-REQ-BODY ::= SEQUENCE { kdc-options[0] KDCOptions, diff --git a/source4/heimdal/lib/asn1/lex.c b/source4/heimdal/lib/asn1/lex.c index fe488eb904..d628e4696f 100644 --- a/source4/heimdal/lib/asn1/lex.c +++ b/source4/heimdal/lib/asn1/lex.c @@ -1,6 +1,5 @@ -#include "config.h" -#line 3 "lex.yy.c" +#line 3 "lex.c" #define YY_INT_ALIGNED short int @@ -343,6 +342,9 @@ FILE *yyin = (FILE *) 0, *yyout = (FILE *) 0; typedef int yy_state_type; extern int yylineno; + +int yylineno = 1; + extern char *yytext; #define yytext_ptr yytext @@ -824,7 +826,7 @@ char *yytext; * SUCH DAMAGE. */ -/* $Id: lex.l,v 1.31 2006/10/21 11:57:22 lha Exp $ */ +/* $Id: lex.l 18738 2006-10-21 11:57:22Z lha $ */ #ifdef HAVE_CONFIG_H #include <config.h> @@ -849,7 +851,7 @@ static unsigned lineno = 1; static void unterminated(const char *, unsigned); /* This is for broken old lexes (solaris 10 and hpux) */ -#line 852 "lex.yy.c" +#line 855 "lex.c" #define INITIAL 0 @@ -1004,7 +1006,7 @@ YY_DECL #line 68 "lex.l" -#line 1007 "lex.yy.c" +#line 1010 "lex.c" if ( !(yy_init) ) { @@ -1673,7 +1675,7 @@ YY_RULE_SETUP #line 274 "lex.l" ECHO; YY_BREAK -#line 1676 "lex.yy.c" +#line 1679 "lex.c" case YY_STATE_EOF(INITIAL): yyterminate(); @@ -2483,6 +2485,15 @@ static void yy_fatal_error (yyconst char* msg ) /* Accessor methods (get/set functions) to struct members. */ +/** Get the current line number. + * + */ +int yyget_lineno (void) +{ + + return yylineno; +} + /** Get the input stream. * */ @@ -2516,6 +2527,16 @@ char *yyget_text (void) return yytext; } +/** Set the current line number. + * @param line_number + * + */ +void yyset_lineno (int line_number ) +{ + + yylineno = line_number; +} + /** Set the input stream. This does not discard the current * input buffer. * @param in_str A readable stream. diff --git a/source4/heimdal/lib/asn1/parse.c b/source4/heimdal/lib/asn1/parse.c index d9cd23b662..6a3e524e93 100644 --- a/source4/heimdal/lib/asn1/parse.c +++ b/source4/heimdal/lib/asn1/parse.c @@ -16,7 +16,9 @@ GNU General Public License for more details. You should have received a copy of the GNU General Public License - along with this program; if not, see <http://www.gnu.org/licenses/>. */ + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. */ /* As a special exception, you may create a larger work that contains part or all of the Bison parser skeleton and distribute that work @@ -259,7 +261,7 @@ #include "gen_locl.h" #include "der.h" -RCSID("$Id: parse.y 19539 2006-12-28 17:15:05Z lha $"); +RCSID("$Id: parse.y 21597 2007-07-16 18:48:58Z lha $"); static Type *new_type (Typetype t); static struct constraint_spec *new_constraint_spec(enum ctype); @@ -300,7 +302,7 @@ typedef union YYSTYPE { int constant; struct value *value; - struct range range; + struct range *range; char *name; Type *type; Member *member; @@ -538,18 +540,18 @@ union yyalloc #endif /* YYFINAL -- State number of the termination state. */ -#define YYFINAL 4 +#define YYFINAL 6 /* YYLAST -- Last index in YYTABLE. */ -#define YYLAST 169 +#define YYLAST 195 /* YYNTOKENS -- Number of terminals. */ #define YYNTOKENS 98 /* YYNNTS -- Number of nonterminals. */ -#define YYNNTS 67 +#define YYNNTS 68 /* YYNRULES -- Number of rules. */ -#define YYNRULES 131 +#define YYNRULES 136 /* YYNRULES -- Number of states. */ -#define YYNSTATES 202 +#define YYNSTATES 214 /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */ #define YYUNDEFTOK 2 @@ -603,80 +605,83 @@ static const yytype_uint8 yytranslate[] = YYRHS. */ static const yytype_uint16 yyprhs[] = { - 0, 0, 3, 12, 15, 18, 21, 22, 25, 26, - 29, 30, 34, 35, 37, 38, 40, 43, 48, 50, - 53, 55, 57, 61, 63, 67, 69, 71, 73, 75, - 77, 79, 81, 83, 85, 87, 89, 91, 93, 95, - 97, 99, 101, 103, 109, 111, 114, 119, 121, 125, - 129, 134, 139, 141, 144, 150, 153, 156, 158, 163, - 167, 171, 176, 180, 184, 189, 191, 193, 195, 197, - 199, 202, 206, 208, 210, 212, 215, 219, 225, 230, - 234, 239, 240, 242, 244, 246, 247, 249, 251, 256, - 258, 260, 262, 264, 266, 268, 270, 272, 274, 278, - 282, 285, 287, 290, 294, 296, 300, 305, 307, 308, - 312, 313, 316, 321, 323, 325, 327, 329, 331, 333, - 335, 337, 339, 341, 343, 345, 347, 349, 351, 353, - 355, 357 + 0, 0, 3, 13, 16, 19, 22, 23, 26, 27, + 30, 31, 35, 36, 38, 39, 41, 44, 49, 51, + 54, 56, 58, 62, 64, 68, 70, 72, 74, 76, + 78, 80, 82, 84, 86, 88, 90, 92, 94, 96, + 98, 100, 102, 104, 110, 116, 122, 126, 128, 131, + 136, 138, 142, 146, 151, 156, 158, 161, 167, 170, + 174, 176, 177, 180, 185, 189, 194, 199, 203, 207, + 212, 214, 216, 218, 220, 222, 225, 229, 231, 233, + 235, 238, 242, 248, 253, 257, 262, 263, 265, 267, + 269, 270, 272, 274, 279, 281, 283, 285, 287, 289, + 291, 293, 295, 297, 301, 305, 308, 310, 313, 317, + 319, 323, 328, 330, 331, 335, 336, 339, 344, 346, + 348, 350, 352, 354, 356, 358, 360, 362, 364, 366, + 368, 370, 372, 374, 376, 378, 380 }; /* YYRHS -- A `-1'-separated list of the rules' RHS. */ static const yytype_int16 yyrhs[] = { - 99, 0, -1, 86, 21, 100, 101, 84, 8, 102, - 24, -1, 27, 70, -1, 38, 70, -1, 7, 70, - -1, -1, 29, 39, -1, -1, 103, 107, -1, -1, - 40, 104, 90, -1, -1, 105, -1, -1, 106, -1, - 105, 106, -1, 109, 32, 86, 150, -1, 108, -1, - 108, 107, -1, 110, -1, 142, -1, 86, 91, 109, - -1, 86, -1, 86, 84, 111, -1, 112, -1, 129, - -1, 132, -1, 120, -1, 113, -1, 143, -1, 128, - -1, 118, -1, 115, -1, 123, -1, 121, -1, 122, - -1, 124, -1, 125, -1, 126, -1, 127, -1, 138, - -1, 11, -1, 92, 154, 83, 154, 93, -1, 43, - -1, 43, 114, -1, 43, 94, 116, 95, -1, 117, - -1, 116, 91, 117, -1, 116, 91, 85, -1, 86, - 92, 162, 93, -1, 25, 94, 119, 95, -1, 116, - -1, 9, 67, -1, 9, 67, 94, 148, 95, -1, - 51, 37, -1, 52, 67, -1, 49, -1, 64, 94, - 145, 95, -1, 64, 94, 95, -1, 64, 53, 111, - -1, 65, 94, 145, 95, -1, 65, 94, 95, -1, - 65, 53, 111, -1, 14, 94, 145, 95, -1, 130, - -1, 131, -1, 86, -1, 34, -1, 77, -1, 111, - 133, -1, 92, 134, 93, -1, 135, -1, 136, -1, - 137, -1, 19, 111, -1, 23, 12, 154, -1, 19, - 111, 23, 12, 154, -1, 18, 12, 94, 95, -1, - 139, 141, 111, -1, 96, 140, 89, 97, -1, -1, - 76, -1, 6, -1, 60, -1, -1, 27, -1, 38, - -1, 86, 111, 84, 154, -1, 144, -1, 33, -1, - 78, -1, 61, -1, 81, -1, 36, -1, 10, -1, - 79, -1, 147, -1, 145, 91, 147, -1, 145, 91, - 85, -1, 86, 111, -1, 146, -1, 146, 54, -1, - 146, 20, 154, -1, 149, -1, 148, 91, 149, -1, - 86, 92, 89, 93, -1, 151, -1, -1, 94, 152, - 95, -1, -1, 153, 152, -1, 86, 92, 89, 93, - -1, 86, -1, 89, -1, 155, -1, 156, -1, 160, - -1, 159, -1, 161, -1, 164, -1, 163, -1, 157, - -1, 158, -1, 86, -1, 88, -1, 71, -1, 31, - -1, 162, -1, 89, -1, 49, -1, 151, -1 + 99, 0, -1, 86, 151, 21, 100, 101, 84, 8, + 102, 24, -1, 27, 70, -1, 38, 70, -1, 7, + 70, -1, -1, 29, 39, -1, -1, 103, 107, -1, + -1, 40, 104, 90, -1, -1, 105, -1, -1, 106, + -1, 105, 106, -1, 109, 32, 86, 151, -1, 108, + -1, 108, 107, -1, 110, -1, 143, -1, 86, 91, + 109, -1, 86, -1, 86, 84, 111, -1, 112, -1, + 130, -1, 133, -1, 120, -1, 113, -1, 144, -1, + 129, -1, 118, -1, 115, -1, 123, -1, 121, -1, + 122, -1, 125, -1, 126, -1, 127, -1, 128, -1, + 139, -1, 11, -1, 92, 155, 83, 155, 93, -1, + 92, 155, 83, 46, 93, -1, 92, 47, 83, 155, + 93, -1, 92, 155, 93, -1, 43, -1, 43, 114, + -1, 43, 94, 116, 95, -1, 117, -1, 116, 91, + 117, -1, 116, 91, 85, -1, 86, 92, 163, 93, + -1, 25, 94, 119, 95, -1, 116, -1, 9, 67, + -1, 9, 67, 94, 149, 95, -1, 51, 37, -1, + 52, 67, 124, -1, 49, -1, -1, 66, 114, -1, + 64, 94, 146, 95, -1, 64, 94, 95, -1, 64, + 124, 53, 111, -1, 65, 94, 146, 95, -1, 65, + 94, 95, -1, 65, 53, 111, -1, 14, 94, 146, + 95, -1, 131, -1, 132, -1, 86, -1, 34, -1, + 77, -1, 111, 134, -1, 92, 135, 93, -1, 136, + -1, 137, -1, 138, -1, 19, 111, -1, 23, 12, + 155, -1, 19, 111, 23, 12, 155, -1, 18, 12, + 94, 95, -1, 140, 142, 111, -1, 96, 141, 89, + 97, -1, -1, 76, -1, 6, -1, 60, -1, -1, + 27, -1, 38, -1, 86, 111, 84, 155, -1, 145, + -1, 33, -1, 78, -1, 61, -1, 81, -1, 36, + -1, 10, -1, 79, -1, 148, -1, 146, 91, 148, + -1, 146, 91, 85, -1, 86, 111, -1, 147, -1, + 147, 54, -1, 147, 20, 155, -1, 150, -1, 149, + 91, 150, -1, 86, 92, 89, 93, -1, 152, -1, + -1, 94, 153, 95, -1, -1, 154, 153, -1, 86, + 92, 89, 93, -1, 86, -1, 89, -1, 156, -1, + 157, -1, 161, -1, 160, -1, 162, -1, 165, -1, + 164, -1, 158, -1, 159, -1, 86, -1, 88, -1, + 71, -1, 31, -1, 163, -1, 89, -1, 49, -1, + 152, -1 }; /* YYRLINE[YYN] -- source line where rule number YYN was defined. */ static const yytype_uint16 yyrline[] = { - 0, 231, 231, 238, 239, 241, 243, 246, 248, 251, - 252, 255, 256, 259, 260, 263, 264, 267, 278, 279, - 282, 283, 286, 292, 300, 310, 311, 312, 315, 316, - 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, - 327, 328, 331, 338, 348, 353, 360, 368, 374, 379, - 383, 396, 404, 407, 414, 422, 428, 435, 442, 448, - 456, 464, 470, 478, 486, 493, 494, 497, 508, 513, - 520, 536, 542, 545, 546, 549, 555, 563, 573, 579, - 592, 601, 604, 608, 612, 619, 622, 626, 633, 644, - 647, 652, 657, 662, 667, 672, 677, 685, 691, 696, - 707, 718, 724, 730, 738, 744, 751, 764, 765, 768, - 775, 778, 789, 793, 804, 810, 811, 814, 815, 816, - 817, 818, 821, 824, 827, 838, 846, 852, 860, 868, - 871, 876 + 0, 233, 233, 240, 241, 243, 245, 248, 250, 253, + 254, 257, 258, 261, 262, 265, 266, 269, 280, 281, + 284, 285, 288, 294, 302, 312, 313, 314, 317, 318, + 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, + 329, 330, 333, 340, 350, 358, 366, 377, 382, 388, + 396, 402, 407, 411, 424, 432, 435, 442, 450, 456, + 465, 473, 474, 479, 485, 493, 502, 508, 516, 524, + 531, 532, 535, 546, 551, 558, 574, 580, 583, 584, + 587, 593, 601, 611, 617, 630, 639, 642, 646, 650, + 657, 660, 664, 671, 682, 685, 690, 695, 700, 705, + 710, 715, 723, 729, 734, 745, 756, 762, 768, 776, + 782, 789, 802, 803, 806, 813, 816, 827, 831, 842, + 848, 849, 852, 853, 854, 855, 856, 859, 862, 865, + 876, 884, 890, 898, 906, 909, 914 }; #endif @@ -712,7 +717,7 @@ static const char *const yytname[] = "TypeAssignment", "Type", "BuiltinType", "BooleanType", "range", "IntegerType", "NamedNumberList", "NamedNumber", "EnumeratedType", "Enumerations", "BitStringType", "ObjectIdentifierType", - "OctetStringType", "NullType", "SequenceType", "SequenceOfType", + "OctetStringType", "NullType", "size", "SequenceType", "SequenceOfType", "SetType", "SetOfType", "ChoiceType", "ReferencedType", "DefinedType", "UsefulType", "ConstrainedType", "Constraint", "ConstraintSpec", "GeneralConstraint", "ContentsConstraint", "UserDefinedConstraint", @@ -751,35 +756,35 @@ static const yytype_uint8 yyr1[] = 102, 103, 103, 104, 104, 105, 105, 106, 107, 107, 108, 108, 109, 109, 110, 111, 111, 111, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, - 112, 112, 113, 114, 115, 115, 115, 116, 116, 116, - 117, 118, 119, 120, 120, 121, 122, 123, 124, 124, - 125, 126, 126, 127, 128, 129, 129, 130, 131, 131, - 132, 133, 134, 135, 135, 136, 136, 136, 137, 138, - 139, 140, 140, 140, 140, 141, 141, 141, 142, 143, - 144, 144, 144, 144, 144, 144, 144, 145, 145, 145, - 146, 147, 147, 147, 148, 148, 149, 150, 150, 151, - 152, 152, 153, 153, 153, 154, 154, 155, 155, 155, - 155, 155, 156, 157, 158, 159, 160, 160, 161, 162, - 163, 164 + 112, 112, 113, 114, 114, 114, 114, 115, 115, 115, + 116, 116, 116, 117, 118, 119, 120, 120, 121, 122, + 123, 124, 124, 125, 125, 126, 127, 127, 128, 129, + 130, 130, 131, 132, 132, 133, 134, 135, 136, 136, + 137, 137, 137, 138, 139, 140, 141, 141, 141, 141, + 142, 142, 142, 143, 144, 145, 145, 145, 145, 145, + 145, 145, 146, 146, 146, 147, 148, 148, 148, 149, + 149, 150, 151, 151, 152, 153, 153, 154, 154, 154, + 155, 155, 156, 156, 156, 156, 156, 157, 158, 159, + 160, 161, 161, 162, 163, 164, 165 }; /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */ static const yytype_uint8 yyr2[] = { - 0, 2, 8, 2, 2, 2, 0, 2, 0, 2, + 0, 2, 9, 2, 2, 2, 0, 2, 0, 2, 0, 3, 0, 1, 0, 1, 2, 4, 1, 2, 1, 1, 3, 1, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 5, 1, 2, 4, 1, 3, 3, - 4, 4, 1, 2, 5, 2, 2, 1, 4, 3, - 3, 4, 3, 3, 4, 1, 1, 1, 1, 1, - 2, 3, 1, 1, 1, 2, 3, 5, 4, 3, - 4, 0, 1, 1, 1, 0, 1, 1, 4, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 3, 3, - 2, 1, 2, 3, 1, 3, 4, 1, 0, 3, - 0, 2, 4, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 5, 5, 5, 3, 1, 2, 4, + 1, 3, 3, 4, 4, 1, 2, 5, 2, 3, + 1, 0, 2, 4, 3, 4, 4, 3, 3, 4, + 1, 1, 1, 1, 1, 2, 3, 1, 1, 1, + 2, 3, 5, 4, 3, 4, 0, 1, 1, 1, + 0, 1, 1, 4, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 3, 3, 2, 1, 2, 3, 1, + 3, 4, 1, 0, 3, 0, 2, 4, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1 + 1, 1, 1, 1, 1, 1, 1 }; /* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state @@ -787,79 +792,81 @@ static const yytype_uint8 yyr2[] = means the default is an error. */ static const yytype_uint8 yydefact[] = { - 0, 0, 0, 6, 1, 0, 0, 0, 8, 5, - 3, 4, 0, 0, 7, 0, 10, 14, 0, 0, - 23, 0, 13, 15, 0, 2, 0, 9, 18, 20, - 21, 0, 11, 16, 0, 0, 95, 42, 0, 0, - 90, 68, 94, 44, 57, 0, 0, 92, 0, 0, - 69, 91, 96, 93, 0, 67, 81, 0, 25, 29, - 33, 32, 28, 35, 36, 34, 37, 38, 39, 40, - 31, 26, 65, 66, 27, 41, 85, 30, 89, 19, - 22, 108, 53, 0, 0, 0, 0, 45, 55, 56, - 0, 0, 0, 0, 24, 83, 84, 82, 0, 0, - 0, 70, 86, 87, 0, 110, 17, 107, 0, 0, - 0, 101, 97, 0, 52, 47, 0, 127, 130, 126, - 124, 125, 129, 131, 0, 115, 116, 122, 123, 118, - 117, 119, 128, 121, 120, 0, 60, 59, 0, 63, - 62, 0, 0, 88, 0, 0, 0, 0, 72, 73, - 74, 79, 113, 114, 0, 110, 0, 0, 104, 100, - 0, 64, 0, 102, 0, 0, 51, 0, 46, 58, - 61, 80, 0, 75, 0, 71, 0, 109, 111, 0, - 0, 54, 99, 98, 103, 0, 49, 48, 0, 0, - 0, 76, 0, 0, 105, 50, 43, 78, 0, 112, - 106, 77 + 0, 113, 0, 115, 0, 112, 1, 118, 119, 0, + 115, 6, 0, 114, 116, 0, 0, 0, 8, 0, + 5, 3, 4, 0, 0, 117, 7, 0, 10, 14, + 0, 0, 23, 0, 13, 15, 0, 2, 0, 9, + 18, 20, 21, 0, 11, 16, 0, 0, 100, 42, + 0, 0, 95, 73, 99, 47, 60, 0, 0, 97, + 61, 0, 74, 96, 101, 98, 0, 72, 86, 0, + 25, 29, 33, 32, 28, 35, 36, 34, 37, 38, + 39, 40, 31, 26, 70, 71, 27, 41, 90, 30, + 94, 19, 22, 113, 56, 0, 0, 0, 0, 48, + 58, 61, 0, 0, 0, 0, 0, 24, 88, 89, + 87, 0, 0, 0, 75, 91, 92, 0, 17, 0, + 0, 0, 106, 102, 0, 55, 50, 0, 132, 0, + 135, 131, 129, 130, 134, 136, 0, 120, 121, 127, + 128, 123, 122, 124, 133, 126, 125, 0, 59, 62, + 64, 0, 0, 68, 67, 0, 0, 93, 0, 0, + 0, 0, 77, 78, 79, 84, 0, 0, 109, 105, + 0, 69, 0, 107, 0, 0, 54, 0, 0, 46, + 49, 63, 65, 66, 85, 0, 80, 0, 76, 0, + 0, 57, 104, 103, 108, 0, 52, 51, 0, 0, + 0, 0, 0, 81, 0, 110, 53, 45, 44, 43, + 83, 0, 111, 82 }; /* YYDEFGOTO[NTERM-NUM]. */ static const yytype_int16 yydefgoto[] = { - -1, 2, 8, 13, 18, 19, 21, 22, 23, 27, - 28, 24, 29, 57, 58, 59, 87, 60, 114, 115, - 61, 116, 62, 63, 64, 65, 66, 67, 68, 69, - 70, 71, 72, 73, 74, 101, 147, 148, 149, 150, - 75, 76, 98, 104, 30, 77, 78, 110, 111, 112, - 157, 158, 106, 123, 154, 155, 124, 125, 126, 127, - 128, 129, 130, 131, 132, 133, 134 + -1, 2, 18, 24, 30, 31, 33, 34, 35, 39, + 40, 36, 41, 69, 70, 71, 99, 72, 125, 126, + 73, 127, 74, 75, 76, 77, 104, 78, 79, 80, + 81, 82, 83, 84, 85, 86, 114, 161, 162, 163, + 164, 87, 88, 111, 117, 42, 89, 90, 121, 122, + 123, 167, 168, 4, 135, 9, 10, 136, 137, 138, + 139, 140, 141, 142, 143, 144, 145, 146 }; /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing STATE-NUM. */ -#define YYPACT_NINF -100 +#define YYPACT_NINF -113 static const yytype_int16 yypact[] = { - -65, 19, 33, 5, -100, -29, -17, 11, 53, -100, - -100, -100, 47, 13, -100, 90, -34, 18, 81, 20, - 16, 21, 18, -100, 76, -100, -7, -100, 20, -100, - -100, 18, -100, -100, 23, 43, -100, -100, 24, 25, - -100, -100, -100, -4, -100, 77, 46, -100, -48, -45, - -100, -100, -100, -100, 51, -100, 4, -64, -100, -100, - -100, -100, -100, -100, -100, -100, -100, -100, -100, -100, - -100, -100, -100, -100, -100, -100, -16, -100, -100, -100, - -100, 26, 27, 31, 36, 52, 36, -100, -100, -100, - 51, -71, 51, -70, 32, -100, -100, -100, 37, 52, - 12, -100, -100, -100, 51, -39, -100, -100, 39, 51, - -78, -6, -100, 35, 40, -100, 38, -100, -100, -100, - -100, -100, -100, -100, 56, -100, -100, -100, -100, -100, - -100, -100, -100, -100, -100, -72, 32, -100, -57, 32, - -100, -36, 45, -100, 122, 51, 123, 50, -100, -100, - -100, 32, 44, -100, 49, -39, 57, -22, -100, 32, - -19, -100, 52, -100, 59, 10, -100, 52, -100, -100, - -100, -100, 58, -14, 52, -100, 61, -100, -100, 62, - 39, -100, -100, -100, -100, 60, -100, -100, 63, 64, - 133, -100, 65, 67, -100, -100, -100, -100, 52, -100, - -100, -100 + -74, -67, 38, -69, 23, -113, -113, -44, -113, -41, + -69, 4, -26, -113, -113, -3, 1, 10, 52, -10, + -113, -113, -113, 45, 13, -113, -113, 77, -35, 15, + 64, 19, 17, 20, 15, -113, 85, -113, 25, -113, + 19, -113, -113, 15, -113, -113, 27, 47, -113, -113, + 26, 29, -113, -113, -113, -30, -113, 89, 61, -113, + -57, -47, -113, -113, -113, -113, 82, -113, -4, -68, + -113, -113, -113, -113, -113, -113, -113, -113, -113, -113, + -113, -113, -113, -113, -113, -113, -113, -113, -17, -113, + -113, -113, -113, -67, 35, 33, 46, 51, 46, -113, + -113, 69, 44, -73, 88, 82, -72, 56, -113, -113, + -113, 49, 93, 7, -113, -113, -113, 82, -113, 58, + 82, -76, -13, -113, 57, 59, -113, 60, -113, 68, + -113, -113, -113, -113, -113, -113, -75, -113, -113, -113, + -113, -113, -113, -113, -113, -113, -113, -63, -113, -113, + -113, -62, 82, 56, -113, -46, 65, -113, 141, 82, + 142, 63, -113, -113, -113, 56, 66, -38, -113, 56, + -16, -113, 93, -113, 76, -7, -113, 93, 81, -113, + -113, -113, 56, -113, -113, 72, -19, 93, -113, 83, + 58, -113, -113, -113, -113, 78, -113, -113, 80, 84, + 87, 62, 162, -113, 90, -113, -113, -113, -113, -113, + -113, 93, -113, -113 }; /* YYPGOTO[NTERM-NUM]. */ static const yytype_int16 yypgoto[] = { - -100, -100, -100, -100, -100, -100, -100, -100, 132, 127, - -100, 126, -100, -53, -100, -100, -100, -100, 75, -3, - -100, -100, -100, -100, -100, -100, -100, -100, -100, -100, - -100, -100, -100, -100, -100, -100, -100, -100, -100, -100, - -100, -100, -100, -100, -100, -100, -100, 0, -100, 3, - -100, -15, -100, 83, 14, -100, -99, -100, -100, -100, - -100, -100, -100, -100, 2, -100, -100 + -113, -113, -113, -113, -113, -113, -113, -113, 150, 136, + -113, 143, -113, -65, -113, -113, 86, -113, 91, 16, + -113, -113, -113, -113, -113, -113, 92, -113, -113, -113, + -113, -113, -113, -113, -113, -113, -113, -113, -113, -113, + -113, -113, -113, -113, -113, -113, -113, -113, -60, -113, + 22, -113, -5, 97, 2, 184, -113, -112, -113, -113, + -113, -113, -113, -113, -113, 21, -113, -113 }; /* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If @@ -869,71 +876,78 @@ static const yytype_int16 yypgoto[] = #define YYTABLE_NINF -13 static const yytype_int16 yytable[] = { - 143, 94, 35, 36, 37, 90, 17, 38, 92, 190, - 95, 102, 5, 160, 162, 109, 109, 161, 39, 165, - 99, 1, 103, 168, 137, 140, 40, 41, 100, 42, - 144, 145, 6, 4, 160, 146, 43, 136, 169, 139, - 3, 9, 44, 7, 45, 46, 91, 152, 163, 93, - 153, 151, -12, 10, 47, 160, 159, 48, 49, 170, - 35, 36, 37, 184, 96, 38, 182, 109, 188, 180, - 50, 51, 52, 181, 53, 191, 39, 54, 100, 55, - 97, 11, 12, 117, 40, 41, 14, 42, 85, 56, - 86, 138, 173, 141, 43, 186, 113, 15, 16, 201, - 44, 118, 45, 46, 20, 25, 26, 31, 34, 81, - 82, 32, 47, 89, 88, 48, 49, 109, 83, 84, - 105, 108, 113, 119, 100, 156, 142, 164, 50, 51, - 52, 165, 53, 166, 172, 174, 176, 55, 120, 167, - 121, 122, 171, 175, 177, 198, 105, 56, 122, 179, - 192, 193, 189, 195, 33, 79, 196, 80, 199, 197, - 200, 135, 187, 183, 107, 194, 185, 0, 0, 178 + 157, 107, 108, 5, 202, 29, 105, 172, 178, 102, + 115, 15, 1, 120, 120, 170, 112, 7, 179, 171, + 8, 116, 150, 154, 113, 158, 159, 3, 175, 170, + 160, 16, 180, 181, 47, 48, 49, 103, 6, 50, + 153, 173, 17, 151, 11, 170, 155, 106, 12, 183, + 51, -12, 165, 190, 13, 169, 109, 191, 52, 53, + 194, 54, 97, 19, 98, 198, 200, 20, 55, 192, + 120, 21, 110, 113, 56, 203, 57, 58, 196, 124, + 22, 23, 128, 25, 26, 28, 59, 182, 37, 60, + 61, 47, 48, 49, 186, 5, 50, 27, 129, 213, + 130, 32, 62, 63, 64, 38, 65, 51, 43, 66, + 44, 67, 128, 93, 94, 52, 53, 46, 54, 120, + 95, 68, 131, 96, 128, 55, 100, 199, 101, 119, + 130, 56, 124, 57, 58, 102, 97, 132, 156, 133, + 134, 152, 130, 59, 166, 3, 60, 61, 113, 174, + 175, 177, 131, 185, 187, 176, 188, 210, 189, 62, + 63, 64, 184, 65, 131, 134, 201, 132, 67, 133, + 134, 206, 204, 207, 211, 3, 91, 208, 68, 132, + 209, 133, 134, 212, 45, 205, 92, 3, 149, 147, + 118, 197, 193, 148, 14, 195 }; -static const yytype_int16 yycheck[] = +static const yytype_uint8 yycheck[] = { - 99, 54, 9, 10, 11, 53, 40, 14, 53, 23, - 6, 27, 7, 91, 20, 86, 86, 95, 25, 91, - 84, 86, 38, 95, 95, 95, 33, 34, 92, 36, - 18, 19, 27, 0, 91, 23, 43, 90, 95, 92, - 21, 70, 49, 38, 51, 52, 94, 86, 54, 94, - 89, 104, 86, 70, 61, 91, 109, 64, 65, 95, - 9, 10, 11, 162, 60, 14, 85, 86, 167, 91, - 77, 78, 79, 95, 81, 174, 25, 84, 92, 86, - 76, 70, 29, 31, 33, 34, 39, 36, 92, 96, - 94, 91, 145, 93, 43, 85, 86, 84, 8, 198, - 49, 49, 51, 52, 86, 24, 86, 91, 32, 86, - 67, 90, 61, 67, 37, 64, 65, 86, 94, 94, - 94, 94, 86, 71, 92, 86, 89, 92, 77, 78, - 79, 91, 81, 95, 12, 12, 92, 86, 86, 83, - 88, 89, 97, 93, 95, 12, 94, 96, 89, 92, - 89, 89, 94, 93, 22, 28, 93, 31, 93, 95, - 93, 86, 165, 160, 81, 180, 164, -1, -1, 155 + 112, 66, 6, 1, 23, 40, 53, 20, 83, 66, + 27, 7, 86, 86, 86, 91, 84, 86, 93, 95, + 89, 38, 95, 95, 92, 18, 19, 94, 91, 91, + 23, 27, 95, 95, 9, 10, 11, 94, 0, 14, + 105, 54, 38, 103, 21, 91, 106, 94, 92, 95, + 25, 86, 117, 91, 95, 120, 60, 95, 33, 34, + 172, 36, 92, 89, 94, 177, 178, 70, 43, 85, + 86, 70, 76, 92, 49, 187, 51, 52, 85, 86, + 70, 29, 31, 93, 39, 8, 61, 152, 24, 64, + 65, 9, 10, 11, 159, 93, 14, 84, 47, 211, + 49, 86, 77, 78, 79, 86, 81, 25, 91, 84, + 90, 86, 31, 86, 67, 33, 34, 32, 36, 86, + 94, 96, 71, 94, 31, 43, 37, 46, 67, 94, + 49, 49, 86, 51, 52, 66, 92, 86, 89, 88, + 89, 53, 49, 61, 86, 94, 64, 65, 92, 92, + 91, 83, 71, 12, 12, 95, 93, 95, 92, 77, + 78, 79, 97, 81, 71, 89, 94, 86, 86, 88, + 89, 93, 89, 93, 12, 94, 40, 93, 96, 86, + 93, 88, 89, 93, 34, 190, 43, 94, 102, 98, + 93, 175, 170, 101, 10, 174 }; /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing symbol of state STATE-NUM. */ static const yytype_uint8 yystos[] = { - 0, 86, 99, 21, 0, 7, 27, 38, 100, 70, - 70, 70, 29, 101, 39, 84, 8, 40, 102, 103, - 86, 104, 105, 106, 109, 24, 86, 107, 108, 110, - 142, 91, 90, 106, 32, 9, 10, 11, 14, 25, - 33, 34, 36, 43, 49, 51, 52, 61, 64, 65, - 77, 78, 79, 81, 84, 86, 96, 111, 112, 113, - 115, 118, 120, 121, 122, 123, 124, 125, 126, 127, - 128, 129, 130, 131, 132, 138, 139, 143, 144, 107, - 109, 86, 67, 94, 94, 92, 94, 114, 37, 67, - 53, 94, 53, 94, 111, 6, 60, 76, 140, 84, - 92, 133, 27, 38, 141, 94, 150, 151, 94, 86, - 145, 146, 147, 86, 116, 117, 119, 31, 49, 71, - 86, 88, 89, 151, 154, 155, 156, 157, 158, 159, - 160, 161, 162, 163, 164, 116, 111, 95, 145, 111, - 95, 145, 89, 154, 18, 19, 23, 134, 135, 136, - 137, 111, 86, 89, 152, 153, 86, 148, 149, 111, - 91, 95, 20, 54, 92, 91, 95, 83, 95, 95, - 95, 97, 12, 111, 12, 93, 92, 95, 152, 92, - 91, 95, 85, 147, 154, 162, 85, 117, 154, 94, - 23, 154, 89, 89, 149, 93, 93, 95, 12, 93, - 93, 154 + 0, 86, 99, 94, 151, 152, 0, 86, 89, 153, + 154, 21, 92, 95, 153, 7, 27, 38, 100, 89, + 70, 70, 70, 29, 101, 93, 39, 84, 8, 40, + 102, 103, 86, 104, 105, 106, 109, 24, 86, 107, + 108, 110, 143, 91, 90, 106, 32, 9, 10, 11, + 14, 25, 33, 34, 36, 43, 49, 51, 52, 61, + 64, 65, 77, 78, 79, 81, 84, 86, 96, 111, + 112, 113, 115, 118, 120, 121, 122, 123, 125, 126, + 127, 128, 129, 130, 131, 132, 133, 139, 140, 144, + 145, 107, 109, 86, 67, 94, 94, 92, 94, 114, + 37, 67, 66, 94, 124, 53, 94, 111, 6, 60, + 76, 141, 84, 92, 134, 27, 38, 142, 151, 94, + 86, 146, 147, 148, 86, 116, 117, 119, 31, 47, + 49, 71, 86, 88, 89, 152, 155, 156, 157, 158, + 159, 160, 161, 162, 163, 164, 165, 116, 124, 114, + 95, 146, 53, 111, 95, 146, 89, 155, 18, 19, + 23, 135, 136, 137, 138, 111, 86, 149, 150, 111, + 91, 95, 20, 54, 92, 91, 95, 83, 83, 93, + 95, 95, 111, 95, 97, 12, 111, 12, 93, 92, + 91, 95, 85, 148, 155, 163, 85, 117, 155, 46, + 155, 94, 23, 155, 89, 150, 93, 93, 93, 93, + 95, 12, 93, 155 }; #define yyerrok (yyerrstatus = 0) @@ -1748,29 +1762,29 @@ yyreduce: switch (yyn) { case 2: -#line 233 "parse.y" +#line 235 "parse.y" { checkundefined(); } break; case 4: -#line 240 "parse.y" +#line 242 "parse.y" { error_message("implicit tagging is not supported"); } break; case 5: -#line 242 "parse.y" +#line 244 "parse.y" { error_message("automatic tagging is not supported"); } break; case 7: -#line 247 "parse.y" +#line 249 "parse.y" { error_message("no extensibility options supported"); } break; case 17: -#line 268 "parse.y" +#line 270 "parse.y" { struct string_list *sl; for(sl = (yyvsp[(1) - (4)].sl); sl != NULL; sl = sl->next) { @@ -1782,7 +1796,7 @@ yyreduce: break; case 22: -#line 287 "parse.y" +#line 289 "parse.y" { (yyval.sl) = emalloc(sizeof(*(yyval.sl))); (yyval.sl)->string = (yyvsp[(1) - (3)].name); @@ -1791,7 +1805,7 @@ yyreduce: break; case 23: -#line 293 "parse.y" +#line 295 "parse.y" { (yyval.sl) = emalloc(sizeof(*(yyval.sl))); (yyval.sl)->string = (yyvsp[(1) - (1)].name); @@ -1800,7 +1814,7 @@ yyreduce: break; case 24: -#line 301 "parse.y" +#line 303 "parse.y" { Symbol *s = addsym ((yyvsp[(1) - (3)].name)); s->stype = Stype; @@ -1811,7 +1825,7 @@ yyreduce: break; case 42: -#line 332 "parse.y" +#line 334 "parse.y" { (yyval.type) = new_tag(ASN1_C_UNIV, UT_Boolean, TE_EXPLICIT, new_type(TBoolean)); @@ -1819,36 +1833,70 @@ yyreduce: break; case 43: -#line 339 "parse.y" +#line 341 "parse.y" { - if((yyvsp[(2) - (5)].value)->type != integervalue || - (yyvsp[(4) - (5)].value)->type != integervalue) - error_message("Non-integer value used in range"); - (yyval.range).min = (yyvsp[(2) - (5)].value)->u.integervalue; - (yyval.range).max = (yyvsp[(4) - (5)].value)->u.integervalue; + if((yyvsp[(2) - (5)].value)->type != integervalue) + error_message("Non-integer used in first part of range"); + if((yyvsp[(2) - (5)].value)->type != integervalue) + error_message("Non-integer in second part of range"); + (yyval.range) = ecalloc(1, sizeof(*(yyval.range))); + (yyval.range)->min = (yyvsp[(2) - (5)].value)->u.integervalue; + (yyval.range)->max = (yyvsp[(4) - (5)].value)->u.integervalue; } break; case 44: -#line 349 "parse.y" +#line 351 "parse.y" + { + if((yyvsp[(2) - (5)].value)->type != integervalue) + error_message("Non-integer in first part of range"); + (yyval.range) = ecalloc(1, sizeof(*(yyval.range))); + (yyval.range)->min = (yyvsp[(2) - (5)].value)->u.integervalue; + (yyval.range)->max = (yyvsp[(2) - (5)].value)->u.integervalue - 1; + } + break; + + case 45: +#line 359 "parse.y" + { + if((yyvsp[(4) - (5)].value)->type != integervalue) + error_message("Non-integer in second part of range"); + (yyval.range) = ecalloc(1, sizeof(*(yyval.range))); + (yyval.range)->min = (yyvsp[(4) - (5)].value)->u.integervalue + 2; + (yyval.range)->max = (yyvsp[(4) - (5)].value)->u.integervalue; + } + break; + + case 46: +#line 367 "parse.y" + { + if((yyvsp[(2) - (3)].value)->type != integervalue) + error_message("Non-integer used in limit"); + (yyval.range) = ecalloc(1, sizeof(*(yyval.range))); + (yyval.range)->min = (yyvsp[(2) - (3)].value)->u.integervalue; + (yyval.range)->max = (yyvsp[(2) - (3)].value)->u.integervalue; + } + break; + + case 47: +#line 378 "parse.y" { (yyval.type) = new_tag(ASN1_C_UNIV, UT_Integer, TE_EXPLICIT, new_type(TInteger)); } break; - case 45: -#line 354 "parse.y" + case 48: +#line 383 "parse.y" { (yyval.type) = new_type(TInteger); - (yyval.type)->range = emalloc(sizeof(*(yyval.type)->range)); - *((yyval.type)->range) = (yyvsp[(2) - (2)].range); + (yyval.type)->range = (yyvsp[(2) - (2)].range); (yyval.type) = new_tag(ASN1_C_UNIV, UT_Integer, TE_EXPLICIT, (yyval.type)); } break; - case 46: -#line 361 "parse.y" + case 49: +#line 389 "parse.y" { (yyval.type) = new_type(TInteger); (yyval.type)->members = (yyvsp[(3) - (4)].members); @@ -1856,8 +1904,8 @@ yyreduce: } break; - case 47: -#line 369 "parse.y" + case 50: +#line 397 "parse.y" { (yyval.members) = emalloc(sizeof(*(yyval.members))); ASN1_TAILQ_INIT((yyval.members)); @@ -1865,21 +1913,21 @@ yyreduce: } break; - case 48: -#line 375 "parse.y" + case 51: +#line 403 "parse.y" { ASN1_TAILQ_INSERT_TAIL((yyvsp[(1) - (3)].members), (yyvsp[(3) - (3)].member), members); (yyval.members) = (yyvsp[(1) - (3)].members); } break; - case 49: -#line 380 "parse.y" + case 52: +#line 408 "parse.y" { (yyval.members) = (yyvsp[(1) - (3)].members); } break; - case 50: -#line 384 "parse.y" + case 53: +#line 412 "parse.y" { (yyval.member) = emalloc(sizeof(*(yyval.member))); (yyval.member)->name = (yyvsp[(1) - (4)].name); @@ -1892,8 +1940,8 @@ yyreduce: } break; - case 51: -#line 397 "parse.y" + case 54: +#line 425 "parse.y" { (yyval.type) = new_type(TInteger); (yyval.type)->members = (yyvsp[(3) - (4)].members); @@ -1901,8 +1949,8 @@ yyreduce: } break; - case 53: -#line 408 "parse.y" + case 56: +#line 436 "parse.y" { (yyval.type) = new_type(TBitString); (yyval.type)->members = emalloc(sizeof(*(yyval.type)->members)); @@ -1911,8 +1959,8 @@ yyreduce: } break; - case 54: -#line 415 "parse.y" + case 57: +#line 443 "parse.y" { (yyval.type) = new_type(TBitString); (yyval.type)->members = (yyvsp[(4) - (5)].members); @@ -1920,32 +1968,44 @@ yyreduce: } break; - case 55: -#line 423 "parse.y" + case 58: +#line 451 "parse.y" { (yyval.type) = new_tag(ASN1_C_UNIV, UT_OID, TE_EXPLICIT, new_type(TOID)); } break; - case 56: -#line 429 "parse.y" + case 59: +#line 457 "parse.y" { - (yyval.type) = new_tag(ASN1_C_UNIV, UT_OctetString, - TE_EXPLICIT, new_type(TOctetString)); + Type *t = new_type(TOctetString); + t->range = (yyvsp[(3) - (3)].range); + (yyval.type) = new_tag(ASN1_C_UNIV, UT_OctetString, + TE_EXPLICIT, t); } break; - case 57: -#line 436 "parse.y" + case 60: +#line 466 "parse.y" { (yyval.type) = new_tag(ASN1_C_UNIV, UT_Null, TE_EXPLICIT, new_type(TNull)); } break; - case 58: -#line 443 "parse.y" + case 61: +#line 473 "parse.y" + { (yyval.range) = NULL; } + break; + + case 62: +#line 475 "parse.y" + { (yyval.range) = (yyvsp[(2) - (2)].range); } + break; + + case 63: +#line 480 "parse.y" { (yyval.type) = new_type(TSequence); (yyval.type)->members = (yyvsp[(3) - (4)].members); @@ -1953,8 +2013,8 @@ yyreduce: } break; - case 59: -#line 449 "parse.y" + case 64: +#line 486 "parse.y" { (yyval.type) = new_type(TSequence); (yyval.type)->members = NULL; @@ -1962,17 +2022,18 @@ yyreduce: } break; - case 60: -#line 457 "parse.y" + case 65: +#line 494 "parse.y" { (yyval.type) = new_type(TSequenceOf); - (yyval.type)->subtype = (yyvsp[(3) - (3)].type); + (yyval.type)->range = (yyvsp[(2) - (4)].range); + (yyval.type)->subtype = (yyvsp[(4) - (4)].type); (yyval.type) = new_tag(ASN1_C_UNIV, UT_Sequence, TE_EXPLICIT, (yyval.type)); } break; - case 61: -#line 465 "parse.y" + case 66: +#line 503 "parse.y" { (yyval.type) = new_type(TSet); (yyval.type)->members = (yyvsp[(3) - (4)].members); @@ -1980,8 +2041,8 @@ yyreduce: } break; - case 62: -#line 471 "parse.y" + case 67: +#line 509 "parse.y" { (yyval.type) = new_type(TSet); (yyval.type)->members = NULL; @@ -1989,8 +2050,8 @@ yyreduce: } break; - case 63: -#line 479 "parse.y" + case 68: +#line 517 "parse.y" { (yyval.type) = new_type(TSetOf); (yyval.type)->subtype = (yyvsp[(3) - (3)].type); @@ -1998,16 +2059,16 @@ yyreduce: } break; - case 64: -#line 487 "parse.y" + case 69: +#line 525 "parse.y" { (yyval.type) = new_type(TChoice); (yyval.type)->members = (yyvsp[(3) - (4)].members); } break; - case 67: -#line 498 "parse.y" + case 72: +#line 536 "parse.y" { Symbol *s = addsym((yyvsp[(1) - (1)].name)); (yyval.type) = new_type(TType); @@ -2018,24 +2079,24 @@ yyreduce: } break; - case 68: -#line 509 "parse.y" + case 73: +#line 547 "parse.y" { (yyval.type) = new_tag(ASN1_C_UNIV, UT_GeneralizedTime, TE_EXPLICIT, new_type(TGeneralizedTime)); } break; - case 69: -#line 514 "parse.y" + case 74: +#line 552 "parse.y" { (yyval.type) = new_tag(ASN1_C_UNIV, UT_UTCTime, TE_EXPLICIT, new_type(TUTCTime)); } break; - case 70: -#line 521 "parse.y" + case 75: +#line 559 "parse.y" { /* if (Constraint.type == contentConstrant) { assert(Constraint.u.constraint.type == octetstring|bitstring-w/o-NamedBitList); // remember to check type reference too @@ -2050,15 +2111,15 @@ yyreduce: } break; - case 71: -#line 537 "parse.y" + case 76: +#line 575 "parse.y" { (yyval.constraint_spec) = (yyvsp[(2) - (3)].constraint_spec); } break; - case 75: -#line 550 "parse.y" + case 80: +#line 588 "parse.y" { (yyval.constraint_spec) = new_constraint_spec(CT_CONTENTS); (yyval.constraint_spec)->u.content.type = (yyvsp[(2) - (2)].type); @@ -2066,8 +2127,8 @@ yyreduce: } break; - case 76: -#line 556 "parse.y" + case 81: +#line 594 "parse.y" { if ((yyvsp[(3) - (3)].value)->type != objectidentifiervalue) error_message("Non-OID used in ENCODED BY constraint"); @@ -2077,8 +2138,8 @@ yyreduce: } break; - case 77: -#line 564 "parse.y" + case 82: +#line 602 "parse.y" { if ((yyvsp[(5) - (5)].value)->type != objectidentifiervalue) error_message("Non-OID used in ENCODED BY constraint"); @@ -2088,15 +2149,15 @@ yyreduce: } break; - case 78: -#line 574 "parse.y" + case 83: +#line 612 "parse.y" { (yyval.constraint_spec) = new_constraint_spec(CT_USER); } break; - case 79: -#line 580 "parse.y" + case 84: +#line 618 "parse.y" { (yyval.type) = new_type(TTag); (yyval.type)->tag = (yyvsp[(1) - (3)].tag); @@ -2109,8 +2170,8 @@ yyreduce: } break; - case 80: -#line 593 "parse.y" + case 85: +#line 631 "parse.y" { (yyval.tag).tagclass = (yyvsp[(2) - (4)].constant); (yyval.tag).tagvalue = (yyvsp[(3) - (4)].constant); @@ -2118,57 +2179,57 @@ yyreduce: } break; - case 81: -#line 601 "parse.y" + case 86: +#line 639 "parse.y" { (yyval.constant) = ASN1_C_CONTEXT; } break; - case 82: -#line 605 "parse.y" + case 87: +#line 643 "parse.y" { (yyval.constant) = ASN1_C_UNIV; } break; - case 83: -#line 609 "parse.y" + case 88: +#line 647 "parse.y" { (yyval.constant) = ASN1_C_APPL; } break; - case 84: -#line 613 "parse.y" + case 89: +#line 651 "parse.y" { (yyval.constant) = ASN1_C_PRIVATE; } break; - case 85: -#line 619 "parse.y" + case 90: +#line 657 "parse.y" { (yyval.constant) = TE_EXPLICIT; } break; - case 86: -#line 623 "parse.y" + case 91: +#line 661 "parse.y" { (yyval.constant) = TE_EXPLICIT; } break; - case 87: -#line 627 "parse.y" + case 92: +#line 665 "parse.y" { (yyval.constant) = TE_IMPLICIT; } break; - case 88: -#line 634 "parse.y" + case 93: +#line 672 "parse.y" { Symbol *s; s = addsym ((yyvsp[(1) - (4)].name)); @@ -2179,64 +2240,64 @@ yyreduce: } break; - case 90: -#line 648 "parse.y" + case 95: +#line 686 "parse.y" { (yyval.type) = new_tag(ASN1_C_UNIV, UT_GeneralString, TE_EXPLICIT, new_type(TGeneralString)); } break; - case 91: -#line 653 "parse.y" + case 96: +#line 691 "parse.y" { (yyval.type) = new_tag(ASN1_C_UNIV, UT_UTF8String, TE_EXPLICIT, new_type(TUTF8String)); } break; - case 92: -#line 658 "parse.y" + case 97: +#line 696 "parse.y" { (yyval.type) = new_tag(ASN1_C_UNIV, UT_PrintableString, TE_EXPLICIT, new_type(TPrintableString)); } break; - case 93: -#line 663 "parse.y" + case 98: +#line 701 "parse.y" { (yyval.type) = new_tag(ASN1_C_UNIV, UT_VisibleString, TE_EXPLICIT, new_type(TVisibleString)); } break; - case 94: -#line 668 "parse.y" + case 99: +#line 706 "parse.y" { (yyval.type) = new_tag(ASN1_C_UNIV, UT_IA5String, TE_EXPLICIT, new_type(TIA5String)); } break; - case 95: -#line 673 "parse.y" + case 100: +#line 711 "parse.y" { (yyval.type) = new_tag(ASN1_C_UNIV, UT_BMPString, TE_EXPLICIT, new_type(TBMPString)); } break; - case 96: -#line 678 "parse.y" + case 101: +#line 716 "parse.y" { (yyval.type) = new_tag(ASN1_C_UNIV, UT_UniversalString, TE_EXPLICIT, new_type(TUniversalString)); } break; - case 97: -#line 686 "parse.y" + case 102: +#line 724 "parse.y" { (yyval.members) = emalloc(sizeof(*(yyval.members))); ASN1_TAILQ_INIT((yyval.members)); @@ -2244,16 +2305,16 @@ yyreduce: } break; - case 98: -#line 692 "parse.y" + case 103: +#line 730 "parse.y" { ASN1_TAILQ_INSERT_TAIL((yyvsp[(1) - (3)].members), (yyvsp[(3) - (3)].member), members); (yyval.members) = (yyvsp[(1) - (3)].members); } break; - case 99: -#line 697 "parse.y" + case 104: +#line 735 "parse.y" { struct member *m = ecalloc(1, sizeof(*m)); m->name = estrdup("..."); @@ -2264,8 +2325,8 @@ yyreduce: } break; - case 100: -#line 708 "parse.y" + case 105: +#line 746 "parse.y" { (yyval.member) = emalloc(sizeof(*(yyval.member))); (yyval.member)->name = (yyvsp[(1) - (2)].name); @@ -2276,8 +2337,8 @@ yyreduce: } break; - case 101: -#line 719 "parse.y" + case 106: +#line 757 "parse.y" { (yyval.member) = (yyvsp[(1) - (1)].member); (yyval.member)->optional = 0; @@ -2285,8 +2346,8 @@ yyreduce: } break; - case 102: -#line 725 "parse.y" + case 107: +#line 763 "parse.y" { (yyval.member) = (yyvsp[(1) - (2)].member); (yyval.member)->optional = 1; @@ -2294,8 +2355,8 @@ yyreduce: } break; - case 103: -#line 731 "parse.y" + case 108: +#line 769 "parse.y" { (yyval.member) = (yyvsp[(1) - (3)].member); (yyval.member)->optional = 0; @@ -2303,8 +2364,8 @@ yyreduce: } break; - case 104: -#line 739 "parse.y" + case 109: +#line 777 "parse.y" { (yyval.members) = emalloc(sizeof(*(yyval.members))); ASN1_TAILQ_INIT((yyval.members)); @@ -2312,16 +2373,16 @@ yyreduce: } break; - case 105: -#line 745 "parse.y" + case 110: +#line 783 "parse.y" { ASN1_TAILQ_INSERT_TAIL((yyvsp[(1) - (3)].members), (yyvsp[(3) - (3)].member), members); (yyval.members) = (yyvsp[(1) - (3)].members); } break; - case 106: -#line 752 "parse.y" + case 111: +#line 790 "parse.y" { (yyval.member) = emalloc(sizeof(*(yyval.member))); (yyval.member)->name = (yyvsp[(1) - (4)].name); @@ -2334,27 +2395,27 @@ yyreduce: } break; - case 108: -#line 765 "parse.y" + case 113: +#line 803 "parse.y" { (yyval.objid) = NULL; } break; - case 109: -#line 769 "parse.y" + case 114: +#line 807 "parse.y" { (yyval.objid) = (yyvsp[(2) - (3)].objid); } break; - case 110: -#line 775 "parse.y" + case 115: +#line 813 "parse.y" { (yyval.objid) = NULL; } break; - case 111: -#line 779 "parse.y" + case 116: +#line 817 "parse.y" { if ((yyvsp[(2) - (2)].objid)) { (yyval.objid) = (yyvsp[(2) - (2)].objid); @@ -2365,15 +2426,15 @@ yyreduce: } break; - case 112: -#line 790 "parse.y" + case 117: +#line 828 "parse.y" { (yyval.objid) = new_objid((yyvsp[(1) - (4)].name), (yyvsp[(3) - (4)].constant)); } break; - case 113: -#line 794 "parse.y" + case 118: +#line 832 "parse.y" { Symbol *s = addsym((yyvsp[(1) - (1)].name)); if(s->stype != SValue || @@ -2386,15 +2447,15 @@ yyreduce: } break; - case 114: -#line 805 "parse.y" + case 119: +#line 843 "parse.y" { (yyval.objid) = new_objid(NULL, (yyvsp[(1) - (1)].constant)); } break; - case 124: -#line 828 "parse.y" + case 129: +#line 866 "parse.y" { Symbol *s = addsym((yyvsp[(1) - (1)].name)); if(s->stype != SValue) @@ -2405,8 +2466,8 @@ yyreduce: } break; - case 125: -#line 839 "parse.y" + case 130: +#line 877 "parse.y" { (yyval.value) = emalloc(sizeof(*(yyval.value))); (yyval.value)->type = stringvalue; @@ -2414,8 +2475,8 @@ yyreduce: } break; - case 126: -#line 847 "parse.y" + case 131: +#line 885 "parse.y" { (yyval.value) = emalloc(sizeof(*(yyval.value))); (yyval.value)->type = booleanvalue; @@ -2423,8 +2484,8 @@ yyreduce: } break; - case 127: -#line 853 "parse.y" + case 132: +#line 891 "parse.y" { (yyval.value) = emalloc(sizeof(*(yyval.value))); (yyval.value)->type = booleanvalue; @@ -2432,8 +2493,8 @@ yyreduce: } break; - case 128: -#line 861 "parse.y" + case 133: +#line 899 "parse.y" { (yyval.value) = emalloc(sizeof(*(yyval.value))); (yyval.value)->type = integervalue; @@ -2441,14 +2502,14 @@ yyreduce: } break; - case 130: -#line 872 "parse.y" + case 135: +#line 910 "parse.y" { } break; - case 131: -#line 877 "parse.y" + case 136: +#line 915 "parse.y" { (yyval.value) = emalloc(sizeof(*(yyval.value))); (yyval.value)->type = objectidentifiervalue; @@ -2458,7 +2519,7 @@ yyreduce: /* Line 1267 of yacc.c. */ -#line 2464 "parse.c" +#line 2523 "parse.c" default: break; } YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc); @@ -2672,7 +2733,7 @@ yyreturn: } -#line 884 "parse.y" +#line 922 "parse.y" void diff --git a/source4/heimdal/lib/asn1/parse.h b/source4/heimdal/lib/asn1/parse.h index a0c26d50f1..5e73094f9e 100644 --- a/source4/heimdal/lib/asn1/parse.h +++ b/source4/heimdal/lib/asn1/parse.h @@ -16,7 +16,9 @@ GNU General Public License for more details. You should have received a copy of the GNU General Public License - along with this program; if not, see <http://www.gnu.org/licenses/>. */ + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. */ /* As a special exception, you may create a larger work that contains part or all of the Bison parser skeleton and distribute that work @@ -224,7 +226,7 @@ typedef union YYSTYPE { int constant; struct value *value; - struct range range; + struct range *range; char *name; Type *type; Member *member; diff --git a/source4/heimdal/lib/asn1/rfc2459.asn1 b/source4/heimdal/lib/asn1/rfc2459.asn1 index 71f197eba7..0ec3b695eb 100644 --- a/source4/heimdal/lib/asn1/rfc2459.asn1 +++ b/source4/heimdal/lib/asn1/rfc2459.asn1 @@ -169,7 +169,7 @@ Extension ::= SEQUENCE { extnValue OCTET STRING } -Extensions ::= SEQUENCE OF Extension -- SIZE (1..MAX) +Extensions ::= SEQUENCE SIZE (1..MAX) OF Extension TBSCertificate ::= SEQUENCE { version [0] Version OPTIONAL, -- EXPLICIT nnn DEFAULT 1, @@ -232,7 +232,7 @@ GeneralName ::= CHOICE { registeredID [8] IMPLICIT OBJECT IDENTIFIER } -GeneralNames ::= SEQUENCE -- SIZE (1..MAX) -- OF GeneralName +GeneralNames ::= SEQUENCE SIZE (1..MAX) OF GeneralName id-x509-ce-keyUsage OBJECT IDENTIFIER ::= { id-x509-ce 15 } @@ -320,7 +320,7 @@ DistributionPointReasonFlags ::= BIT STRING { } DistributionPointName ::= CHOICE { - fullName [0] IMPLICIT -- GeneralNames -- SEQUENCE -- SIZE (1..MAX) -- OF GeneralName, + fullName [0] IMPLICIT -- GeneralNames -- SEQUENCE SIZE (1..MAX) OF GeneralName, nameRelativeToCRLIssuer [1] RelativeDistinguishedName } @@ -330,7 +330,7 @@ DistributionPoint ::= SEQUENCE { cRLIssuer [2] IMPLICIT heim_any -- GeneralNames -- OPTIONAL } -CRLDistributionPoints ::= SEQUENCE -- SIZE (1..MAX) -- OF DistributionPoint +CRLDistributionPoints ::= SEQUENCE SIZE (1..MAX) OF DistributionPoint -- rfc3279 @@ -449,11 +449,20 @@ id-pkix-kp-emailProtection OBJECT IDENTIFIER ::= { id-pkix-kp 4 } id-pkix-kp-timeStamping OBJECT IDENTIFIER ::= { id-pkix-kp 8 } id-pkix-kp-OCSPSigning OBJECT IDENTIFIER ::= { id-pkix-kp 9 } --- RFC 3820 Proxy Certificate Profile - id-pkix-pe OBJECT IDENTIFIER ::= { id-pkix 1 } -id-pe-proxyCertInfo OBJECT IDENTIFIER ::= { id-pkix-pe 14 } +id-pkix-pe-authorityInfoAccess OBJECT IDENTIFIER ::= { id-pkix-pe 1 } + +AccessDescription ::= SEQUENCE { + accessMethod OBJECT IDENTIFIER, + accessLocation GeneralName +} + +AuthorityInfoAccessSyntax ::= SEQUENCE SIZE (1..MAX) OF AccessDescription + +-- RFC 3820 Proxy Certificate Profile + +id-pkix-pe-proxyCertInfo OBJECT IDENTIFIER ::= { id-pkix-pe 14 } id-pkix-ppl OBJECT IDENTIFIER ::= { id-pkix 21 } diff --git a/source4/heimdal/lib/asn1/test.asn1 b/source4/heimdal/lib/asn1/test.asn1 index 98b507a4da..b2f58a20c2 100644 --- a/source4/heimdal/lib/asn1/test.asn1 +++ b/source4/heimdal/lib/asn1/test.asn1 @@ -1,4 +1,4 @@ --- $Id: test.asn1 18013 2006-09-05 14:00:44Z lha $ -- +-- $Id: test.asn1 21455 2007-07-10 12:51:19Z lha $ -- TEST DEFINITIONS ::= @@ -85,4 +85,11 @@ TESTUSERCONSTRAINED ::= OCTET STRING (CONSTRAINED BY { -- meh -- }) TESTSeqOf ::= SEQUENCE OF TESTInteger +TESTSeqSizeOf1 ::= SEQUENCE SIZE (2) OF TESTInteger +TESTSeqSizeOf2 ::= SEQUENCE SIZE (1..2) OF TESTInteger +TESTSeqSizeOf3 ::= SEQUENCE SIZE (1..MAX) OF TESTInteger +TESTSeqSizeOf4 ::= SEQUENCE SIZE (MIN..2) OF TESTInteger + +TESTOSSize1 ::= OCTET STRING SIZE (1..2) + END diff --git a/source4/heimdal/lib/asn1/timegm.c b/source4/heimdal/lib/asn1/timegm.c index a6776458cf..33b9684a5d 100644 --- a/source4/heimdal/lib/asn1/timegm.c +++ b/source4/heimdal/lib/asn1/timegm.c @@ -33,7 +33,7 @@ #include "der_locl.h" -RCSID("$Id: timegm.c 18607 2006-10-19 16:19:32Z lha $"); +RCSID("$Id: timegm.c 21366 2007-06-27 10:06:22Z lha $"); static int is_leap(unsigned y) @@ -43,8 +43,8 @@ is_leap(unsigned y) } /* - * This is a simplifed version of _der_timegm that doesn't accept out - * of bound values that timegm(3) normally accepts but those are not + * This is a simplifed version of timegm(3) that doesn't accept out of + * bound values that timegm(3) normally accepts but those are not * valid in asn1 encodings. */ |