aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLev Walkin <vlm@lionet.info>2005-11-26 11:21:55 +0000
committerLev Walkin <vlm@lionet.info>2005-11-26 11:21:55 +0000
commit708530582f5ba965fb596c3e189eec23c52337d9 (patch)
treef73a4ca068ebfd9fee5675abd978f192ada3d8b1
parent04affbfa31837215deb800681279e4db30795deb (diff)
upgrade
-rw-r--r--libasn1parser/asn1p_expr.h3
-rw-r--r--libasn1parser/asn1p_y.c531
-rw-r--r--libasn1parser/asn1p_y.y7
-rw-r--r--libasn1parser/asn1parser.c16
-rw-r--r--libasn1parser/asn1parser.h10
5 files changed, 271 insertions, 296 deletions
diff --git a/libasn1parser/asn1p_expr.h b/libasn1parser/asn1p_expr.h
index 42a2a116..c44e1032 100644
--- a/libasn1parser/asn1p_expr.h
+++ b/libasn1parser/asn1p_expr.h
@@ -176,7 +176,7 @@ typedef struct asn1p_expr_s {
enum asn1p_expr_marker_e {
EM_NOMARK,
EM_INDIRECT = 0x01, /* 00001 Represent as pointer */
- EM_OMITABLE = 0x03, /* 00011 May be absent in encoding */
+ EM_OMITABLE = 0x02, /* 00010 May be absent in encoding */
EM_OPTIONAL = 0x07, /* 00111 Optional member */
EM_DEFAULT = 0x0F, /* 01111 default_value */
EM_UNRECURSE = 0x10, /* 10000 Use safe naming */
@@ -225,6 +225,7 @@ typedef struct asn1p_expr_s {
*/
int _anonymous_type; /* This type is unnamed */
int _type_unique_index; /* A per top-level-type unique index */
+ int _type_referenced; /* This type is referenced from another place */
/*
* Opaque data may be attached to this structure,
diff --git a/libasn1parser/asn1p_y.c b/libasn1parser/asn1p_y.c
index 419cae45..058a7c84 100644
--- a/libasn1parser/asn1p_y.c
+++ b/libasn1parser/asn1p_y.c
@@ -386,31 +386,31 @@ static const short yyrline[] = { 0,
320, 326, 332, 348, 373, 375, 378, 382, 387, 394,
402, 407, 411, 420, 422, 430, 434, 442, 446, 449,
452, 456, 476, 478, 486, 490, 522, 526, 535, 542,
- 555, 562, 564, 576, 589, 600, 605, 611, 617, 619,
- 622, 633, 639, 645, 652, 658, 666, 670, 673, 680,
- 686, 692, 699, 705, 714, 716, 725, 733, 747, 759,
- 765, 781, 790, 800, 810, 815, 822, 829, 839, 845,
- 851, 855, 878, 880, 882, 888, 894, 902, 908, 915,
- 920, 926, 932, 938, 941, 947, 957, 959, 962, 970,
- 976, 985, 991, 1008, 1010, 1015, 1019, 1024, 1029, 1035,
- 1039, 1050, 1059, 1068, 1079, 1101, 1108, 1127, 1131, 1137,
- 1143, 1149, 1159, 1169, 1175, 1189, 1213, 1220, 1234, 1243,
- 1253, 1263, 1273, 1281, 1302, 1311, 1320, 1321, 1323, 1330,
- 1342, 1352, 1360, 1360, 1365, 1370, 1375, 1380, 1384, 1388,
- 1391, 1394, 1399, 1411, 1428, 1433, 1438, 1471, 1481, 1495,
- 1497, 1498, 1499, 1500, 1501, 1502, 1503, 1504, 1505, 1506,
- 1507, 1508, 1514, 1516, 1517, 1520, 1527, 1539, 1541, 1545,
- 1549, 1550, 1551, 1552, 1553, 1557, 1558, 1559, 1560, 1564,
- 1565, 1572, 1572, 1573, 1573, 1574, 1576, 1578, 1583, 1587,
- 1596, 1600, 1605, 1609, 1615, 1625, 1629, 1632, 1635, 1638,
- 1643, 1652, 1660, 1666, 1672, 1679, 1687, 1695, 1704, 1707,
- 1710, 1711, 1721, 1723, 1724, 1725, 1728, 1732, 1737, 1743,
- 1748, 1751, 1754, 1767, 1781, 1785, 1790, 1794, 1799, 1806,
- 1819, 1821, 1824, 1828, 1831, 1836, 1840, 1848, 1863, 1869,
- 1876, 1889, 1901, 1916, 1920, 1937, 1942, 1945, 1950, 1972,
- 1977, 1982, 1988, 1994, 2002, 2010, 2018, 2025, 2035, 2040,
- 2070, 2072, 2075, 2082, 2088, 2090, 2091, 2092, 2095, 2097,
- 2098, 2101, 2106, 2113, 2120, 2122, 2127
+ 555, 562, 564, 576, 588, 599, 604, 610, 616, 618,
+ 621, 632, 638, 644, 651, 657, 665, 669, 672, 679,
+ 685, 691, 698, 704, 713, 715, 724, 732, 746, 758,
+ 764, 780, 789, 799, 809, 814, 821, 828, 838, 844,
+ 850, 854, 877, 879, 881, 887, 893, 901, 907, 914,
+ 919, 925, 931, 937, 940, 946, 956, 958, 961, 969,
+ 975, 984, 990, 1007, 1009, 1014, 1018, 1023, 1028, 1034,
+ 1038, 1049, 1058, 1067, 1078, 1100, 1107, 1126, 1130, 1136,
+ 1142, 1148, 1158, 1168, 1174, 1188, 1212, 1219, 1233, 1242,
+ 1252, 1262, 1272, 1280, 1301, 1310, 1319, 1320, 1322, 1329,
+ 1341, 1351, 1359, 1359, 1364, 1369, 1374, 1379, 1383, 1387,
+ 1390, 1393, 1398, 1410, 1427, 1432, 1437, 1470, 1480, 1494,
+ 1496, 1497, 1498, 1499, 1500, 1501, 1502, 1503, 1504, 1505,
+ 1506, 1507, 1513, 1515, 1516, 1519, 1526, 1538, 1540, 1544,
+ 1548, 1549, 1550, 1551, 1552, 1556, 1557, 1558, 1559, 1563,
+ 1564, 1571, 1571, 1572, 1572, 1573, 1575, 1577, 1582, 1586,
+ 1595, 1599, 1604, 1608, 1614, 1624, 1628, 1631, 1634, 1637,
+ 1642, 1651, 1659, 1665, 1671, 1678, 1686, 1694, 1703, 1706,
+ 1709, 1710, 1720, 1722, 1723, 1724, 1727, 1731, 1736, 1742,
+ 1747, 1750, 1753, 1766, 1780, 1784, 1789, 1793, 1798, 1805,
+ 1818, 1820, 1823, 1827, 1830, 1835, 1839, 1847, 1862, 1868,
+ 1875, 1888, 1900, 1915, 1919, 1936, 1941, 1944, 1949, 1971,
+ 1976, 1981, 1987, 1993, 2001, 2009, 2017, 2024, 2034, 2039,
+ 2069, 2071, 2074, 2081, 2087, 2089, 2090, 2091, 2094, 2096,
+ 2097, 2100, 2105, 2112, 2119, 2121, 2126
};
#endif
@@ -1624,13 +1624,12 @@ case 34:
#line 576 "asn1p_y.y"
{
return yyerror(
- "Attempt to redefine a standard basic type, "
- "use -ftypesXY to switch back "
- "to older version of ASN.1 standard");
+ "Attempt to redefine a standard basic string type, "
+ "please comment out or remove this type redefinition.");
;
break;}
case 35:
-#line 590 "asn1p_y.y"
+#line 589 "asn1p_y.y"
{
if(!saved_aid && 0)
return yyerror("Unterminated IMPORTS FROM, "
@@ -1640,13 +1639,13 @@ case 35:
;
break;}
case 36:
-#line 600 "asn1p_y.y"
+#line 599 "asn1p_y.y"
{
return yyerror("Empty IMPORTS list");
;
break;}
case 37:
-#line 606 "asn1p_y.y"
+#line 605 "asn1p_y.y"
{
yyval.a_module = asn1p_module_new();
checkmem(yyval.a_module);
@@ -1654,22 +1653,22 @@ case 37:
;
break;}
case 38:
-#line 611 "asn1p_y.y"
+#line 610 "asn1p_y.y"
{
yyval.a_module = yyvsp[-1].a_module;
TQ_ADD(&(yyval.a_module->imports), yyvsp[0].a_xports, xp_next);
;
break;}
case 39:
-#line 618 "asn1p_y.y"
+#line 617 "asn1p_y.y"
{ memset(&yyval.a_aid, 0, sizeof(yyval.a_aid)); ;
break;}
case 40:
-#line 619 "asn1p_y.y"
+#line 618 "asn1p_y.y"
{ yyval.a_aid.oid = yyvsp[0].a_oid; ;
break;}
case 41:
-#line 623 "asn1p_y.y"
+#line 622 "asn1p_y.y"
{
yyval.a_xports = yyvsp[-3].a_xports;
yyval.a_xports->fromModuleName = yyvsp[-1].tv_str;
@@ -1680,7 +1679,7 @@ case 41:
;
break;}
case 42:
-#line 634 "asn1p_y.y"
+#line 633 "asn1p_y.y"
{
yyval.a_xports = asn1p_xports_new();
checkmem(yyval.a_xports);
@@ -1688,14 +1687,14 @@ case 42:
;
break;}
case 43:
-#line 639 "asn1p_y.y"
+#line 638 "asn1p_y.y"
{
yyval.a_xports = yyvsp[-2].a_xports;
TQ_ADD(&(yyval.a_xports->members), yyvsp[0].a_expr, next);
;
break;}
case 44:
-#line 646 "asn1p_y.y"
+#line 645 "asn1p_y.y"
{
yyval.a_expr = asn1p_expr_new(yylineno);
checkmem(yyval.a_expr);
@@ -1704,7 +1703,7 @@ case 44:
;
break;}
case 45:
-#line 652 "asn1p_y.y"
+#line 651 "asn1p_y.y"
{ /* Completely equivalent to above */
yyval.a_expr = asn1p_expr_new(yylineno);
checkmem(yyval.a_expr);
@@ -1713,7 +1712,7 @@ case 45:
;
break;}
case 46:
-#line 658 "asn1p_y.y"
+#line 657 "asn1p_y.y"
{
yyval.a_expr = asn1p_expr_new(yylineno);
checkmem(yyval.a_expr);
@@ -1722,19 +1721,19 @@ case 46:
;
break;}
case 47:
-#line 667 "asn1p_y.y"
+#line 666 "asn1p_y.y"
{
yyval.a_xports = yyvsp[-1].a_xports;
;
break;}
case 48:
-#line 670 "asn1p_y.y"
+#line 669 "asn1p_y.y"
{
yyval.a_xports = 0;
;
break;}
case 49:
-#line 673 "asn1p_y.y"
+#line 672 "asn1p_y.y"
{
/* Empty EXPORTS clause effectively prohibits export. */
yyval.a_xports = asn1p_xports_new();
@@ -1742,7 +1741,7 @@ case 49:
;
break;}
case 50:
-#line 681 "asn1p_y.y"
+#line 680 "asn1p_y.y"
{
yyval.a_xports = asn1p_xports_new();
assert(yyval.a_xports);
@@ -1750,14 +1749,14 @@ case 50:
;
break;}
case 51:
-#line 686 "asn1p_y.y"
+#line 685 "asn1p_y.y"
{
yyval.a_xports = yyvsp[-2].a_xports;
TQ_ADD(&(yyval.a_xports->members), yyvsp[0].a_expr, next);
;
break;}
case 52:
-#line 693 "asn1p_y.y"
+#line 692 "asn1p_y.y"
{
yyval.a_expr = asn1p_expr_new(yylineno);
checkmem(yyval.a_expr);
@@ -1766,7 +1765,7 @@ case 52:
;
break;}
case 53:
-#line 699 "asn1p_y.y"
+#line 698 "asn1p_y.y"
{
yyval.a_expr = asn1p_expr_new(yylineno);
checkmem(yyval.a_expr);
@@ -1775,7 +1774,7 @@ case 53:
;
break;}
case 54:
-#line 705 "asn1p_y.y"
+#line 704 "asn1p_y.y"
{
yyval.a_expr = asn1p_expr_new(yylineno);
checkmem(yyval.a_expr);
@@ -1784,11 +1783,11 @@ case 54:
;
break;}
case 55:
-#line 716 "asn1p_y.y"
+#line 715 "asn1p_y.y"
{ asn1p_lexer_hack_push_opaque_state(); ;
break;}
case 56:
-#line 716 "asn1p_y.y"
+#line 715 "asn1p_y.y"
{
yyval.a_expr = yyvsp[-4].a_expr;
assert(yyval.a_expr->Identifier == 0);
@@ -1798,7 +1797,7 @@ case 56:
;
break;}
case 57:
-#line 726 "asn1p_y.y"
+#line 725 "asn1p_y.y"
{
yyval.a_expr = asn1p_expr_new(yylineno);
checkmem(yyval.a_expr);
@@ -1808,7 +1807,7 @@ case 57:
;
break;}
case 58:
-#line 733 "asn1p_y.y"
+#line 732 "asn1p_y.y"
{
yyval.a_expr = asn1p_expr_new(yylineno);
checkmem(yyval.a_expr);
@@ -1817,7 +1816,7 @@ case 58:
;
break;}
case 59:
-#line 751 "asn1p_y.y"
+#line 750 "asn1p_y.y"
{
yyval.a_expr = asn1p_expr_new(yylineno);
checkmem(yyval.a_expr);
@@ -1828,7 +1827,7 @@ case 59:
;
break;}
case 60:
-#line 759 "asn1p_y.y"
+#line 758 "asn1p_y.y"
{
yyval.a_expr = yyvsp[0].a_expr;
yyval.a_expr->Identifier = yyvsp[-2].tv_str;
@@ -1837,7 +1836,7 @@ case 60:
;
break;}
case 61:
-#line 765 "asn1p_y.y"
+#line 764 "asn1p_y.y"
{
yyval.a_expr = yyvsp[0].a_expr;
yyval.a_expr->Identifier = yyvsp[-2].tv_str;
@@ -1846,7 +1845,7 @@ case 61:
;
break;}
case 62:
-#line 781 "asn1p_y.y"
+#line 780 "asn1p_y.y"
{
yyval.a_expr = yyvsp[0].a_expr;
assert(yyval.a_expr->Identifier == 0);
@@ -1856,7 +1855,7 @@ case 62:
;
break;}
case 63:
-#line 791 "asn1p_y.y"
+#line 790 "asn1p_y.y"
{
int ret;
yyval.a_plist = asn1p_paramlist_new(yylineno);
@@ -1868,7 +1867,7 @@ case 63:
;
break;}
case 64:
-#line 800 "asn1p_y.y"
+#line 799 "asn1p_y.y"
{
int ret;
yyval.a_plist = yyvsp[-2].a_plist;
@@ -1879,14 +1878,14 @@ case 64:
;
break;}
case 65:
-#line 811 "asn1p_y.y"
+#line 810 "asn1p_y.y"
{
yyval.a_parg.governor = NULL;
yyval.a_parg.argument = yyvsp[0].tv_str;
;
break;}
case 66:
-#line 815 "asn1p_y.y"
+#line 814 "asn1p_y.y"
{
int ret;
yyval.a_parg.governor = asn1p_ref_new(yylineno);
@@ -1896,7 +1895,7 @@ case 66:
;
break;}
case 67:
-#line 822 "asn1p_y.y"
+#line 821 "asn1p_y.y"
{
int ret;
yyval.a_parg.governor = asn1p_ref_new(yylineno);
@@ -1906,7 +1905,7 @@ case 67:
;
break;}
case 68:
-#line 829 "asn1p_y.y"
+#line 828 "asn1p_y.y"
{
int ret;
yyval.a_parg.governor = asn1p_ref_new(yylineno);
@@ -1917,7 +1916,7 @@ case 68:
;
break;}
case 69:
-#line 840 "asn1p_y.y"
+#line 839 "asn1p_y.y"
{
yyval.a_expr = asn1p_expr_new(yylineno);
checkmem(yyval.a_expr);
@@ -1925,20 +1924,20 @@ case 69:
;
break;}
case 70:
-#line 845 "asn1p_y.y"
+#line 844 "asn1p_y.y"
{
yyval.a_expr = yyvsp[-2].a_expr;
asn1p_expr_add(yyval.a_expr, yyvsp[0].a_expr);
;
break;}
case 71:
-#line 852 "asn1p_y.y"
+#line 851 "asn1p_y.y"
{
yyval.a_expr = yyvsp[0].a_expr;
;
break;}
case 72:
-#line 855 "asn1p_y.y"
+#line 854 "asn1p_y.y"
{
yyval.a_expr = asn1p_expr_new(yylineno);
checkmem(yyval.a_expr);
@@ -1948,15 +1947,15 @@ case 72:
;
break;}
case 73:
-#line 879 "asn1p_y.y"
+#line 878 "asn1p_y.y"
{ yyval.a_expr = asn1p_expr_new(yylineno); ;
break;}
case 74:
-#line 880 "asn1p_y.y"
+#line 879 "asn1p_y.y"
{ yyval.a_expr = yyvsp[0].a_expr; ;
break;}
case 75:
-#line 883 "asn1p_y.y"
+#line 882 "asn1p_y.y"
{
yyval.a_expr = asn1p_expr_new(yylineno);
checkmem(yyval.a_expr);
@@ -1964,14 +1963,14 @@ case 75:
;
break;}
case 76:
-#line 888 "asn1p_y.y"
+#line 887 "asn1p_y.y"
{
yyval.a_expr = yyvsp[-2].a_expr;
asn1p_expr_add(yyval.a_expr, yyvsp[0].a_expr);
;
break;}
case 77:
-#line 895 "asn1p_y.y"
+#line 894 "asn1p_y.y"
{
yyval.a_expr = yyvsp[-1].a_expr;
assert(yyval.a_expr->Identifier == 0);
@@ -1981,7 +1980,7 @@ case 77:
;
break;}
case 78:
-#line 902 "asn1p_y.y"
+#line 901 "asn1p_y.y"
{
yyval.a_expr = yyvsp[-1].a_expr;
yyvsp[0].a_marker.flags |= yyval.a_expr->marker.flags;
@@ -1990,7 +1989,7 @@ case 78:
;
break;}
case 79:
-#line 908 "asn1p_y.y"
+#line 907 "asn1p_y.y"
{
yyval.a_expr = asn1p_expr_new(yylineno);
checkmem(yyval.a_expr);
@@ -2000,13 +1999,13 @@ case 79:
;
break;}
case 80:
-#line 915 "asn1p_y.y"
+#line 914 "asn1p_y.y"
{
yyval.a_expr = yyvsp[0].a_expr;
;
break;}
case 81:
-#line 921 "asn1p_y.y"
+#line 920 "asn1p_y.y"
{
yyval.a_expr = asn1p_expr_new(yylineno);
checkmem(yyval.a_expr);
@@ -2014,14 +2013,14 @@ case 81:
;
break;}
case 82:
-#line 926 "asn1p_y.y"
+#line 925 "asn1p_y.y"
{
yyval.a_expr = yyvsp[-2].a_expr;
asn1p_expr_add(yyval.a_expr, yyvsp[0].a_expr);
;
break;}
case 83:
-#line 933 "asn1p_y.y"
+#line 932 "asn1p_y.y"
{
yyval.a_expr = yyvsp[0].a_expr;
assert(yyval.a_expr->Identifier == 0);
@@ -2029,20 +2028,20 @@ case 83:
;
break;}
case 84:
-#line 938 "asn1p_y.y"
+#line 937 "asn1p_y.y"
{
yyval.a_expr = yyvsp[0].a_expr;
;
break;}
case 85:
-#line 941 "asn1p_y.y"
+#line 940 "asn1p_y.y"
{
yyval.a_expr = yyvsp[0].a_expr;
_fixup_anonymous_identifier(yyval.a_expr);
;
break;}
case 86:
-#line 948 "asn1p_y.y"
+#line 947 "asn1p_y.y"
{
yyval.a_expr = yyvsp[-2].a_expr;
checkmem(yyval.a_expr);
@@ -2052,15 +2051,15 @@ case 86:
;
break;}
case 87:
-#line 958 "asn1p_y.y"
+#line 957 "asn1p_y.y"
{ yyval.a_int = 0; ;
break;}
case 88:
-#line 959 "asn1p_y.y"
+#line 958 "asn1p_y.y"
{ yyval.a_int = 1; ;
break;}
case 89:
-#line 963 "asn1p_y.y"
+#line 962 "asn1p_y.y"
{
yyval.a_expr = asn1p_expr_new(yylineno);
checkmem(yyval.a_expr);
@@ -2070,14 +2069,14 @@ case 89:
;
break;}
case 90:
-#line 970 "asn1p_y.y"
+#line 969 "asn1p_y.y"
{
yyval.a_expr = yyvsp[-2].a_expr;
asn1p_expr_add(yyval.a_expr, yyvsp[0].a_expr);
;
break;}
case 91:
-#line 977 "asn1p_y.y"
+#line 976 "asn1p_y.y"
{
yyval.a_expr = asn1p_expr_new(yylineno);
checkmem(yyval.a_expr);
@@ -2088,7 +2087,7 @@ case 91:
;
break;}
case 92:
-#line 985 "asn1p_y.y"
+#line 984 "asn1p_y.y"
{
yyval.a_expr = yyvsp[-2].a_expr;
yyval.a_expr->Identifier = yyvsp[-3].a_refcomp.name;
@@ -2097,7 +2096,7 @@ case 92:
;
break;}
case 93:
-#line 991 "asn1p_y.y"
+#line 990 "asn1p_y.y"
{
int ret;
yyval.a_expr = asn1p_expr_new(yylineno);
@@ -2115,47 +2114,47 @@ case 93:
;
break;}
case 94:
-#line 1009 "asn1p_y.y"
+#line 1008 "asn1p_y.y"
{ yyval.a_wsynt = 0; ;
break;}
case 95:
-#line 1010 "asn1p_y.y"
+#line 1009 "asn1p_y.y"
{
yyval.a_wsynt = yyvsp[0].a_wsynt;
;
break;}
case 96:
-#line 1017 "asn1p_y.y"
+#line 1016 "asn1p_y.y"
{ asn1p_lexer_hack_enable_with_syntax(); ;
break;}
case 97:
-#line 1019 "asn1p_y.y"
+#line 1018 "asn1p_y.y"
{
yyval.a_wsynt = yyvsp[-1].a_wsynt;
;
break;}
case 98:
-#line 1025 "asn1p_y.y"
+#line 1024 "asn1p_y.y"
{
yyval.a_wsynt = asn1p_wsyntx_new();
TQ_ADD(&(yyval.a_wsynt->chunks), yyvsp[0].a_wchunk, next);
;
break;}
case 99:
-#line 1029 "asn1p_y.y"
+#line 1028 "asn1p_y.y"
{
yyval.a_wsynt = yyvsp[-1].a_wsynt;
TQ_ADD(&(yyval.a_wsynt->chunks), yyvsp[0].a_wchunk, next);
;
break;}
case 100:
-#line 1036 "asn1p_y.y"
+#line 1035 "asn1p_y.y"
{
yyval.a_wchunk = asn1p_wsyntx_chunk_frombuf(yyvsp[0].tv_opaque.buf, yyvsp[0].tv_opaque.len, 0);
;
break;}
case 101:
-#line 1039 "asn1p_y.y"
+#line 1038 "asn1p_y.y"
{
asn1p_ref_t *ref;
int ret;
@@ -2167,7 +2166,7 @@ case 101:
;
break;}
case 102:
-#line 1051 "asn1p_y.y"
+#line 1050 "asn1p_y.y"
{
yyval.a_expr = asn1p_expr_new(yylineno);
checkmem(yyval.a_expr);
@@ -2178,7 +2177,7 @@ case 102:
;
break;}
case 103:
-#line 1059 "asn1p_y.y"
+#line 1058 "asn1p_y.y"
{
yyval.a_expr = asn1p_expr_new(yylineno);
checkmem(yyval.a_expr);
@@ -2190,7 +2189,7 @@ case 103:
;
break;}
case 104:
-#line 1068 "asn1p_y.y"
+#line 1067 "asn1p_y.y"
{
yyval.a_expr = asn1p_expr_new(yylineno);
checkmem(yyval.a_expr);
@@ -2202,7 +2201,7 @@ case 104:
;
break;}
case 105:
-#line 1080 "asn1p_y.y"
+#line 1079 "asn1p_y.y"
{
yyval.a_expr = yyvsp[-1].a_expr;
yyval.a_expr->tag = yyvsp[-2].a_tag;
@@ -2224,14 +2223,14 @@ case 105:
;
break;}
case 106:
-#line 1102 "asn1p_y.y"
+#line 1101 "asn1p_y.y"
{
yyval.a_int = asn1p_as_pointer ? EM_INDIRECT : 0;
asn1p_as_pointer = 0;
;
break;}
case 107:
-#line 1109 "asn1p_y.y"
+#line 1108 "asn1p_y.y"
{
yyval.a_expr = yyvsp[0].a_expr;
yyval.a_expr->marker.flags |= yyvsp[-1].a_int;
@@ -2250,13 +2249,13 @@ case 107:
;
break;}
case 108:
-#line 1128 "asn1p_y.y"
+#line 1127 "asn1p_y.y"
{
yyval.a_expr = yyvsp[0].a_expr;
;
break;}
case 109:
-#line 1131 "asn1p_y.y"
+#line 1130 "asn1p_y.y"
{
yyval.a_expr = yyvsp[-1].a_expr;
assert(yyval.a_expr->expr_type == A1TC_INVALID);
@@ -2265,7 +2264,7 @@ case 109:
;
break;}
case 110:
-#line 1137 "asn1p_y.y"
+#line 1136 "asn1p_y.y"
{
yyval.a_expr = yyvsp[-1].a_expr;
assert(yyval.a_expr->expr_type == A1TC_INVALID);
@@ -2274,7 +2273,7 @@ case 110:
;
break;}
case 111:
-#line 1143 "asn1p_y.y"
+#line 1142 "asn1p_y.y"
{
yyval.a_expr = yyvsp[-1].a_expr;
assert(yyval.a_expr->expr_type == A1TC_INVALID);
@@ -2283,7 +2282,7 @@ case 111:
;
break;}
case 112:
-#line 1149 "asn1p_y.y"
+#line 1148 "asn1p_y.y"
{
yyval.a_expr = asn1p_expr_new(yylineno);
checkmem(yyval.a_expr);
@@ -2296,7 +2295,7 @@ case 112:
;
break;}
case 113:
-#line 1159 "asn1p_y.y"
+#line 1158 "asn1p_y.y"
{
yyval.a_expr = asn1p_expr_new(yylineno);
checkmem(yyval.a_expr);
@@ -2309,7 +2308,7 @@ case 113:
;
break;}
case 114:
-#line 1169 "asn1p_y.y"
+#line 1168 "asn1p_y.y"
{
yyval.a_expr = asn1p_expr_new(yylineno);
checkmem(yyval.a_expr);
@@ -2318,7 +2317,7 @@ case 114:
;
break;}
case 115:
-#line 1175 "asn1p_y.y"
+#line 1174 "asn1p_y.y"
{
int ret;
yyval.a_expr = asn1p_expr_new(yylineno);
@@ -2332,7 +2331,7 @@ case 115:
;
break;}
case 116:
-#line 1189 "asn1p_y.y"
+#line 1188 "asn1p_y.y"
{
int ret;
yyval.a_expr = yyvsp[-1].a_expr;
@@ -2349,7 +2348,7 @@ case 116:
;
break;}
case 117:
-#line 1213 "asn1p_y.y"
+#line 1212 "asn1p_y.y"
{
yyval.a_expr = asn1p_expr_new(yylineno);
checkmem(yyval.a_expr);
@@ -2359,7 +2358,7 @@ case 117:
;
break;}
case 118:
-#line 1220 "asn1p_y.y"
+#line 1219 "asn1p_y.y"
{
yyval.a_expr = asn1p_expr_new(yylineno);
checkmem(yyval.a_expr);
@@ -2369,7 +2368,7 @@ case 118:
;
break;}
case 119:
-#line 1235 "asn1p_y.y"
+#line 1234 "asn1p_y.y"
{
int ret;
yyval.a_ref = asn1p_ref_new(yylineno);
@@ -2380,7 +2379,7 @@ case 119:
;
break;}
case 120:
-#line 1243 "asn1p_y.y"
+#line 1242 "asn1p_y.y"
{
int ret;
yyval.a_ref = asn1p_ref_new(yylineno);
@@ -2393,7 +2392,7 @@ case 120:
;
break;}
case 121:
-#line 1253 "asn1p_y.y"
+#line 1252 "asn1p_y.y"
{
int ret;
yyval.a_ref = asn1p_ref_new(yylineno);
@@ -2406,7 +2405,7 @@ case 121:
;
break;}
case 122:
-#line 1263 "asn1p_y.y"
+#line 1262 "asn1p_y.y"
{
int ret;
yyval.a_ref = asn1p_ref_new(yylineno);
@@ -2419,7 +2418,7 @@ case 122:
;
break;}
case 123:
-#line 1273 "asn1p_y.y"
+#line 1272 "asn1p_y.y"
{
int ret;
yyval.a_ref = asn1p_ref_new(yylineno);
@@ -2430,7 +2429,7 @@ case 123:
;
break;}
case 124:
-#line 1281 "asn1p_y.y"
+#line 1280 "asn1p_y.y"
{
int ret;
yyval.a_ref = yyvsp[0].a_ref;
@@ -2452,7 +2451,7 @@ case 124:
;
break;}
case 125:
-#line 1303 "asn1p_y.y"
+#line 1302 "asn1p_y.y"
{
int ret;
yyval.a_ref = asn1p_ref_new(yylineno);
@@ -2463,7 +2462,7 @@ case 125:
;
break;}
case 126:
-#line 1311 "asn1p_y.y"
+#line 1310 "asn1p_y.y"
{
int ret;
yyval.a_ref = yyvsp[-2].a_ref;
@@ -2473,21 +2472,21 @@ case 126:
;
break;}
case 129:
-#line 1325 "asn1p_y.y"
+#line 1324 "asn1p_y.y"
{
yyval.a_refcomp.lex_type = RLT_AmpUppercase;
yyval.a_refcomp.name = yyvsp[0].tv_str;
;
break;}
case 130:
-#line 1330 "asn1p_y.y"
+#line 1329 "asn1p_y.y"
{
yyval.a_refcomp.lex_type = RLT_Amplowercase;
yyval.a_refcomp.name = yyvsp[0].tv_str;
;
break;}
case 131:
-#line 1343 "asn1p_y.y"
+#line 1342 "asn1p_y.y"
{
yyval.a_expr = yyvsp[-2].a_expr;
assert(yyval.a_expr->Identifier == NULL);
@@ -2497,7 +2496,7 @@ case 131:
;
break;}
case 132:
-#line 1353 "asn1p_y.y"
+#line 1352 "asn1p_y.y"
{
yyval.a_value = asn1p_value_fromint(0);
checkmem(yyval.a_value);
@@ -2507,11 +2506,11 @@ case 132:
;
break;}
case 133:
-#line 1360 "asn1p_y.y"
+#line 1359 "asn1p_y.y"
{ asn1p_lexer_hack_push_opaque_state(); ;
break;}
case 134:
-#line 1360 "asn1p_y.y"
+#line 1359 "asn1p_y.y"
{
yyval.a_value = asn1p_value_frombuf(yyvsp[0].tv_opaque.buf, yyvsp[0].tv_opaque.len, 0);
checkmem(yyval.a_value);
@@ -2519,7 +2518,7 @@ case 134:
;
break;}
case 135:
-#line 1365 "asn1p_y.y"
+#line 1364 "asn1p_y.y"
{
yyval.a_value = asn1p_value_fromint(0);
checkmem(yyval.a_value);
@@ -2527,7 +2526,7 @@ case 135:
;
break;}
case 136:
-#line 1370 "asn1p_y.y"
+#line 1369 "asn1p_y.y"
{
yyval.a_value = asn1p_value_fromint(0);
checkmem(yyval.a_value);
@@ -2535,7 +2534,7 @@ case 136:
;
break;}
case 137:
-#line 1375 "asn1p_y.y"
+#line 1374 "asn1p_y.y"
{
yyval.a_value = asn1p_value_fromint(0);
checkmem(yyval.a_value);
@@ -2543,39 +2542,39 @@ case 137:
;
break;}
case 138:
-#line 1380 "asn1p_y.y"
+#line 1379 "asn1p_y.y"
{
yyval.a_value = _convert_bitstring2binary(yyvsp[0].tv_str, 'B');
checkmem(yyval.a_value);
;
break;}
case 139:
-#line 1384 "asn1p_y.y"
+#line 1383 "asn1p_y.y"
{
yyval.a_value = _convert_bitstring2binary(yyvsp[0].tv_str, 'H');
checkmem(yyval.a_value);
;
break;}
case 140:
-#line 1388 "asn1p_y.y"
+#line 1387 "asn1p_y.y"
{
yyval.a_value = yyval.a_value;
;
break;}
case 141:
-#line 1391 "asn1p_y.y"
+#line 1390 "asn1p_y.y"
{
yyval.a_value = yyvsp[0].a_value;
;
break;}
case 142:
-#line 1394 "asn1p_y.y"
+#line 1393 "asn1p_y.y"
{
yyval.a_value = yyvsp[0].a_value;
;
break;}
case 143:
-#line 1400 "asn1p_y.y"
+#line 1399 "asn1p_y.y"
{
asn1p_ref_t *ref;
int ret;
@@ -2589,7 +2588,7 @@ case 143:
;
break;}
case 144:
-#line 1411 "asn1p_y.y"
+#line 1410 "asn1p_y.y"
{
asn1p_ref_t *ref;
int ret;
@@ -2606,14 +2605,14 @@ case 144:
;
break;}
case 145:
-#line 1429 "asn1p_y.y"
+#line 1428 "asn1p_y.y"
{
yyval.a_value = asn1p_value_frombuf(yyvsp[0].tv_opaque.buf, yyvsp[0].tv_opaque.len, 0);
checkmem(yyval.a_value);
;
break;}
case 146:
-#line 1433 "asn1p_y.y"
+#line 1432 "asn1p_y.y"
{
yyval.a_value = asn1p_value_fromint(yyvsp[0].a_int);
checkmem(yyval.a_value);
@@ -2621,7 +2620,7 @@ case 146:
;
break;}
case 147:
-#line 1438 "asn1p_y.y"
+#line 1437 "asn1p_y.y"
{
yyval.a_value = asn1p_value_fromint(yyvsp[0].a_int);
checkmem(yyval.a_value);
@@ -2629,7 +2628,7 @@ case 147:
;
break;}
case 148:
-#line 1472 "asn1p_y.y"
+#line 1471 "asn1p_y.y"
{
yyval.tv_opaque.len = yyvsp[0].tv_opaque.len + 1;
yyval.tv_opaque.buf = malloc(yyval.tv_opaque.len + 1);
@@ -2641,7 +2640,7 @@ case 148:
;
break;}
case 149:
-#line 1481 "asn1p_y.y"
+#line 1480 "asn1p_y.y"
{
int newsize = yyvsp[-1].tv_opaque.len + yyvsp[0].tv_opaque.len;
char *p = malloc(newsize + 1);
@@ -2656,71 +2655,71 @@ case 149:
;
break;}
case 150:
-#line 1496 "asn1p_y.y"
+#line 1495 "asn1p_y.y"
{ yyval.a_type = ASN_BASIC_BOOLEAN; ;
break;}
case 151:
-#line 1497 "asn1p_y.y"
+#line 1496 "asn1p_y.y"
{ yyval.a_type = ASN_BASIC_NULL; ;
break;}
case 152:
-#line 1498 "asn1p_y.y"
+#line 1497 "asn1p_y.y"
{ yyval.a_type = ASN_BASIC_REAL; ;
break;}
case 153:
-#line 1499 "asn1p_y.y"
+#line 1498 "asn1p_y.y"
{ yyval.a_type = yyvsp[0].a_type; ;
break;}
case 154:
-#line 1500 "asn1p_y.y"
+#line 1499 "asn1p_y.y"
{ yyval.a_type = ASN_BASIC_OCTET_STRING; ;
break;}
case 155:
-#line 1501 "asn1p_y.y"
+#line 1500 "asn1p_y.y"
{ yyval.a_type = ASN_BASIC_OBJECT_IDENTIFIER; ;
break;}
case 156:
-#line 1502 "asn1p_y.y"
+#line 1501 "asn1p_y.y"
{ yyval.a_type = ASN_BASIC_RELATIVE_OID; ;
break;}
case 157:
-#line 1503 "asn1p_y.y"
+#line 1502 "asn1p_y.y"
{ yyval.a_type = ASN_BASIC_EXTERNAL; ;
break;}
case 158:
-#line 1504 "asn1p_y.y"
+#line 1503 "asn1p_y.y"
{ yyval.a_type = ASN_BASIC_EMBEDDED_PDV; ;
break;}
case 159:
-#line 1505 "asn1p_y.y"
+#line 1504 "asn1p_y.y"
{ yyval.a_type = ASN_BASIC_CHARACTER_STRING; ;
break;}
case 160:
-#line 1506 "asn1p_y.y"
+#line 1505 "asn1p_y.y"
{ yyval.a_type = ASN_BASIC_UTCTime; ;
break;}
case 161:
-#line 1507 "asn1p_y.y"
+#line 1506 "asn1p_y.y"
{ yyval.a_type = ASN_BASIC_GeneralizedTime; ;
break;}
case 162:
-#line 1508 "asn1p_y.y"
+#line 1507 "asn1p_y.y"
{ yyval.a_type = yyvsp[0].a_type; ;
break;}
case 163:
-#line 1515 "asn1p_y.y"
+#line 1514 "asn1p_y.y"
{ yyval.a_type = ASN_BASIC_INTEGER; ;
break;}
case 164:
-#line 1516 "asn1p_y.y"
+#line 1515 "asn1p_y.y"
{ yyval.a_type = ASN_BASIC_ENUMERATED; ;
break;}
case 165:
-#line 1517 "asn1p_y.y"
+#line 1516 "asn1p_y.y"
{ yyval.a_type = ASN_BASIC_BIT_STRING; ;
break;}
case 166:
-#line 1521 "asn1p_y.y"
+#line 1520 "asn1p_y.y"
{
yyval.a_expr = asn1p_expr_new(yylineno);
checkmem(yyval.a_expr);
@@ -2729,7 +2728,7 @@ case 166:
;
break;}
case 167:
-#line 1527 "asn1p_y.y"
+#line 1526 "asn1p_y.y"
{
if(yyvsp[0].a_expr) {
yyval.a_expr = yyvsp[0].a_expr;
@@ -2742,91 +2741,91 @@ case 167:
;
break;}
case 168:
-#line 1540 "asn1p_y.y"
+#line 1539 "asn1p_y.y"
{ yyval.a_type = ASN_STRING_BMPString; ;
break;}
case 169:
-#line 1541 "asn1p_y.y"
+#line 1540 "asn1p_y.y"
{
yyval.a_type = ASN_STRING_GeneralString;
fprintf(stderr, "WARNING: GeneralString is not fully supported\n");
;
break;}
case 170:
-#line 1545 "asn1p_y.y"
+#line 1544 "asn1p_y.y"
{
yyval.a_type = ASN_STRING_GraphicString;
fprintf(stderr, "WARNING: GraphicString is not fully supported\n");
;
break;}
case 171:
-#line 1549 "asn1p_y.y"
+#line 1548 "asn1p_y.y"
{ yyval.a_type = ASN_STRING_IA5String; ;
break;}
case 172:
-#line 1550 "asn1p_y.y"
+#line 1549 "asn1p_y.y"
{ yyval.a_type = ASN_STRING_ISO646String; ;
break;}
case 173:
-#line 1551 "asn1p_y.y"
+#line 1550 "asn1p_y.y"
{ yyval.a_type = ASN_STRING_NumericString; ;
break;}
case 174:
-#line 1552 "asn1p_y.y"
+#line 1551 "asn1p_y.y"
{ yyval.a_type = ASN_STRING_PrintableString; ;
break;}
case 175:
-#line 1553 "asn1p_y.y"
+#line 1552 "asn1p_y.y"
{
yyval.a_type = ASN_STRING_T61String;
fprintf(stderr, "WARNING: T61String is not fully supported\n");
;
break;}
case 176:
-#line 1557 "asn1p_y.y"
+#line 1556 "asn1p_y.y"
{ yyval.a_type = ASN_STRING_TeletexString; ;
break;}
case 177:
-#line 1558 "asn1p_y.y"
+#line 1557 "asn1p_y.y"
{ yyval.a_type = ASN_STRING_UniversalString; ;
break;}
case 178:
-#line 1559 "asn1p_y.y"
+#line 1558 "asn1p_y.y"
{ yyval.a_type = ASN_STRING_UTF8String; ;
break;}
case 179:
-#line 1560 "asn1p_y.y"
+#line 1559 "asn1p_y.y"
{
yyval.a_type = ASN_STRING_VideotexString;
fprintf(stderr, "WARNING: VideotexString is not fully supported\n");
;
break;}
case 180:
-#line 1564 "asn1p_y.y"
+#line 1563 "asn1p_y.y"
{ yyval.a_type = ASN_STRING_VisibleString; ;
break;}
case 181:
-#line 1565 "asn1p_y.y"
+#line 1564 "asn1p_y.y"
{ yyval.a_type = ASN_STRING_ObjectDescriptor; ;
break;}
case 187:
-#line 1577 "asn1p_y.y"
+#line 1576 "asn1p_y.y"
{ yyval.a_constr = 0; ;
break;}
case 188:
-#line 1578 "asn1p_y.y"
+#line 1577 "asn1p_y.y"
{
yyval.a_constr = yyvsp[0].a_constr;
;
break;}
case 189:
-#line 1584 "asn1p_y.y"
+#line 1583 "asn1p_y.y"
{
CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_SET, yyvsp[0].a_constr, 0);
;
break;}
case 190:
-#line 1587 "asn1p_y.y"
+#line 1586 "asn1p_y.y"
{
/*
* This is a special case, for compatibility purposes.
@@ -2836,25 +2835,25 @@ case 190:
;
break;}
case 191:
-#line 1597 "asn1p_y.y"
+#line 1596 "asn1p_y.y"
{
yyval.a_constr = yyvsp[-1].a_constr;
;
break;}
case 192:
-#line 1600 "asn1p_y.y"
+#line 1599 "asn1p_y.y"
{
CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_SET, yyvsp[-3].a_constr, yyvsp[-1].a_constr);
;
break;}
case 193:
-#line 1606 "asn1p_y.y"
+#line 1605 "asn1p_y.y"
{
yyval.a_constr = yyvsp[0].a_constr;
;
break;}
case 194:
-#line 1609 "asn1p_y.y"
+#line 1608 "asn1p_y.y"
{
asn1p_constraint_t *ct;
ct = asn1p_constraint_new(yylineno);
@@ -2863,7 +2862,7 @@ case 194:
;
break;}
case 195:
-#line 1615 "asn1p_y.y"
+#line 1614 "asn1p_y.y"
{
asn1p_constraint_t *ct;
ct = asn1p_constraint_new(yylineno);
@@ -2874,37 +2873,37 @@ case 195:
;
break;}
case 196:
-#line 1626 "asn1p_y.y"
+#line 1625 "asn1p_y.y"
{
yyval.a_constr = yyvsp[0].a_constr;
;
break;}
case 197:
-#line 1629 "asn1p_y.y"
+#line 1628 "asn1p_y.y"
{
CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_AEX, yyvsp[0].a_constr, 0);
;
break;}
case 198:
-#line 1632 "asn1p_y.y"
+#line 1631 "asn1p_y.y"
{
CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_UNI, yyvsp[-2].a_constr, yyvsp[0].a_constr);
;
break;}
case 199:
-#line 1635 "asn1p_y.y"
+#line 1634 "asn1p_y.y"
{
CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_INT, yyvsp[-2].a_constr, yyvsp[0].a_constr);
;
break;}
case 200:
-#line 1638 "asn1p_y.y"
+#line 1637 "asn1p_y.y"
{
CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_EXC, yyvsp[-2].a_constr, yyvsp[0].a_constr);
;
break;}
case 201:
-#line 1644 "asn1p_y.y"
+#line 1643 "asn1p_y.y"
{
int ret;
yyval.a_constr = asn1p_constraint_new(yylineno);
@@ -2915,7 +2914,7 @@ case 201:
;
break;}
case 202:
-#line 1652 "asn1p_y.y"
+#line 1651 "asn1p_y.y"
{
int ret;
yyval.a_constr = asn1p_constraint_new(yylineno);
@@ -2926,7 +2925,7 @@ case 202:
;
break;}
case 203:
-#line 1660 "asn1p_y.y"
+#line 1659 "asn1p_y.y"
{
yyval.a_constr = asn1p_constraint_new(yylineno);
checkmem(yyval.a_constr);
@@ -2935,7 +2934,7 @@ case 203:
;
break;}
case 204:
-#line 1666 "asn1p_y.y"
+#line 1665 "asn1p_y.y"
{
yyval.a_constr = asn1p_constraint_new(yylineno);
checkmem(yyval.a_constr);
@@ -2944,7 +2943,7 @@ case 204:
;
break;}
case 205:
-#line 1672 "asn1p_y.y"
+#line 1671 "asn1p_y.y"
{
yyval.a_constr = asn1p_constraint_new(yylineno);
checkmem(yyval.a_constr);
@@ -2954,7 +2953,7 @@ case 205:
;
break;}
case 206:
-#line 1679 "asn1p_y.y"
+#line 1678 "asn1p_y.y"
{
yyval.a_constr = asn1p_constraint_new(yylineno);
checkmem(yyval.a_constr);
@@ -2965,7 +2964,7 @@ case 206:
;
break;}
case 207:
-#line 1687 "asn1p_y.y"
+#line 1686 "asn1p_y.y"
{
yyval.a_constr = asn1p_constraint_new(yylineno);
checkmem(yyval.a_constr);
@@ -2976,7 +2975,7 @@ case 207:
;
break;}
case 208:
-#line 1695 "asn1p_y.y"
+#line 1694 "asn1p_y.y"
{
yyval.a_constr = asn1p_constraint_new(yylineno);
checkmem(yyval.a_constr);
@@ -2988,23 +2987,23 @@ case 208:
;
break;}
case 209:
-#line 1704 "asn1p_y.y"
+#line 1703 "asn1p_y.y"
{
yyval.a_constr = yyvsp[0].a_constr;
;
break;}
case 210:
-#line 1707 "asn1p_y.y"
+#line 1706 "asn1p_y.y"
{
yyval.a_constr = yyvsp[0].a_constr;
;
break;}
case 211:
-#line 1711 "asn1p_y.y"
+#line 1710 "asn1p_y.y"
{ asn1p_lexer_hack_push_opaque_state(); ;
break;}
case 212:
-#line 1711 "asn1p_y.y"
+#line 1710 "asn1p_y.y"
{
yyval.a_constr = asn1p_constraint_new(yylineno);
checkmem(yyval.a_constr);
@@ -3015,35 +3014,35 @@ case 212:
;
break;}
case 213:
-#line 1722 "asn1p_y.y"
+#line 1721 "asn1p_y.y"
{ yyval.a_ctype = ACT_EL_RANGE; ;
break;}
case 214:
-#line 1723 "asn1p_y.y"
+#line 1722 "asn1p_y.y"
{ yyval.a_ctype = ACT_EL_RLRANGE; ;
break;}
case 215:
-#line 1724 "asn1p_y.y"
+#line 1723 "asn1p_y.y"
{ yyval.a_ctype = ACT_EL_LLRANGE; ;
break;}
case 216:
-#line 1725 "asn1p_y.y"
+#line 1724 "asn1p_y.y"
{ yyval.a_ctype = ACT_EL_ULRANGE; ;
break;}
case 217:
-#line 1729 "asn1p_y.y"
+#line 1728 "asn1p_y.y"
{
yyval.a_ctype = ACT_CT_SIZE;
;
break;}
case 218:
-#line 1732 "asn1p_y.y"
+#line 1731 "asn1p_y.y"
{
yyval.a_ctype = ACT_CT_FROM;
;
break;}
case 219:
-#line 1738 "asn1p_y.y"
+#line 1737 "asn1p_y.y"
{
yyval.a_value = asn1p_value_fromint(0);
checkmem(yyval.a_value);
@@ -3051,7 +3050,7 @@ case 219:
;
break;}
case 220:
-#line 1743 "asn1p_y.y"
+#line 1742 "asn1p_y.y"
{
yyval.a_value = asn1p_value_fromint(1);
checkmem(yyval.a_value);
@@ -3059,19 +3058,19 @@ case 220:
;
break;}
case 221:
-#line 1748 "asn1p_y.y"
+#line 1747 "asn1p_y.y"
{
yyval.a_value = yyvsp[0].a_value;
;
break;}
case 222:
-#line 1751 "asn1p_y.y"
+#line 1750 "asn1p_y.y"
{
yyval.a_value = yyvsp[0].a_value;
;
break;}
case 223:
-#line 1754 "asn1p_y.y"
+#line 1753 "asn1p_y.y"
{
asn1p_ref_t *ref;
int ret;
@@ -3085,7 +3084,7 @@ case 223:
;
break;}
case 224:
-#line 1768 "asn1p_y.y"
+#line 1767 "asn1p_y.y"
{
asn1p_ref_t *ref;
int ret;
@@ -3099,31 +3098,31 @@ case 224:
;
break;}
case 225:
-#line 1782 "asn1p_y.y"
+#line 1781 "asn1p_y.y"
{
CONSTRAINT_INSERT(yyval.a_constr, ACT_CT_WCOMP, yyvsp[0].a_constr, 0);
;
break;}
case 226:
-#line 1785 "asn1p_y.y"
+#line 1784 "asn1p_y.y"
{
CONSTRAINT_INSERT(yyval.a_constr, ACT_CT_WCOMPS, yyvsp[-1].a_constr, 0);
;
break;}
case 227:
-#line 1791 "asn1p_y.y"
+#line 1790 "asn1p_y.y"
{
yyval.a_constr = yyvsp[0].a_constr;
;
break;}
case 228:
-#line 1794 "asn1p_y.y"
+#line 1793 "asn1p_y.y"
{
CONSTRAINT_INSERT(yyval.a_constr, ACT_CT_WCOMPS, yyvsp[-2].a_constr, yyvsp[0].a_constr);
;
break;}
case 229:
-#line 1800 "asn1p_y.y"
+#line 1799 "asn1p_y.y"
{
yyval.a_constr = asn1p_constraint_new(yylineno);
checkmem(yyval.a_constr);
@@ -3132,7 +3131,7 @@ case 229:
;
break;}
case 230:
-#line 1806 "asn1p_y.y"
+#line 1805 "asn1p_y.y"
{
yyval.a_constr = asn1p_constraint_new(yylineno);
checkmem(yyval.a_constr);
@@ -3143,45 +3142,45 @@ case 230:
;
break;}
case 231:
-#line 1820 "asn1p_y.y"
+#line 1819 "asn1p_y.y"
{ yyval.a_pres = ACPRES_DEFAULT; ;
break;}
case 232:
-#line 1821 "asn1p_y.y"
+#line 1820 "asn1p_y.y"
{ yyval.a_pres = yyvsp[0].a_pres; ;
break;}
case 233:
-#line 1825 "asn1p_y.y"
+#line 1824 "asn1p_y.y"
{
yyval.a_pres = ACPRES_PRESENT;
;
break;}
case 234:
-#line 1828 "asn1p_y.y"
+#line 1827 "asn1p_y.y"
{
yyval.a_pres = ACPRES_ABSENT;
;
break;}
case 235:
-#line 1831 "asn1p_y.y"
+#line 1830 "asn1p_y.y"
{
yyval.a_pres = ACPRES_OPTIONAL;
;
break;}
case 236:
-#line 1837 "asn1p_y.y"
+#line 1836 "asn1p_y.y"
{
yyval.a_constr = yyvsp[0].a_constr;
;
break;}
case 237:
-#line 1840 "asn1p_y.y"
+#line 1839 "asn1p_y.y"
{
yyval.a_constr = yyvsp[0].a_constr;
;
break;}
case 238:
-#line 1849 "asn1p_y.y"
+#line 1848 "asn1p_y.y"
{
asn1p_ref_t *ref = asn1p_ref_new(yylineno);
asn1p_constraint_t *ct;
@@ -3196,13 +3195,13 @@ case 238:
;
break;}
case 239:
-#line 1864 "asn1p_y.y"
+#line 1863 "asn1p_y.y"
{
CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_CRC, yyvsp[-3].a_constr, yyvsp[-1].a_constr);
;
break;}
case 240:
-#line 1870 "asn1p_y.y"
+#line 1869 "asn1p_y.y"
{
yyval.a_constr = asn1p_constraint_new(yylineno);
checkmem(yyval.a_constr);
@@ -3211,7 +3210,7 @@ case 240:
;
break;}
case 241:
-#line 1876 "asn1p_y.y"
+#line 1875 "asn1p_y.y"
{
asn1p_constraint_t *ct;
ct = asn1p_constraint_new(yylineno);
@@ -3222,7 +3221,7 @@ case 241:
;
break;}
case 242:
-#line 1890 "asn1p_y.y"
+#line 1889 "asn1p_y.y"
{
char *p = malloc(strlen(yyvsp[0].tv_str) + 2);
int ret;
@@ -3236,7 +3235,7 @@ case 242:
;
break;}
case 243:
-#line 1901 "asn1p_y.y"
+#line 1900 "asn1p_y.y"
{
char *p = malloc(strlen(yyvsp[0].tv_str) + 3);
int ret;
@@ -3251,13 +3250,13 @@ case 243:
;
break;}
case 244:
-#line 1917 "asn1p_y.y"
+#line 1916 "asn1p_y.y"
{
yyval.tv_str = yyvsp[0].tv_str;
;
break;}
case 245:
-#line 1920 "asn1p_y.y"
+#line 1919 "asn1p_y.y"
{
int l1 = strlen(yyvsp[-2].tv_str);
int l3 = strlen(yyvsp[0].tv_str);
@@ -3269,45 +3268,45 @@ case 245:
;
break;}
case 246:
-#line 1938 "asn1p_y.y"
+#line 1937 "asn1p_y.y"
{
yyval.a_marker.flags = EM_NOMARK;
yyval.a_marker.default_value = 0;
;
break;}
case 247:
-#line 1942 "asn1p_y.y"
+#line 1941 "asn1p_y.y"
{ yyval.a_marker = yyvsp[0].a_marker; ;
break;}
case 248:
-#line 1946 "asn1p_y.y"
+#line 1945 "asn1p_y.y"
{
- yyval.a_marker.flags = EM_OPTIONAL;
+ yyval.a_marker.flags = EM_OPTIONAL | EM_INDIRECT;
yyval.a_marker.default_value = 0;
;
break;}
case 249:
-#line 1950 "asn1p_y.y"
+#line 1949 "asn1p_y.y"
{
yyval.a_marker.flags = EM_DEFAULT;
yyval.a_marker.default_value = yyvsp[0].a_value;
;
break;}
case 250:
-#line 1973 "asn1p_y.y"
+#line 1972 "asn1p_y.y"
{
yyval.a_expr = asn1p_expr_new(yylineno);
checkmem(yyval.a_expr);
;
break;}
case 251:
-#line 1977 "asn1p_y.y"
+#line 1976 "asn1p_y.y"
{
yyval.a_expr = yyvsp[-1].a_expr;
;
break;}
case 252:
-#line 1983 "asn1p_y.y"
+#line 1982 "asn1p_y.y"
{
yyval.a_expr = asn1p_expr_new(yylineno);
checkmem(yyval.a_expr);
@@ -3315,14 +3314,14 @@ case 252:
;
break;}
case 253:
-#line 1988 "asn1p_y.y"
+#line 1987 "asn1p_y.y"
{
yyval.a_expr = yyvsp[-2].a_expr;
asn1p_expr_add(yyval.a_expr, yyvsp[0].a_expr);
;
break;}
case 254:
-#line 1995 "asn1p_y.y"
+#line 1994 "asn1p_y.y"
{
yyval.a_expr = asn1p_expr_new(yylineno);
checkmem(yyval.a_expr);
@@ -3332,7 +3331,7 @@ case 254:
;
break;}
case 255:
-#line 2002 "asn1p_y.y"
+#line 2001 "asn1p_y.y"
{
yyval.a_expr = asn1p_expr_new(yylineno);
checkmem(yyval.a_expr);
@@ -3343,7 +3342,7 @@ case 255:
;
break;}
case 256:
-#line 2010 "asn1p_y.y"
+#line 2009 "asn1p_y.y"
{
yyval.a_expr = asn1p_expr_new(yylineno);
checkmem(yyval.a_expr);
@@ -3354,7 +3353,7 @@ case 256:
;
break;}
case 257:
-#line 2018 "asn1p_y.y"
+#line 2017 "asn1p_y.y"
{
yyval.a_expr = asn1p_expr_new(yylineno);
checkmem(yyval.a_expr);
@@ -3364,7 +3363,7 @@ case 257:
;
break;}
case 258:
-#line 2025 "asn1p_y.y"
+#line 2024 "asn1p_y.y"
{
yyval.a_expr = asn1p_expr_new(yylineno);
checkmem(yyval.a_expr);
@@ -3375,102 +3374,102 @@ case 258:
;
break;}
case 259:
-#line 2036 "asn1p_y.y"
+#line 2035 "asn1p_y.y"
{
yyval.a_value = asn1p_value_fromint(yyvsp[0].a_int);
checkmem(yyval.a_value);
;
break;}
case 260:
-#line 2040 "asn1p_y.y"
+#line 2039 "asn1p_y.y"
{
yyval.a_value = asn1p_value_fromint(yyvsp[0].a_int);
checkmem(yyval.a_value);
;
break;}
case 261:
-#line 2071 "asn1p_y.y"
+#line 2070 "asn1p_y.y"
{ memset(&yyval.a_tag, 0, sizeof(yyval.a_tag)); ;
break;}
case 262:
-#line 2072 "asn1p_y.y"
+#line 2071 "asn1p_y.y"
{ yyval.a_tag = yyvsp[0].a_tag; ;
break;}
case 263:
-#line 2076 "asn1p_y.y"
+#line 2075 "asn1p_y.y"
{
yyval.a_tag = yyvsp[-1].a_tag;
yyval.a_tag.tag_mode = yyvsp[0].a_tag.tag_mode;
;
break;}
case 264:
-#line 2083 "asn1p_y.y"
+#line 2082 "asn1p_y.y"
{
yyval.a_tag = yyvsp[-2].a_tag;
yyval.a_tag.tag_value = yyvsp[-1].a_int;
;
break;}
case 265:
-#line 2089 "asn1p_y.y"
+#line 2088 "asn1p_y.y"
{ yyval.a_tag.tag_class = TC_CONTEXT_SPECIFIC; ;
break;}
case 266:
-#line 2090 "asn1p_y.y"
+#line 2089 "asn1p_y.y"
{ yyval.a_tag.tag_class = TC_UNIVERSAL; ;
break;}
case 267:
-#line 2091 "asn1p_y.y"
+#line 2090 "asn1p_y.y"
{ yyval.a_tag.tag_class = TC_APPLICATION; ;
break;}
case 268:
-#line 2092 "asn1p_y.y"
+#line 2091 "asn1p_y.y"
{ yyval.a_tag.tag_class = TC_PRIVATE; ;
break;}
case 269:
-#line 2096 "asn1p_y.y"
+#line 2095 "asn1p_y.y"
{ yyval.a_tag.tag_mode = TM_DEFAULT; ;
break;}
case 270:
-#line 2097 "asn1p_y.y"
+#line 2096 "asn1p_y.y"
{ yyval.a_tag.tag_mode = TM_IMPLICIT; ;
break;}
case 271:
-#line 2098 "asn1p_y.y"
+#line 2097 "asn1p_y.y"
{ yyval.a_tag.tag_mode = TM_EXPLICIT; ;
break;}
case 272:
-#line 2102 "asn1p_y.y"
+#line 2101 "asn1p_y.y"
{
checkmem(yyvsp[0].tv_str);
yyval.tv_str = yyvsp[0].tv_str;
;
break;}
case 273:
-#line 2106 "asn1p_y.y"
+#line 2105 "asn1p_y.y"
{
checkmem(yyvsp[0].tv_str);
yyval.tv_str = yyvsp[0].tv_str;
;
break;}
case 274:
-#line 2114 "asn1p_y.y"
+#line 2113 "asn1p_y.y"
{
checkmem(yyvsp[0].tv_str);
yyval.tv_str = yyvsp[0].tv_str;
;
break;}
case 275:
-#line 2121 "asn1p_y.y"
+#line 2120 "asn1p_y.y"
{ yyval.tv_str = 0; ;
break;}
case 276:
-#line 2122 "asn1p_y.y"
+#line 2121 "asn1p_y.y"
{
yyval.tv_str = yyvsp[0].tv_str;
;
break;}
case 277:
-#line 2128 "asn1p_y.y"
+#line 2127 "asn1p_y.y"
{
checkmem(yyvsp[0].tv_str);
yyval.tv_str = yyvsp[0].tv_str;
@@ -3698,7 +3697,7 @@ yyerrhandle:
}
return 1;
}
-#line 2134 "asn1p_y.y"
+#line 2133 "asn1p_y.y"
diff --git a/libasn1parser/asn1p_y.y b/libasn1parser/asn1p_y.y
index 812b2d83..b070f2af 100644
--- a/libasn1parser/asn1p_y.y
+++ b/libasn1parser/asn1p_y.y
@@ -575,9 +575,8 @@ ModuleSpecificationElement:
*/
| BasicString {
return yyerror(
- "Attempt to redefine a standard basic type, "
- "use -ftypesXY to switch back "
- "to older version of ASN.1 standard");
+ "Attempt to redefine a standard basic string type, "
+ "please comment out or remove this type redefinition.");
}
;
@@ -1944,7 +1943,7 @@ optMarker:
Marker:
TOK_OPTIONAL {
- $$.flags = EM_OPTIONAL;
+ $$.flags = EM_OPTIONAL | EM_INDIRECT;
$$.default_value = 0;
}
| TOK_DEFAULT Value {
diff --git a/libasn1parser/asn1parser.c b/libasn1parser/asn1parser.c
index f6221a56..f59d1afe 100644
--- a/libasn1parser/asn1parser.c
+++ b/libasn1parser/asn1parser.c
@@ -139,22 +139,6 @@ _asn1p_set_flags(enum asn1p_flags flags) {
}
/*
- * Restrict embedded types to ASN.1:1988 version of standard.
- */
- if(flags & A1P_TYPES_RESTRICT_TO_1988) {
- flags &= ~A1P_TYPES_RESTRICT_TO_1988;
- asn1p_lexer_types_year = 1988;
- }
-
- /*
- * Restrict embedded types to ASN.1:1988 version of standard.
- */
- if(flags & A1P_TYPES_RESTRICT_TO_1988) {
- flags &= ~A1P_TYPES_RESTRICT_TO_1988;
- asn1p_lexer_types_year = 1988;
- }
-
- /*
* Check that we haven't missed an unknown flag.
*/
if(flags) {
diff --git a/libasn1parser/asn1parser.h b/libasn1parser/asn1parser.h
index d5a09a90..fc8de37e 100644
--- a/libasn1parser/asn1parser.h
+++ b/libasn1parser/asn1parser.h
@@ -57,15 +57,7 @@ enum asn1p_flags {
/*
* Enable verbose debugging output from lexer.
*/
- A1P_LEXER_DEBUG = 0x0001,
- /*
- * Embedded types restricted to ASN.1:1988
- */
- A1P_TYPES_RESTRICT_TO_1988 = 0x0010,
- /*
- * Embedded constructs (concepts) restricted to ASN.1:1990
- */
- A1P_CONSTRUCTS_RESTRICT_TO_1990 = 0x0020,
+ A1P_LEXER_DEBUG = 0x0001
};
/*