diff options
author | Lev Walkin <vlm@lionet.info> | 2005-11-26 11:21:55 +0000 |
---|---|---|
committer | Lev Walkin <vlm@lionet.info> | 2005-11-26 11:21:55 +0000 |
commit | 708530582f5ba965fb596c3e189eec23c52337d9 (patch) | |
tree | f73a4ca068ebfd9fee5675abd978f192ada3d8b1 | |
parent | 04affbfa31837215deb800681279e4db30795deb (diff) |
upgrade
-rw-r--r-- | libasn1parser/asn1p_expr.h | 3 | ||||
-rw-r--r-- | libasn1parser/asn1p_y.c | 531 | ||||
-rw-r--r-- | libasn1parser/asn1p_y.y | 7 | ||||
-rw-r--r-- | libasn1parser/asn1parser.c | 16 | ||||
-rw-r--r-- | libasn1parser/asn1parser.h | 10 |
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 }; /* |