summaryrefslogtreecommitdiff
path: root/source4/heimdal/lib/asn1
diff options
context:
space:
mode:
Diffstat (limited to 'source4/heimdal/lib/asn1')
-rw-r--r--source4/heimdal/lib/asn1/asn1_err.et5
-rw-r--r--source4/heimdal/lib/asn1/der_get.c25
-rw-r--r--source4/heimdal/lib/asn1/gen.c3
-rw-r--r--source4/heimdal/lib/asn1/gen_decode.c72
-rw-r--r--source4/heimdal/lib/asn1/gen_encode.c19
-rw-r--r--source4/heimdal/lib/asn1/gen_length.c13
-rw-r--r--source4/heimdal/lib/asn1/k5.asn16
-rw-r--r--source4/heimdal/lib/asn1/lex.c33
-rw-r--r--source4/heimdal/lib/asn1/parse.c795
-rw-r--r--source4/heimdal/lib/asn1/parse.h6
-rw-r--r--source4/heimdal/lib/asn1/rfc2459.asn123
-rw-r--r--source4/heimdal/lib/asn1/test.asn19
-rw-r--r--source4/heimdal/lib/asn1/timegm.c6
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.
*/