diff options
author | Andrew Bartlett <abartlet@samba.org> | 2021-03-30 09:39:00 +1300 |
---|---|---|
committer | Andrew Bartlett <abartlet@samba.org> | 2021-04-28 03:43:34 +0000 |
commit | e45980ff5de27b4558e7dfe0ce4c7af39d9c8b6b (patch) | |
tree | f9e5ae8a89d15f4ce54e50c3bce951d873070fdf | |
parent | c2c09113e5598ae87dcf470cb85aaf1a62d03ba4 (diff) | |
download | samba-e45980ff5de27b4558e7dfe0ce4c7af39d9c8b6b.tar.gz |
build: Use bison at build time rather than lexyacc.sh to build the embedded heimdal
Because the filenames are changed to the *.tab.{h,c} format
a transitional header is added.
While the built compilers differ, the output of the compilers
and the resulting .o files have been verified not to have changed
on Ubuntu 20.04.
Signed-off-by: Andrew Bartlett <abartlet@samba.org>
Reviewed-by: Douglas Bagnall <douglas.bagnall@catalyst.net.nz>
-rw-r--r-- | source3/wscript | 9 | ||||
-rw-r--r-- | source4/heimdal/lib/asn1/asn1parse.c | 1582 | ||||
-rw-r--r-- | source4/heimdal/lib/asn1/asn1parse.h | 109 | ||||
-rw-r--r-- | source4/heimdal/lib/com_err/parse.c | 637 | ||||
-rw-r--r-- | source4/heimdal/lib/com_err/parse.h | 20 | ||||
-rw-r--r-- | source4/heimdal/lib/hx509/sel-gram.c | 589 | ||||
-rw-r--r-- | source4/heimdal/lib/hx509/sel-gram.h | 21 | ||||
-rw-r--r-- | source4/heimdal_build/asn1parse.h | 1 | ||||
-rwxr-xr-x | source4/heimdal_build/lexyacc.sh | 42 | ||||
-rw-r--r-- | source4/heimdal_build/parse.h | 1 | ||||
-rw-r--r-- | source4/heimdal_build/sel-gram.h | 1 | ||||
-rw-r--r-- | source4/heimdal_build/wscript_build | 9 | ||||
-rw-r--r-- | source4/heimdal_build/wscript_configure | 6 | ||||
-rw-r--r-- | wscript | 12 | ||||
-rw-r--r-- | wscript_configure_embedded_heimdal | 3 |
15 files changed, 29 insertions, 3013 deletions
diff --git a/source3/wscript b/source3/wscript index 42960e5d03a..56e594b59b7 100644 --- a/source3/wscript +++ b/source3/wscript @@ -13,7 +13,6 @@ import build.charset from wafsamba import samba_utils from samba_utils import TO_LIST import samba3 -from waflib.Tools import bison default_prefix = Options.default_prefix = '/usr/local/samba' @@ -1815,14 +1814,6 @@ main() { conf.DEFINE('HAVE_TRACKER', '1') break - Logs.info("Checking for bison") - bison.configure(conf) - if conf.env['BISON']: - conf.CHECK_COMMAND('%s --version | head -n1' % conf.env.BISON[0], - msg='Using bison version', - define=None, - on_target=False) - with_spotlight_tracker_backend = ( conf.CONFIG_SET('HAVE_TRACKER') and conf.CONFIG_SET('HAVE_GLIB') diff --git a/source4/heimdal/lib/asn1/asn1parse.c b/source4/heimdal/lib/asn1/asn1parse.c deleted file mode 100644 index 22c8f289f4c..00000000000 --- a/source4/heimdal/lib/asn1/asn1parse.c +++ /dev/null @@ -1,1582 +0,0 @@ -#ifndef lint -static const char yysccsid[] = "@(#)yaccpar 1.9 (Berkeley) 02/21/93"; -#endif - -#define YYBYACC 1 -#define YYMAJOR 1 -#define YYMINOR 9 -#define YYPATCH 20101229 - -#define YYEMPTY (-1) -#define yyclearin (yychar = YYEMPTY) -#define yyerrok (yyerrflag = 0) -#define YYRECOVERING() (yyerrflag != 0) - -#define YYPREFIX "yy" - -#define YYPURE 0 - - -#include <config.h> - -#include <stdio.h> -#include <stdlib.h> -#include <string.h> -#include "symbol.h" -#include "lex.h" -#include "gen_locl.h" -#include "der.h" - -RCSID("$Id$"); - -static Type *new_type (Typetype t); -static struct constraint_spec *new_constraint_spec(enum ctype); -static Type *new_tag(int tagclass, int tagvalue, int tagenv, Type *oldtype); -void yyerror (const char *); -static struct objid *new_objid(const char *label, int value); -static void add_oid_to_tail(struct objid *, struct objid *); -static void fix_labels(Symbol *s); - -struct string_list { - char *string; - struct string_list *next; -}; - -/* Declarations for Bison */ -#define YYMALLOC malloc -#define YYFREE free - -#ifdef YYSTYPE -#undef YYSTYPE_IS_DECLARED -#define YYSTYPE_IS_DECLARED 1 -#endif -#ifndef YYSTYPE_IS_DECLARED -#define YYSTYPE_IS_DECLARED 1 -typedef union { - int constant; - struct value *value; - struct range *range; - char *name; - Type *type; - Member *member; - struct objid *objid; - char *defval; - struct string_list *sl; - struct tagtype tag; - struct memhead *members; - struct constraint_spec *constraint_spec; -} YYSTYPE; -#endif /* !YYSTYPE_IS_DECLARED */ -/* compatibility with bison */ -#ifdef YYPARSE_PARAM -/* compatibility with FreeBSD */ -# ifdef YYPARSE_PARAM_TYPE -# define YYPARSE_DECL() yyparse(YYPARSE_PARAM_TYPE YYPARSE_PARAM) -# else -# define YYPARSE_DECL() yyparse(void *YYPARSE_PARAM) -# endif -#else -# define YYPARSE_DECL() yyparse(void) -#endif - -/* Parameters sent to lex. */ -#ifdef YYLEX_PARAM -# define YYLEX_DECL() yylex(void *YYLEX_PARAM) -# define YYLEX yylex(YYLEX_PARAM) -#else -# define YYLEX_DECL() yylex(void) -# define YYLEX yylex() -#endif - -/* Parameters sent to yyerror. */ -#define YYERROR_DECL() yyerror(const char *s) -#define YYERROR_CALL(msg) yyerror(msg) - -extern int YYPARSE_DECL(); - -#define kw_ABSENT 257 -#define kw_ABSTRACT_SYNTAX 258 -#define kw_ALL 259 -#define kw_APPLICATION 260 -#define kw_AUTOMATIC 261 -#define kw_BEGIN 262 -#define kw_BIT 263 -#define kw_BMPString 264 -#define kw_BOOLEAN 265 -#define kw_BY 266 -#define kw_CHARACTER 267 -#define kw_CHOICE 268 -#define kw_CLASS 269 -#define kw_COMPONENT 270 -#define kw_COMPONENTS 271 -#define kw_CONSTRAINED 272 -#define kw_CONTAINING 273 -#define kw_DEFAULT 274 -#define kw_DEFINITIONS 275 -#define kw_EMBEDDED 276 -#define kw_ENCODED 277 -#define kw_END 278 -#define kw_ENUMERATED 279 -#define kw_EXCEPT 280 -#define kw_EXPLICIT 281 -#define kw_EXPORTS 282 -#define kw_EXTENSIBILITY 283 -#define kw_EXTERNAL 284 -#define kw_FALSE 285 -#define kw_FROM 286 -#define kw_GeneralString 287 -#define kw_GeneralizedTime 288 -#define kw_GraphicString 289 -#define kw_IA5String 290 -#define kw_IDENTIFIER 291 -#define kw_IMPLICIT 292 -#define kw_IMPLIED 293 -#define kw_IMPORTS 294 -#define kw_INCLUDES 295 -#define kw_INSTANCE 296 -#define kw_INTEGER 297 -#define kw_INTERSECTION 298 -#define kw_ISO646String 299 -#define kw_MAX 300 -#define kw_MIN 301 -#define kw_MINUS_INFINITY 302 -#define kw_NULL 303 -#define kw_NumericString 304 -#define kw_OBJECT 305 -#define kw_OCTET 306 -#define kw_OF 307 -#define kw_OPTIONAL 308 -#define kw_ObjectDescriptor 309 -#define kw_PATTERN 310 -#define kw_PDV 311 -#define kw_PLUS_INFINITY 312 -#define kw_PRESENT 313 -#define kw_PRIVATE 314 -#define kw_PrintableString 315 -#define kw_REAL 316 -#define kw_RELATIVE_OID 317 -#define kw_SEQUENCE 318 -#define kw_SET 319 -#define kw_SIZE 320 -#define kw_STRING 321 -#define kw_SYNTAX 322 -#define kw_T61String 323 -#define kw_TAGS 324 -#define kw_TRUE 325 -#define kw_TYPE_IDENTIFIER 326 -#define kw_TeletexString 327 -#define kw_UNION 328 -#define kw_UNIQUE 329 -#define kw_UNIVERSAL 330 -#define kw_UTCTime 331 -#define kw_UTF8String 332 -#define kw_UniversalString 333 -#define kw_VideotexString 334 -#define kw_VisibleString 335 -#define kw_WITH 336 -#define RANGE 337 -#define EEQUAL 338 -#define ELLIPSIS 339 -#define IDENTIFIER 340 -#define referencename 341 -#define STRING 342 -#define NUMBER 343 -#define YYERRCODE 256 -static const short yylhs[] = { -1, - 0, 56, 56, 56, 56, 57, 57, 58, 58, 60, - 60, 62, 62, 63, 63, 64, 59, 59, 59, 61, - 61, 65, 65, 50, 50, 66, 14, 14, 14, 15, - 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, - 15, 15, 15, 17, 48, 48, 48, 48, 21, 21, - 21, 43, 43, 43, 38, 20, 41, 16, 16, 32, - 23, 22, 49, 49, 24, 24, 25, 26, 26, 27, - 18, 29, 29, 30, 31, 31, 19, 51, 52, 53, - 53, 54, 54, 54, 55, 28, 35, 2, 2, 2, - 2, 3, 3, 3, 67, 33, 34, 34, 34, 34, - 34, 34, 34, 34, 40, 40, 40, 39, 36, 36, - 36, 42, 42, 37, 47, 47, 44, 45, 45, 46, - 46, 46, 4, 4, 5, 5, 5, 5, 5, 12, - 11, 13, 9, 7, 7, 6, 1, 10, 8, -}; -static const short yylen[] = { 2, - 9, 2, 2, 2, 0, 2, 0, 3, 0, 3, - 0, 1, 0, 1, 2, 4, 3, 2, 0, 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, 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, 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, -}; -static const short yydefred[] = { 0, - 0, 0, 0, 115, 0, 0, 122, 0, 0, 0, - 0, 117, 119, 0, 0, 0, 0, 0, 4, 2, - 3, 0, 0, 120, 6, 0, 0, 0, 0, 0, - 18, 0, 0, 1, 0, 0, 0, 17, 0, 0, - 0, 14, 0, 8, 0, 22, 23, 24, 0, 10, - 15, 0, 103, 44, 0, 0, 97, 75, 102, 0, - 62, 0, 0, 100, 0, 0, 98, 76, 99, 104, - 101, 0, 74, 0, 0, 27, 30, 31, 33, 29, - 34, 35, 36, 38, 39, 40, 41, 42, 43, 28, - 72, 73, 37, 32, 96, 0, 21, 0, 0, 0, - 0, 0, 0, 50, 60, 0, 0, 0, 0, 0, - 0, 0, 90, 91, 89, 0, 0, 0, 77, 93, - 94, 0, 16, 0, 0, 105, 0, 0, 0, 52, - 0, 0, 135, 0, 138, 134, 132, 133, 137, 136, - 0, 123, 127, 125, 128, 126, 129, 130, 124, 131, - 139, 0, 61, 64, 66, 0, 0, 0, 69, 0, - 0, 95, 0, 0, 0, 0, 79, 80, 81, 0, - 0, 112, 0, 0, 0, 110, 0, 71, 0, 56, - 0, 0, 0, 48, 51, 65, 0, 68, 87, 0, - 0, 0, 78, 0, 0, 59, 111, 107, 106, 0, - 54, 53, 0, 0, 0, 0, 0, 83, 0, 113, - 55, 47, 46, 45, 85, 0, 114, 84, -}; -static const short yydgoto[] = { 2, - 140, 116, 122, 141, 142, 143, 144, 145, 146, 147, - 148, 149, 150, 75, 76, 77, 78, 79, 80, 81, - 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, - 92, 93, 94, 95, 96, 126, 172, 130, 127, 128, - 131, 173, 132, 151, 8, 9, 5, 104, 109, 39, - 119, 166, 167, 168, 169, 17, 23, 29, 30, 36, - 44, 40, 41, 42, 45, 46, 47, -}; -static const short yysindex[] = { -295, - -74, 0, -289, 0, -216, 23, 0, -61, -289, -221, - -277, 0, 0, -259, -257, -256, -214, 31, 0, 0, - 0, -220, -264, 0, 0, -187, -206, -232, -201, -213, - 0, 34, 25, 0, -258, -251, -258, 0, -188, 40, - -258, 0, 63, 0, -251, 0, 0, 0, -239, 0, - 0, -218, 0, 0, -19, -17, 0, 0, 0, -12, - 0, -184, -212, 0, -106, -111, 0, 0, 0, 0, - 0, 112, 0, -228, -37, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, -242, 0, -74, -10, -223, - -215, -116, -215, 0, 0, -198, 87, -105, -179, 112, - -100, 89, 0, 0, 0, -211, -4, -225, 0, 0, - 0, 112, 0, -210, 112, 0, -238, -13, 91, 0, - 9, 92, 0, -202, 0, 0, 0, 0, 0, 0, - -33, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, -11, 0, 0, 0, -9, 112, 89, 0, -7, - 44, 0, -128, 112, -127, 99, 0, 0, 0, 89, - 101, 0, -2, 89, -4, 0, -283, 0, -200, 0, - -278, -4, -8, 0, 0, 0, 89, 0, 0, 19, - -27, -4, 0, -199, -210, 0, 0, 0, 0, 104, - 0, 0, 105, 106, 107, 24, -115, 0, 109, 0, - 0, 0, 0, 0, 0, -4, 0, 0, -}; -static const short yyrindex[] = { 0, - -123, 0, 28, 0, 0, -110, 0, 0, 28, -245, - 0, 0, 0, 0, 0, 0, -183, 0, 0, 0, - 0, 0, 0, 0, 0, 0, -248, 0, 0, -182, - 0, -41, 0, 0, 97, 0, 0, 0, 0, 0, - 98, 0, 0, 0, -119, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, -30, - 0, 0, 0, 0, -147, 0, 0, 0, 0, 0, - 0, 0, 0, -181, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 169, 0, -49, -40, 0, - 0, 0, 0, 0, 0, -35, 0, 0, 0, 0, - 0, -244, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, - 0, 36, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, -25, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, -20, - 0, 0, 0, -42, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, -15, 0, 0, 0, - 122, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, -}; -static const short yygindex[] = { 0, - -14, 0, 0, -95, 0, 0, 0, 0, 0, 0, - 0, 0, 0, -31, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, -6, -29, -5, 0, -53, - 0, 0, 61, 22, 158, 0, 70, 65, 64, 16, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 128, 0, 0, 133, 0, 0, 0, -}; -#define YYTABLESIZE 509 -static const short yytable[] = { 58, - 58, 108, 118, 58, 63, 63, 3, 184, 63, 116, - 49, 111, 118, 49, 121, 70, 108, 25, 70, 155, - 86, 162, 4, 86, 159, 67, 31, 102, 67, 9, - 177, 113, 181, 26, 177, 175, 177, 5, 120, 14, - 112, 195, 109, 33, 1, 19, 163, 164, 3, 121, - 6, 165, 48, 7, 156, 198, 125, 160, 10, 15, - 201, 129, 11, 12, 19, 18, 20, 21, 22, 176, - 16, 24, 25, 26, 27, 28, 34, 37, 158, 197, - 35, 32, 108, 38, 58, 114, 203, 205, 43, 63, - 170, 19, 5, 174, 49, 26, 208, 49, 50, 70, - 98, 115, 99, 100, 86, 101, 105, 32, 106, 67, - 103, 178, 124, 185, 3, 186, 125, 188, 3, 4, - 218, 107, 196, 109, 129, 187, 102, 157, 118, 171, - 179, 161, 191, 180, 182, 181, 189, 190, 192, 193, - 194, 206, 139, 209, 211, 212, 213, 214, 215, 217, - 216, 116, 118, 74, 7, 13, 12, 11, 20, 63, - 57, 88, 82, 152, 200, 210, 13, 123, 133, 153, - 199, 154, 97, 51, 0, 202, 0, 0, 0, 0, - 0, 0, 0, 0, 134, 0, 135, 0, 0, 0, - 0, 0, 0, 0, 0, 110, 0, 0, 0, 0, - 0, 0, 74, 0, 0, 0, 0, 0, 136, 0, - 0, 0, 0, 107, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 137, 0, 138, 139, 0, 0, 121, - 0, 108, 121, 58, 125, 0, 58, 58, 63, 125, - 0, 63, 63, 49, 25, 0, 49, 49, 70, 207, - 0, 70, 70, 86, 0, 0, 86, 86, 67, 92, - 0, 67, 67, 0, 0, 108, 0, 58, 0, 0, - 0, 0, 63, 0, 0, 0, 133, 49, 0, 0, - 133, 0, 70, 0, 0, 0, 0, 86, 0, 0, - 116, 204, 67, 0, 135, 0, 0, 58, 135, 58, - 117, 0, 63, 183, 63, 0, 0, 49, 0, 49, - 0, 0, 70, 0, 70, 0, 136, 86, 0, 86, - 136, 0, 67, 0, 67, 52, 53, 54, 0, 0, - 55, 137, 0, 138, 139, 137, 0, 138, 139, 0, - 0, 56, 0, 0, 0, 0, 0, 0, 0, 57, - 58, 0, 59, 0, 0, 0, 0, 0, 0, 60, - 0, 0, 0, 0, 0, 61, 0, 62, 63, 0, - 0, 0, 0, 0, 52, 53, 54, 64, 0, 55, - 65, 66, 0, 0, 0, 0, 0, 0, 0, 67, - 56, 0, 0, 68, 69, 70, 0, 71, 57, 58, - 72, 59, 73, 0, 0, 0, 0, 0, 60, 0, - 0, 0, 0, 0, 61, 0, 62, 63, 0, 0, - 0, 0, 0, 0, 0, 0, 64, 0, 0, 65, - 66, 92, 92, 92, 0, 0, 92, 0, 67, 0, - 0, 0, 68, 69, 70, 0, 71, 92, 0, 0, - 0, 73, 0, 0, 0, 92, 92, 0, 92, 0, - 0, 0, 0, 0, 0, 92, 0, 0, 0, 0, - 0, 92, 0, 92, 92, 0, 0, 0, 0, 0, - 0, 0, 0, 92, 0, 0, 92, 92, 0, 0, - 0, 0, 0, 0, 0, 92, 0, 0, 0, 92, - 92, 92, 0, 92, 0, 0, 0, 0, 92, -}; -static const short yycheck[] = { 40, - 41, 44, 40, 44, 40, 41, 123, 41, 44, 59, - 41, 123, 40, 44, 125, 41, 123, 59, 44, 125, - 41, 117, 1, 44, 125, 41, 259, 40, 44, 278, - 44, 260, 44, 278, 44, 274, 44, 283, 281, 261, - 72, 44, 44, 28, 340, 294, 272, 273, 123, 292, - 340, 277, 37, 343, 108, 339, 340, 111, 275, 281, - 339, 340, 40, 125, 324, 343, 324, 324, 283, 308, - 292, 41, 293, 338, 262, 282, 278, 44, 110, 175, - 294, 340, 125, 59, 125, 314, 182, 183, 340, 125, - 122, 340, 338, 125, 125, 340, 192, 286, 59, 125, - 340, 330, 321, 123, 125, 123, 291, 340, 321, 125, - 123, 125, 123, 125, 123, 125, 340, 125, 123, 98, - 216, 320, 125, 125, 340, 157, 40, 307, 40, 340, - 40, 343, 164, 125, 337, 44, 93, 266, 266, 41, - 40, 123, 343, 343, 41, 41, 41, 41, 125, 41, - 266, 275, 125, 91, 338, 59, 59, 340, 278, 307, - 125, 343, 41, 103, 179, 195, 9, 98, 285, 106, - 177, 107, 45, 41, -1, 181, -1, -1, -1, -1, - -1, -1, -1, -1, 301, -1, 303, -1, -1, -1, - -1, -1, -1, -1, -1, 307, -1, -1, -1, -1, - -1, -1, 91, -1, -1, -1, -1, -1, 325, -1, - -1, -1, -1, 320, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 340, -1, 342, 343, -1, -1, 340, - -1, 274, 343, 274, 340, -1, 277, 278, 274, 340, - -1, 277, 278, 274, 286, -1, 277, 278, 274, 277, - -1, 277, 278, 274, -1, -1, 277, 278, 274, 91, - -1, 277, 278, -1, -1, 308, -1, 308, -1, -1, - -1, -1, 308, -1, -1, -1, 285, 308, -1, -1, - 285, -1, 308, -1, -1, -1, -1, 308, -1, -1, - 340, 300, 308, -1, 303, -1, -1, 338, 303, 340, - 338, -1, 338, 337, 340, -1, -1, 338, -1, 340, - -1, -1, 338, -1, 340, -1, 325, 338, -1, 340, - 325, -1, 338, -1, 340, 263, 264, 265, -1, -1, - 268, 340, -1, 342, 343, 340, -1, 342, 343, -1, - -1, 279, -1, -1, -1, -1, -1, -1, -1, 287, - 288, -1, 290, -1, -1, -1, -1, -1, -1, 297, - -1, -1, -1, -1, -1, 303, -1, 305, 306, -1, - -1, -1, -1, -1, 263, 264, 265, 315, -1, 268, - 318, 319, -1, -1, -1, -1, -1, -1, -1, 327, - 279, -1, -1, 331, 332, 333, -1, 335, 287, 288, - 338, 290, 340, -1, -1, -1, -1, -1, 297, -1, - -1, -1, -1, -1, 303, -1, 305, 306, -1, -1, - -1, -1, -1, -1, -1, -1, 315, -1, -1, 318, - 319, 263, 264, 265, -1, -1, 268, -1, 327, -1, - -1, -1, 331, 332, 333, -1, 335, 279, -1, -1, - -1, 340, -1, -1, -1, 287, 288, -1, 290, -1, - -1, -1, -1, -1, -1, 297, -1, -1, -1, -1, - -1, 303, -1, 305, 306, -1, -1, -1, -1, -1, - -1, -1, -1, 315, -1, -1, 318, 319, -1, -1, - -1, -1, -1, -1, -1, 327, -1, -1, -1, 331, - 332, 333, -1, 335, -1, -1, -1, -1, 340, -}; -#define YYFINAL 2 -#ifndef YYDEBUG -#define YYDEBUG 0 -#endif -#define YYMAXTOKEN 343 -#if YYDEBUG -static const char *yyname[] = { - -"end-of-file",0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,"'('","')'",0,0,"','",0,0,0,0,0,0,0,0,0,0,0,0,0,0,"';'",0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"'['",0,"']'",0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"'{'",0,"'}'",0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -"kw_ABSENT","kw_ABSTRACT_SYNTAX","kw_ALL","kw_APPLICATION","kw_AUTOMATIC", -"kw_BEGIN","kw_BIT","kw_BMPString","kw_BOOLEAN","kw_BY","kw_CHARACTER", -"kw_CHOICE","kw_CLASS","kw_COMPONENT","kw_COMPONENTS","kw_CONSTRAINED", -"kw_CONTAINING","kw_DEFAULT","kw_DEFINITIONS","kw_EMBEDDED","kw_ENCODED", -"kw_END","kw_ENUMERATED","kw_EXCEPT","kw_EXPLICIT","kw_EXPORTS", -"kw_EXTENSIBILITY","kw_EXTERNAL","kw_FALSE","kw_FROM","kw_GeneralString", -"kw_GeneralizedTime","kw_GraphicString","kw_IA5String","kw_IDENTIFIER", -"kw_IMPLICIT","kw_IMPLIED","kw_IMPORTS","kw_INCLUDES","kw_INSTANCE", -"kw_INTEGER","kw_INTERSECTION","kw_ISO646String","kw_MAX","kw_MIN", -"kw_MINUS_INFINITY","kw_NULL","kw_NumericString","kw_OBJECT","kw_OCTET","kw_OF", -"kw_OPTIONAL","kw_ObjectDescriptor","kw_PATTERN","kw_PDV","kw_PLUS_INFINITY", -"kw_PRESENT","kw_PRIVATE","kw_PrintableString","kw_REAL","kw_RELATIVE_OID", -"kw_SEQUENCE","kw_SET","kw_SIZE","kw_STRING","kw_SYNTAX","kw_T61String", -"kw_TAGS","kw_TRUE","kw_TYPE_IDENTIFIER","kw_TeletexString","kw_UNION", -"kw_UNIQUE","kw_UNIVERSAL","kw_UTCTime","kw_UTF8String","kw_UniversalString", -"kw_VideotexString","kw_VisibleString","kw_WITH","RANGE","EEQUAL","ELLIPSIS", -"IDENTIFIER","referencename","STRING","NUMBER", -}; -static const char *yyrule[] = { -"$accept : ModuleDefinition", -"ModuleDefinition : IDENTIFIER objid_opt kw_DEFINITIONS TagDefault ExtensionDefault EEQUAL kw_BEGIN ModuleBody kw_END", -"TagDefault : kw_EXPLICIT kw_TAGS", -"TagDefault : kw_IMPLICIT kw_TAGS", -"TagDefault : kw_AUTOMATIC kw_TAGS", -"TagDefault :", -"ExtensionDefault : kw_EXTENSIBILITY kw_IMPLIED", -"ExtensionDefault :", -"ModuleBody : Exports Imports AssignmentList", -"ModuleBody :", -"Imports : kw_IMPORTS SymbolsImported ';'", -"Imports :", -"SymbolsImported : SymbolsFromModuleList", -"SymbolsImported :", -"SymbolsFromModuleList : SymbolsFromModule", -"SymbolsFromModuleList : SymbolsFromModuleList SymbolsFromModule", -"SymbolsFromModule : referencenames kw_FROM IDENTIFIER objid_opt", -"Exports : kw_EXPORTS referencenames ';'", -"Exports : kw_EXPORTS kw_ALL", -"Exports :", -"AssignmentList : Assignment", -"AssignmentList : Assignment AssignmentList", -"Assignment : TypeAssignment", -"Assignment : ValueAssignment", -"referencenames : IDENTIFIER ',' referencenames", -"referencenames : IDENTIFIER", -"TypeAssignment : IDENTIFIER EEQUAL Type", -"Type : BuiltinType", -"Type : ReferencedType", -"Type : ConstrainedType", -"BuiltinType : BitStringType", -"BuiltinType : BooleanType", -"BuiltinType : CharacterStringType", -"BuiltinType : ChoiceType", -"BuiltinType : EnumeratedType", -"BuiltinType : IntegerType", -"BuiltinType : NullType", -"BuiltinType : ObjectIdentifierType", -"BuiltinType : OctetStringType", -"BuiltinType : SequenceType", -"BuiltinType : SequenceOfType", -"BuiltinType : SetType", -"BuiltinType : SetOfType", -"BuiltinType : TaggedType", -"BooleanType : kw_BOOLEAN", -"range : '(' Value RANGE Value ')'", -"range : '(' Value RANGE kw_MAX ')'", -"range : '(' kw_MIN RANGE Value ')'", -"range : '(' Value ')'", -"IntegerType : kw_INTEGER", -"IntegerType : kw_INTEGER range", -"IntegerType : kw_INTEGER '{' NamedNumberList '}'", -"NamedNumberList : NamedNumber", -"NamedNumberList : NamedNumberList ',' NamedNumber", -"NamedNumberList : NamedNumberList ',' ELLIPSIS", -"NamedNumber : IDENTIFIER '(' SignedNumber ')'", -"EnumeratedType : kw_ENUMERATED '{' Enumerations '}'", -"Enumerations : NamedNumberList", -"BitStringType : kw_BIT kw_STRING", -"BitStringType : kw_BIT kw_STRING '{' NamedBitList '}'", -"ObjectIdentifierType : kw_OBJECT kw_IDENTIFIER", -"OctetStringType : kw_OCTET kw_STRING size", -"NullType : kw_NULL", -"size :", -"size : kw_SIZE range", -"SequenceType : kw_SEQUENCE '{' ComponentTypeList '}'", -"SequenceType : kw_SEQUENCE '{' '}'", -"SequenceOfType : kw_SEQUENCE size kw_OF Type", -"SetType : kw_SET '{' ComponentTypeList '}'", -"SetType : kw_SET '{' '}'", -"SetOfType : kw_SET kw_OF Type", -"ChoiceType : kw_CHOICE '{' ComponentTypeList '}'", -"ReferencedType : DefinedType", -"ReferencedType : UsefulType", -"DefinedType : IDENTIFIER", -"UsefulType : kw_GeneralizedTime", -"UsefulType : kw_UTCTime", -"ConstrainedType : Type Constraint", -"Constraint : '(' ConstraintSpec ')'", -"ConstraintSpec : GeneralConstraint", -"GeneralConstraint : ContentsConstraint", -"GeneralConstraint : UserDefinedConstraint", -"ContentsConstraint : kw_CONTAINING Type", -"ContentsConstraint : kw_ENCODED kw_BY Value", -"ContentsConstraint : kw_CONTAINING Type kw_ENCODED kw_BY Value", -"UserDefinedConstraint : kw_CONSTRAINED kw_BY '{' '}'", -"TaggedType : Tag tagenv Type", -"Tag : '[' Class NUMBER ']'", -"Class :", -"Class : kw_UNIVERSAL", -"Class : kw_APPLICATION", -"Class : kw_PRIVATE", -"tagenv :", -"tagenv : kw_EXPLICIT", -"tagenv : kw_IMPLICIT", -"ValueAssignment : IDENTIFIER Type EEQUAL Value", -"CharacterStringType : RestrictedCharactedStringType", -"RestrictedCharactedStringType : kw_GeneralString", -"RestrictedCharactedStringType : kw_TeletexString", -"RestrictedCharactedStringType : kw_UTF8String", -"RestrictedCharactedStringType : kw_PrintableString", -"RestrictedCharactedStringType : kw_VisibleString", -"RestrictedCharactedStringType : kw_IA5String", -"RestrictedCharactedStringType : kw_BMPString", -"RestrictedCharactedStringType : kw_UniversalString", -"ComponentTypeList : ComponentType", -"ComponentTypeList : ComponentTypeList ',' ComponentType", -"ComponentTypeList : ComponentTypeList ',' ELLIPSIS", -"NamedType : IDENTIFIER Type", -"ComponentType : NamedType", -"ComponentType : NamedType kw_OPTIONAL", -"ComponentType : NamedType kw_DEFAULT Value", -"NamedBitList : NamedBit", -"NamedBitList : NamedBitList ',' NamedBit", -"NamedBit : IDENTIFIER '(' NUMBER ')'", -"objid_opt : objid", -"objid_opt :", -"objid : '{' objid_list '}'", -"objid_list :", -"objid_list : objid_element objid_list", -"objid_element : IDENTIFIER '(' NUMBER ')'", -"objid_element : IDENTIFIER", -"objid_element : NUMBER", -"Value : BuiltinValue", -"Value : ReferencedValue", -"BuiltinValue : BooleanValue", -"BuiltinValue : CharacterStringValue", -"BuiltinValue : IntegerValue", -"BuiltinValue : ObjectIdentifierValue", -"BuiltinValue : NullValue", -"ReferencedValue : DefinedValue", -"DefinedValue : Valuereference", -"Valuereference : IDENTIFIER", -"CharacterStringValue : STRING", -"BooleanValue : kw_TRUE", -"BooleanValue : kw_FALSE", -"IntegerValue : SignedNumber", -"SignedNumber : NUMBER", -"NullValue : kw_NULL", -"ObjectIdentifierValue : objid", - -}; -#endif -/* define the initial stack-sizes */ -#ifdef YYSTACKSIZE -#undef YYMAXDEPTH -#define YYMAXDEPTH YYSTACKSIZE -#else -#ifdef YYMAXDEPTH -#define YYSTACKSIZE YYMAXDEPTH -#else -#define YYSTACKSIZE 500 -#define YYMAXDEPTH 500 -#endif -#endif - -#define YYINITSTACKSIZE 500 - -int yydebug; -int yynerrs; - -typedef struct { - unsigned stacksize; - short *s_base; - short *s_mark; - short *s_last; - YYSTYPE *l_base; - YYSTYPE *l_mark; -} YYSTACKDATA; -int yyerrflag; -int yychar; -YYSTYPE yyval; -YYSTYPE yylval; - -/* variables for the parser stack */ -static YYSTACKDATA yystack; - -void -yyerror (const char *s) -{ - lex_error_message ("%s\n", s); -} - -static Type * -new_tag(int tagclass, int tagvalue, int tagenv, Type *oldtype) -{ - Type *t; - if(oldtype->type == TTag && oldtype->tag.tagenv == TE_IMPLICIT) { - t = oldtype; - oldtype = oldtype->subtype; /* XXX */ - } else - t = new_type (TTag); - - t->tag.tagclass = tagclass; - t->tag.tagvalue = tagvalue; - t->tag.tagenv = tagenv; - t->subtype = oldtype; - return t; -} - -static struct objid * -new_objid(const char *label, int value) -{ - struct objid *s; - s = emalloc(sizeof(*s)); - s->label = label; - s->value = value; - s->next = NULL; - return s; -} - -static void -add_oid_to_tail(struct objid *head, struct objid *tail) -{ - struct objid *o; - o = head; - while (o->next) - o = o->next; - o->next = tail; -} - -static Type * -new_type (Typetype tt) -{ - Type *t = ecalloc(1, sizeof(*t)); - t->type = tt; - return t; -} - -static struct constraint_spec * -new_constraint_spec(enum ctype ct) -{ - struct constraint_spec *c = ecalloc(1, sizeof(*c)); - c->ctype = ct; - return c; -} - -static void fix_labels2(Type *t, const char *prefix); -static void fix_labels1(struct memhead *members, const char *prefix) -{ - Member *m; - - if(members == NULL) - return; - ASN1_TAILQ_FOREACH(m, members, members) { - if (asprintf(&m->label, "%s_%s", prefix, m->gen_name) < 0) - errx(1, "malloc"); - if (m->label == NULL) - errx(1, "malloc"); - if(m->type != NULL) - fix_labels2(m->type, m->label); - } -} - -static void fix_labels2(Type *t, const char *prefix) -{ - for(; t; t = t->subtype) - fix_labels1(t->members, prefix); -} - -static void -fix_labels(Symbol *s) -{ - char *p = NULL; - if (asprintf(&p, "choice_%s", s->gen_name) < 0 || p == NULL) - errx(1, "malloc"); - fix_labels2(s->type, p); - free(p); -} - -#if YYDEBUG -#include <stdio.h> /* needed for printf */ -#endif - -#include <stdlib.h> /* needed for malloc, etc */ -#include <string.h> /* needed for memset */ - -/* allocate initial stack or double stack size, up to YYMAXDEPTH */ -static int yygrowstack(YYSTACKDATA *data) -{ - int i; - unsigned newsize; - short *newss; - YYSTYPE *newvs; - - if ((newsize = data->stacksize) == 0) - newsize = YYINITSTACKSIZE; - else if (newsize >= YYMAXDEPTH) - return -1; - else if ((newsize *= 2) > YYMAXDEPTH) - newsize = YYMAXDEPTH; - - i = data->s_mark - data->s_base; - newss = (short *)realloc(data->s_base, newsize * sizeof(*newss)); - if (newss == 0) - return -1; - - data->s_base = newss; - data->s_mark = newss + i; - - newvs = (YYSTYPE *)realloc(data->l_base, newsize * sizeof(*newvs)); - if (newvs == 0) - return -1; - - data->l_base = newvs; - data->l_mark = newvs + i; - - data->stacksize = newsize; - data->s_last = data->s_base + newsize - 1; - return 0; -} - -#if YYPURE || defined(YY_NO_LEAKS) -static void yyfreestack(YYSTACKDATA *data) -{ - free(data->s_base); - free(data->l_base); - memset(data, 0, sizeof(*data)); -} -#else -#define yyfreestack(data) /* nothing */ -#endif - -#define YYABORT goto yyabort -#define YYREJECT goto yyabort -#define YYACCEPT goto yyaccept -#define YYERROR goto yyerrlab - -int -YYPARSE_DECL() -{ - int yym, yyn, yystate; -#if YYDEBUG - const char *yys; - - if ((yys = getenv("YYDEBUG")) != 0) - { - yyn = *yys; - if (yyn >= '0' && yyn <= '9') - yydebug = yyn - '0'; - } -#endif - - yynerrs = 0; - yyerrflag = 0; - yychar = YYEMPTY; - yystate = 0; - -#if YYPURE - memset(&yystack, 0, sizeof(yystack)); -#endif - - if (yystack.s_base == NULL && yygrowstack(&yystack)) goto yyoverflow; - yystack.s_mark = yystack.s_base; - yystack.l_mark = yystack.l_base; - yystate = 0; - *yystack.s_mark = 0; - -yyloop: - if ((yyn = yydefred[yystate]) != 0) goto yyreduce; - if (yychar < 0) - { - if ((yychar = YYLEX) < 0) yychar = 0; -#if YYDEBUG - if (yydebug) - { - yys = 0; - if (yychar <= YYMAXTOKEN) yys = yyname[yychar]; - if (!yys) yys = "illegal-symbol"; - printf("%sdebug: state %d, reading %d (%s)\n", - YYPREFIX, yystate, yychar, yys); - } -#endif - } - if ((yyn = yysindex[yystate]) && (yyn += yychar) >= 0 && - yyn <= YYTABLESIZE && yycheck[yyn] == yychar) - { -#if YYDEBUG - if (yydebug) - printf("%sdebug: state %d, shifting to state %d\n", - YYPREFIX, yystate, yytable[yyn]); -#endif - if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack)) - { - goto yyoverflow; - } - yystate = yytable[yyn]; - *++yystack.s_mark = yytable[yyn]; - *++yystack.l_mark = yylval; - yychar = YYEMPTY; - if (yyerrflag > 0) --yyerrflag; - goto yyloop; - } - if ((yyn = yyrindex[yystate]) && (yyn += yychar) >= 0 && - yyn <= YYTABLESIZE && yycheck[yyn] == yychar) - { - yyn = yytable[yyn]; - goto yyreduce; - } - if (yyerrflag) goto yyinrecovery; - - yyerror("syntax error"); - - goto yyerrlab; - -yyerrlab: - ++yynerrs; - -yyinrecovery: - if (yyerrflag < 3) - { - yyerrflag = 3; - for (;;) - { - if ((yyn = yysindex[*yystack.s_mark]) && (yyn += YYERRCODE) >= 0 && - yyn <= YYTABLESIZE && yycheck[yyn] == YYERRCODE) - { -#if YYDEBUG - if (yydebug) - printf("%sdebug: state %d, error recovery shifting\ - to state %d\n", YYPREFIX, *yystack.s_mark, yytable[yyn]); -#endif - if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack)) - { - goto yyoverflow; - } - yystate = yytable[yyn]; - *++yystack.s_mark = yytable[yyn]; - *++yystack.l_mark = yylval; - goto yyloop; - } - else - { -#if YYDEBUG - if (yydebug) - printf("%sdebug: error recovery discarding state %d\n", - YYPREFIX, *yystack.s_mark); -#endif - if (yystack.s_mark <= yystack.s_base) goto yyabort; - --yystack.s_mark; - --yystack.l_mark; - } - } - } - else - { - if (yychar == 0) goto yyabort; -#if YYDEBUG - if (yydebug) - { - yys = 0; - if (yychar <= YYMAXTOKEN) yys = yyname[yychar]; - if (!yys) yys = "illegal-symbol"; - printf("%sdebug: state %d, error recovery discards token %d (%s)\n", - YYPREFIX, yystate, yychar, yys); - } -#endif - yychar = YYEMPTY; - goto yyloop; - } - -yyreduce: -#if YYDEBUG - if (yydebug) - printf("%sdebug: state %d, reducing by rule %d (%s)\n", - YYPREFIX, yystate, yyn, yyrule[yyn]); -#endif - yym = yylen[yyn]; - if (yym) - yyval = yystack.l_mark[1-yym]; - else - memset(&yyval, 0, sizeof yyval); - switch (yyn) - { -case 1: - { - checkundefined(); - } -break; -case 3: - { lex_error_message("implicit tagging is not supported"); } -break; -case 4: - { lex_error_message("automatic tagging is not supported"); } -break; -case 6: - { lex_error_message("no extensibility options supported"); } -break; -case 16: - { - struct string_list *sl; - for(sl = yystack.l_mark[-3].sl; sl != NULL; sl = sl->next) { - Symbol *s = addsym(sl->string); - s->stype = Stype; - gen_template_import(s); - } - add_import(yystack.l_mark[-1].name); - } -break; -case 17: - { - struct string_list *sl; - for(sl = yystack.l_mark[-1].sl; sl != NULL; sl = sl->next) - add_export(sl->string); - } -break; -case 24: - { - yyval.sl = emalloc(sizeof(*yyval.sl)); - yyval.sl->string = yystack.l_mark[-2].name; - yyval.sl->next = yystack.l_mark[0].sl; - } -break; -case 25: - { - yyval.sl = emalloc(sizeof(*yyval.sl)); - yyval.sl->string = yystack.l_mark[0].name; - yyval.sl->next = NULL; - } -break; -case 26: - { - Symbol *s = addsym (yystack.l_mark[-2].name); - s->stype = Stype; - s->type = yystack.l_mark[0].type; - fix_labels(s); - generate_type (s); - } -break; -case 44: - { - yyval.type = new_tag(ASN1_C_UNIV, UT_Boolean, - TE_EXPLICIT, new_type(TBoolean)); - } -break; -case 45: - { - if(yystack.l_mark[-3].value->type != integervalue) - lex_error_message("Non-integer used in first part of range"); - if(yystack.l_mark[-3].value->type != integervalue) - lex_error_message("Non-integer in second part of range"); - yyval.range = ecalloc(1, sizeof(*yyval.range)); - yyval.range->min = yystack.l_mark[-3].value->u.integervalue; - yyval.range->max = yystack.l_mark[-1].value->u.integervalue; - } -break; -case 46: - { - if(yystack.l_mark[-3].value->type != integervalue) - lex_error_message("Non-integer in first part of range"); - yyval.range = ecalloc(1, sizeof(*yyval.range)); - yyval.range->min = yystack.l_mark[-3].value->u.integervalue; - yyval.range->max = yystack.l_mark[-3].value->u.integervalue - 1; - } -break; -case 47: - { - if(yystack.l_mark[-1].value->type != integervalue) - lex_error_message("Non-integer in second part of range"); - yyval.range = ecalloc(1, sizeof(*yyval.range)); - yyval.range->min = yystack.l_mark[-1].value->u.integervalue + 2; - yyval.range->max = yystack.l_mark[-1].value->u.integervalue; - } -break; -case 48: - { - if(yystack.l_mark[-1].value->type != integervalue) - lex_error_message("Non-integer used in limit"); - yyval.range = ecalloc(1, sizeof(*yyval.range)); - yyval.range->min = yystack.l_mark[-1].value->u.integervalue; - yyval.range->max = yystack.l_mark[-1].value->u.integervalue; - } -break; -case 49: - { - yyval.type = new_tag(ASN1_C_UNIV, UT_Integer, - TE_EXPLICIT, new_type(TInteger)); - } -break; -case 50: - { - yyval.type = new_type(TInteger); - yyval.type->range = yystack.l_mark[0].range; - yyval.type = new_tag(ASN1_C_UNIV, UT_Integer, TE_EXPLICIT, yyval.type); - } -break; -case 51: - { - yyval.type = new_type(TInteger); - yyval.type->members = yystack.l_mark[-1].members; - yyval.type = new_tag(ASN1_C_UNIV, UT_Integer, TE_EXPLICIT, yyval.type); - } -break; -case 52: - { - yyval.members = emalloc(sizeof(*yyval.members)); - ASN1_TAILQ_INIT(yyval.members); - ASN1_TAILQ_INSERT_HEAD(yyval.members, yystack.l_mark[0].member, members); - } -break; -case 53: - { - ASN1_TAILQ_INSERT_TAIL(yystack.l_mark[-2].members, yystack.l_mark[0].member, members); - yyval.members = yystack.l_mark[-2].members; - } -break; -case 54: - { yyval.members = yystack.l_mark[-2].members; } -break; -case 55: - { - yyval.member = emalloc(sizeof(*yyval.member)); - yyval.member->name = yystack.l_mark[-3].name; - yyval.member->gen_name = estrdup(yystack.l_mark[-3].name); - output_name (yyval.member->gen_name); - yyval.member->val = yystack.l_mark[-1].constant; - yyval.member->optional = 0; - yyval.member->ellipsis = 0; - yyval.member->type = NULL; - } -break; -case 56: - { - yyval.type = new_type(TInteger); - yyval.type->members = yystack.l_mark[-1].members; - yyval.type = new_tag(ASN1_C_UNIV, UT_Enumerated, TE_EXPLICIT, yyval.type); - } -break; -case 58: - { - yyval.type = new_type(TBitString); - yyval.type->members = emalloc(sizeof(*yyval.type->members)); - ASN1_TAILQ_INIT(yyval.type->members); - yyval.type = new_tag(ASN1_C_UNIV, UT_BitString, TE_EXPLICIT, yyval.type); - } -break; -case 59: - { - yyval.type = new_type(TBitString); - yyval.type->members = yystack.l_mark[-1].members; - yyval.type = new_tag(ASN1_C_UNIV, UT_BitString, TE_EXPLICIT, yyval.type); - } -break; -case 60: - { - yyval.type = new_tag(ASN1_C_UNIV, UT_OID, - TE_EXPLICIT, new_type(TOID)); - } -break; -case 61: - { - Type *t = new_type(TOctetString); - t->range = yystack.l_mark[0].range; - yyval.type = new_tag(ASN1_C_UNIV, UT_OctetString, - TE_EXPLICIT, t); - } -break; -case 62: - { - yyval.type = new_tag(ASN1_C_UNIV, UT_Null, - TE_EXPLICIT, new_type(TNull)); - } -break; -case 63: - { yyval.range = NULL; } -break; -case 64: - { yyval.range = yystack.l_mark[0].range; } -break; -case 65: - { - yyval.type = new_type(TSequence); - yyval.type->members = yystack.l_mark[-1].members; - yyval.type = new_tag(ASN1_C_UNIV, UT_Sequence, TE_EXPLICIT, yyval.type); - } -break; -case 66: - { - yyval.type = new_type(TSequence); - yyval.type->members = NULL; - yyval.type = new_tag(ASN1_C_UNIV, UT_Sequence, TE_EXPLICIT, yyval.type); - } -break; -case 67: - { - yyval.type = new_type(TSequenceOf); - yyval.type->range = yystack.l_mark[-2].range; - yyval.type->subtype = yystack.l_mark[0].type; - yyval.type = new_tag(ASN1_C_UNIV, UT_Sequence, TE_EXPLICIT, yyval.type); - } -break; -case 68: - { - yyval.type = new_type(TSet); - yyval.type->members = yystack.l_mark[-1].members; - yyval.type = new_tag(ASN1_C_UNIV, UT_Set, TE_EXPLICIT, yyval.type); - } -break; -case 69: - { - yyval.type = new_type(TSet); - yyval.type->members = NULL; - yyval.type = new_tag(ASN1_C_UNIV, UT_Set, TE_EXPLICIT, yyval.type); - } -break; -case 70: - { - yyval.type = new_type(TSetOf); - yyval.type->subtype = yystack.l_mark[0].type; - yyval.type = new_tag(ASN1_C_UNIV, UT_Set, TE_EXPLICIT, yyval.type); - } -break; -case 71: - { - yyval.type = new_type(TChoice); - yyval.type->members = yystack.l_mark[-1].members; - } -break; -case 74: - { - Symbol *s = addsym(yystack.l_mark[0].name); - yyval.type = new_type(TType); - if(s->stype != Stype && s->stype != SUndefined) - lex_error_message ("%s is not a type\n", yystack.l_mark[0].name); - else - yyval.type->symbol = s; - } -break; -case 75: - { - yyval.type = new_tag(ASN1_C_UNIV, UT_GeneralizedTime, - TE_EXPLICIT, new_type(TGeneralizedTime)); - } -break; -case 76: - { - yyval.type = new_tag(ASN1_C_UNIV, UT_UTCTime, - TE_EXPLICIT, new_type(TUTCTime)); - } -break; -case 77: - { - /* if (Constraint.type == contentConstrant) { - assert(Constraint.u.constraint.type == octetstring|bitstring-w/o-NamedBitList); // remember to check type reference too - if (Constraint.u.constraint.type) { - assert((Constraint.u.constraint.type.length % 8) == 0); - } - } - if (Constraint.u.constraint.encoding) { - type == der-oid|ber-oid - } - */ - } -break; -case 78: - { - yyval.constraint_spec = yystack.l_mark[-1].constraint_spec; - } -break; -case 82: - { - yyval.constraint_spec = new_constraint_spec(CT_CONTENTS); - yyval.constraint_spec->u.content.type = yystack.l_mark[0].type; - yyval.constraint_spec->u.content.encoding = NULL; - } -break; -case 83: - { - if (yystack.l_mark[0].value->type != objectidentifiervalue) - lex_error_message("Non-OID used in ENCODED BY constraint"); - yyval.constraint_spec = new_constraint_spec(CT_CONTENTS); - yyval.constraint_spec->u.content.type = NULL; - yyval.constraint_spec->u.content.encoding = yystack.l_mark[0].value; - } -break; -case 84: - { - if (yystack.l_mark[0].value->type != objectidentifiervalue) - lex_error_message("Non-OID used in ENCODED BY constraint"); - yyval.constraint_spec = new_constraint_spec(CT_CONTENTS); - yyval.constraint_spec->u.content.type = yystack.l_mark[-3].type; - yyval.constraint_spec->u.content.encoding = yystack.l_mark[0].value; - } -break; -case 85: - { - yyval.constraint_spec = new_constraint_spec(CT_USER); - } -break; -case 86: - { - yyval.type = new_type(TTag); - yyval.type->tag = yystack.l_mark[-2].tag; - yyval.type->tag.tagenv = yystack.l_mark[-1].constant; - if(yystack.l_mark[0].type->type == TTag && yystack.l_mark[-1].constant == TE_IMPLICIT) { - yyval.type->subtype = yystack.l_mark[0].type->subtype; - free(yystack.l_mark[0].type); - } else - yyval.type->subtype = yystack.l_mark[0].type; - } -break; -case 87: - { - yyval.tag.tagclass = yystack.l_mark[-2].constant; - yyval.tag.tagvalue = yystack.l_mark[-1].constant; - yyval.tag.tagenv = TE_EXPLICIT; - } -break; -case 88: - { - yyval.constant = ASN1_C_CONTEXT; - } -break; -case 89: - { - yyval.constant = ASN1_C_UNIV; - } -break; -case 90: - { - yyval.constant = ASN1_C_APPL; - } -break; -case 91: - { - yyval.constant = ASN1_C_PRIVATE; - } -break; -case 92: - { - yyval.constant = TE_EXPLICIT; - } -break; -case 93: - { - yyval.constant = TE_EXPLICIT; - } -break; -case 94: - { - yyval.constant = TE_IMPLICIT; - } -break; -case 95: - { - Symbol *s; - s = addsym (yystack.l_mark[-3].name); - - s->stype = SValue; - s->value = yystack.l_mark[0].value; - generate_constant (s); - } -break; -case 97: - { - yyval.type = new_tag(ASN1_C_UNIV, UT_GeneralString, - TE_EXPLICIT, new_type(TGeneralString)); - } -break; -case 98: - { - yyval.type = new_tag(ASN1_C_UNIV, UT_TeletexString, - TE_EXPLICIT, new_type(TTeletexString)); - } -break; -case 99: - { - yyval.type = new_tag(ASN1_C_UNIV, UT_UTF8String, - TE_EXPLICIT, new_type(TUTF8String)); - } -break; -case 100: - { - yyval.type = new_tag(ASN1_C_UNIV, UT_PrintableString, - TE_EXPLICIT, new_type(TPrintableString)); - } -break; -case 101: - { - yyval.type = new_tag(ASN1_C_UNIV, UT_VisibleString, - TE_EXPLICIT, new_type(TVisibleString)); - } -break; -case 102: - { - yyval.type = new_tag(ASN1_C_UNIV, UT_IA5String, - TE_EXPLICIT, new_type(TIA5String)); - } -break; -case 103: - { - yyval.type = new_tag(ASN1_C_UNIV, UT_BMPString, - TE_EXPLICIT, new_type(TBMPString)); - } -break; -case 104: - { - yyval.type = new_tag(ASN1_C_UNIV, UT_UniversalString, - TE_EXPLICIT, new_type(TUniversalString)); - } -break; -case 105: - { - yyval.members = emalloc(sizeof(*yyval.members)); - ASN1_TAILQ_INIT(yyval.members); - ASN1_TAILQ_INSERT_HEAD(yyval.members, yystack.l_mark[0].member, members); - } -break; -case 106: - { - ASN1_TAILQ_INSERT_TAIL(yystack.l_mark[-2].members, yystack.l_mark[0].member, members); - yyval.members = yystack.l_mark[-2].members; - } -break; -case 107: - { - struct member *m = ecalloc(1, sizeof(*m)); - m->name = estrdup("..."); - m->gen_name = estrdup("asn1_ellipsis"); - m->ellipsis = 1; - ASN1_TAILQ_INSERT_TAIL(yystack.l_mark[-2].members, m, members); - yyval.members = yystack.l_mark[-2].members; - } -break; -case 108: - { - yyval.member = emalloc(sizeof(*yyval.member)); - yyval.member->name = yystack.l_mark[-1].name; - yyval.member->gen_name = estrdup(yystack.l_mark[-1].name); - output_name (yyval.member->gen_name); - yyval.member->type = yystack.l_mark[0].type; - yyval.member->ellipsis = 0; - } -break; -case 109: - { - yyval.member = yystack.l_mark[0].member; - yyval.member->optional = 0; - yyval.member->defval = NULL; - } -break; -case 110: - { - yyval.member = yystack.l_mark[-1].member; - yyval.member->optional = 1; - yyval.member->defval = NULL; - } -break; -case 111: - { - yyval.member = yystack.l_mark[-2].member; - yyval.member->optional = 0; - yyval.member->defval = yystack.l_mark[0].value; - } -break; -case 112: - { - yyval.members = emalloc(sizeof(*yyval.members)); - ASN1_TAILQ_INIT(yyval.members); - ASN1_TAILQ_INSERT_HEAD(yyval.members, yystack.l_mark[0].member, members); - } -break; -case 113: - { - ASN1_TAILQ_INSERT_TAIL(yystack.l_mark[-2].members, yystack.l_mark[0].member, members); - yyval.members = yystack.l_mark[-2].members; - } -break; -case 114: - { - yyval.member = emalloc(sizeof(*yyval.member)); - yyval.member->name = yystack.l_mark[-3].name; - yyval.member->gen_name = estrdup(yystack.l_mark[-3].name); - output_name (yyval.member->gen_name); - yyval.member->val = yystack.l_mark[-1].constant; - yyval.member->optional = 0; - yyval.member->ellipsis = 0; - yyval.member->type = NULL; - } -break; -case 116: - { yyval.objid = NULL; } -break; -case 117: - { - yyval.objid = yystack.l_mark[-1].objid; - } -break; -case 118: - { - yyval.objid = NULL; - } -break; -case 119: - { - if (yystack.l_mark[0].objid) { - yyval.objid = yystack.l_mark[0].objid; - add_oid_to_tail(yystack.l_mark[0].objid, yystack.l_mark[-1].objid); - } else { - yyval.objid = yystack.l_mark[-1].objid; - } - } -break; -case 120: - { - yyval.objid = new_objid(yystack.l_mark[-3].name, yystack.l_mark[-1].constant); - } -break; -case 121: - { - Symbol *s = addsym(yystack.l_mark[0].name); - if(s->stype != SValue || - s->value->type != objectidentifiervalue) { - lex_error_message("%s is not an object identifier\n", - s->name); - exit(1); - } - yyval.objid = s->value->u.objectidentifiervalue; - } -break; -case 122: - { - yyval.objid = new_objid(NULL, yystack.l_mark[0].constant); - } -break; -case 132: - { - Symbol *s = addsym(yystack.l_mark[0].name); - if(s->stype != SValue) - lex_error_message ("%s is not a value\n", - s->name); - else - yyval.value = s->value; - } -break; -case 133: - { - yyval.value = emalloc(sizeof(*yyval.value)); - yyval.value->type = stringvalue; - yyval.value->u.stringvalue = yystack.l_mark[0].name; - } -break; -case 134: - { - yyval.value = emalloc(sizeof(*yyval.value)); - yyval.value->type = booleanvalue; - yyval.value->u.booleanvalue = 0; - } -break; -case 135: - { - yyval.value = emalloc(sizeof(*yyval.value)); - yyval.value->type = booleanvalue; - yyval.value->u.booleanvalue = 0; - } -break; -case 136: - { - yyval.value = emalloc(sizeof(*yyval.value)); - yyval.value->type = integervalue; - yyval.value->u.integervalue = yystack.l_mark[0].constant; - } -break; -case 138: - { - } -break; -case 139: - { - yyval.value = emalloc(sizeof(*yyval.value)); - yyval.value->type = objectidentifiervalue; - yyval.value->u.objectidentifiervalue = yystack.l_mark[0].objid; - } -break; - } - yystack.s_mark -= yym; - yystate = *yystack.s_mark; - yystack.l_mark -= yym; - yym = yylhs[yyn]; - if (yystate == 0 && yym == 0) - { -#if YYDEBUG - if (yydebug) - printf("%sdebug: after reduction, shifting from state 0 to\ - state %d\n", YYPREFIX, YYFINAL); -#endif - yystate = YYFINAL; - *++yystack.s_mark = YYFINAL; - *++yystack.l_mark = yyval; - if (yychar < 0) - { - if ((yychar = YYLEX) < 0) yychar = 0; -#if YYDEBUG - if (yydebug) - { - yys = 0; - if (yychar <= YYMAXTOKEN) yys = yyname[yychar]; - if (!yys) yys = "illegal-symbol"; - printf("%sdebug: state %d, reading %d (%s)\n", - YYPREFIX, YYFINAL, yychar, yys); - } -#endif - } - if (yychar == 0) goto yyaccept; - goto yyloop; - } - if ((yyn = yygindex[yym]) && (yyn += yystate) >= 0 && - yyn <= YYTABLESIZE && yycheck[yyn] == yystate) - yystate = yytable[yyn]; - else - yystate = yydgoto[yym]; -#if YYDEBUG - if (yydebug) - printf("%sdebug: after reduction, shifting from state %d \ -to state %d\n", YYPREFIX, *yystack.s_mark, yystate); -#endif - if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack)) - { - goto yyoverflow; - } - *++yystack.s_mark = (short) yystate; - *++yystack.l_mark = yyval; - goto yyloop; - -yyoverflow: - yyerror("yacc stack overflow"); - -yyabort: - yyfreestack(&yystack); - return (1); - -yyaccept: - yyfreestack(&yystack); - return (0); -} diff --git a/source4/heimdal/lib/asn1/asn1parse.h b/source4/heimdal/lib/asn1/asn1parse.h deleted file mode 100644 index e576a40ac00..00000000000 --- a/source4/heimdal/lib/asn1/asn1parse.h +++ /dev/null @@ -1,109 +0,0 @@ -#define kw_ABSENT 257 -#define kw_ABSTRACT_SYNTAX 258 -#define kw_ALL 259 -#define kw_APPLICATION 260 -#define kw_AUTOMATIC 261 -#define kw_BEGIN 262 -#define kw_BIT 263 -#define kw_BMPString 264 -#define kw_BOOLEAN 265 -#define kw_BY 266 -#define kw_CHARACTER 267 -#define kw_CHOICE 268 -#define kw_CLASS 269 -#define kw_COMPONENT 270 -#define kw_COMPONENTS 271 -#define kw_CONSTRAINED 272 -#define kw_CONTAINING 273 -#define kw_DEFAULT 274 -#define kw_DEFINITIONS 275 -#define kw_EMBEDDED 276 -#define kw_ENCODED 277 -#define kw_END 278 -#define kw_ENUMERATED 279 -#define kw_EXCEPT 280 -#define kw_EXPLICIT 281 -#define kw_EXPORTS 282 -#define kw_EXTENSIBILITY 283 -#define kw_EXTERNAL 284 -#define kw_FALSE 285 -#define kw_FROM 286 -#define kw_GeneralString 287 -#define kw_GeneralizedTime 288 -#define kw_GraphicString 289 -#define kw_IA5String 290 -#define kw_IDENTIFIER 291 -#define kw_IMPLICIT 292 -#define kw_IMPLIED 293 -#define kw_IMPORTS 294 -#define kw_INCLUDES 295 -#define kw_INSTANCE 296 -#define kw_INTEGER 297 -#define kw_INTERSECTION 298 -#define kw_ISO646String 299 -#define kw_MAX 300 -#define kw_MIN 301 -#define kw_MINUS_INFINITY 302 -#define kw_NULL 303 -#define kw_NumericString 304 -#define kw_OBJECT 305 -#define kw_OCTET 306 -#define kw_OF 307 -#define kw_OPTIONAL 308 -#define kw_ObjectDescriptor 309 -#define kw_PATTERN 310 -#define kw_PDV 311 -#define kw_PLUS_INFINITY 312 -#define kw_PRESENT 313 -#define kw_PRIVATE 314 -#define kw_PrintableString 315 -#define kw_REAL 316 -#define kw_RELATIVE_OID 317 -#define kw_SEQUENCE 318 -#define kw_SET 319 -#define kw_SIZE 320 -#define kw_STRING 321 -#define kw_SYNTAX 322 -#define kw_T61String 323 -#define kw_TAGS 324 -#define kw_TRUE 325 -#define kw_TYPE_IDENTIFIER 326 -#define kw_TeletexString 327 -#define kw_UNION 328 -#define kw_UNIQUE 329 -#define kw_UNIVERSAL 330 -#define kw_UTCTime 331 -#define kw_UTF8String 332 -#define kw_UniversalString 333 -#define kw_VideotexString 334 -#define kw_VisibleString 335 -#define kw_WITH 336 -#define RANGE 337 -#define EEQUAL 338 -#define ELLIPSIS 339 -#define IDENTIFIER 340 -#define referencename 341 -#define STRING 342 -#define NUMBER 343 -#ifdef YYSTYPE -#undef YYSTYPE_IS_DECLARED -#define YYSTYPE_IS_DECLARED 1 -#endif -#ifndef YYSTYPE_IS_DECLARED -#define YYSTYPE_IS_DECLARED 1 -typedef union { - int constant; - struct value *value; - struct range *range; - char *name; - Type *type; - Member *member; - struct objid *objid; - char *defval; - struct string_list *sl; - struct tagtype tag; - struct memhead *members; - struct constraint_spec *constraint_spec; -} YYSTYPE; -#endif /* !YYSTYPE_IS_DECLARED */ -extern YYSTYPE yylval; diff --git a/source4/heimdal/lib/com_err/parse.c b/source4/heimdal/lib/com_err/parse.c deleted file mode 100644 index cbb30765cb5..00000000000 --- a/source4/heimdal/lib/com_err/parse.c +++ /dev/null @@ -1,637 +0,0 @@ -#ifndef lint -static const char yysccsid[] = "@(#)yaccpar 1.9 (Berkeley) 02/21/93"; -#endif - -#define YYBYACC 1 -#define YYMAJOR 1 -#define YYMINOR 9 -#define YYPATCH 20101229 - -#define YYEMPTY (-1) -#define yyclearin (yychar = YYEMPTY) -#define yyerrok (yyerrflag = 0) -#define YYRECOVERING() (yyerrflag != 0) - -#define YYPREFIX "yy" - -#define YYPURE 0 - -/* - * Copyright (c) 1998 - 2000 Kungliga Tekniska Högskolan - * (Royal Institute of Technology, Stockholm, Sweden). - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * 3. Neither the name of the Institute nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - */ - -#include "compile_et.h" -#include "lex.h" - -void yyerror (char *s); -static long name2number(const char *str); - -extern char *yytext; - -/* This is for bison */ - -#if !defined(alloca) && !defined(HAVE_ALLOCA) -#define alloca(x) malloc(x) -#endif - -#define YYMALLOC malloc -#define YYFREE free - -#ifdef YYSTYPE -#undef YYSTYPE_IS_DECLARED -#define YYSTYPE_IS_DECLARED 1 -#endif -#ifndef YYSTYPE_IS_DECLARED -#define YYSTYPE_IS_DECLARED 1 -typedef union { - char *string; - int number; -} YYSTYPE; -#endif /* !YYSTYPE_IS_DECLARED */ -/* compatibility with bison */ -#ifdef YYPARSE_PARAM -/* compatibility with FreeBSD */ -# ifdef YYPARSE_PARAM_TYPE -# define YYPARSE_DECL() yyparse(YYPARSE_PARAM_TYPE YYPARSE_PARAM) -# else -# define YYPARSE_DECL() yyparse(void *YYPARSE_PARAM) -# endif -#else -# define YYPARSE_DECL() yyparse(void) -#endif - -/* Parameters sent to lex. */ -#ifdef YYLEX_PARAM -# define YYLEX_DECL() yylex(void *YYLEX_PARAM) -# define YYLEX yylex(YYLEX_PARAM) -#else -# define YYLEX_DECL() yylex(void) -# define YYLEX yylex() -#endif - -/* Parameters sent to yyerror. */ -#define YYERROR_DECL() yyerror(const char *s) -#define YYERROR_CALL(msg) yyerror(msg) - -extern int YYPARSE_DECL(); - -#define ET 257 -#define INDEX 258 -#define PREFIX 259 -#define EC 260 -#define ID 261 -#define END 262 -#define STRING 263 -#define NUMBER 264 -#define YYERRCODE 256 -static const short yylhs[] = { -1, - 0, 0, 1, 1, 3, 4, 4, 2, 2, 5, - 5, 5, 5, 5, -}; -static const short yylen[] = { 2, - 0, 2, 2, 1, 2, 2, 3, 1, 2, 2, - 2, 1, 4, 1, -}; -static const short yydefred[] = { 0, - 0, 0, 0, 0, 0, 4, 0, 5, 0, 0, - 0, 14, 0, 8, 3, 7, 10, 11, 0, 9, - 0, 13, -}; -static const short yydgoto[] = { 3, - 4, 13, 5, 6, 14, -}; -static const short yysindex[] = { -247, - -263, -258, 0, -256, -245, 0, -250, 0, -249, -246, - -244, 0, -256, 0, 0, 0, 0, 0, -28, 0, - -243, 0, -}; -static const short yyrindex[] = { 18, - 0, 0, 0, 0, 0, 0, -251, 0, 0, 1, - 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, - 0, 0, -}; -static const short yygindex[] = { 0, - 0, 0, 0, 17, 10, -}; -#define YYTABLESIZE 263 -static const short yytable[] = { 7, - 12, 9, 10, 11, 8, 12, 6, 6, 6, 1, - 6, 1, 16, 2, 17, 21, 18, 1, 19, 22, - 2, 15, 20, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 12, 12, - 12, 0, 12, -}; -static const short yycheck[] = { 263, - 0, 258, 259, 260, 263, 262, 258, 259, 260, 257, - 262, 257, 263, 261, 264, 44, 263, 0, 263, 263, - 0, 5, 13, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 258, 259, - 260, -1, 262, -}; -#define YYFINAL 3 -#ifndef YYDEBUG -#define YYDEBUG 0 -#endif -#define YYMAXTOKEN 264 -#if YYDEBUG -static const char *yyname[] = { - -"end-of-file",0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,"','",0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"ET","INDEX","PREFIX","EC", -"ID","END","STRING","NUMBER", -}; -static const char *yyrule[] = { -"$accept : file", -"file :", -"file : header statements", -"header : id et", -"header : et", -"id : ID STRING", -"et : ET STRING", -"et : ET STRING STRING", -"statements : statement", -"statements : statements statement", -"statement : INDEX NUMBER", -"statement : PREFIX STRING", -"statement : PREFIX", -"statement : EC STRING ',' STRING", -"statement : END", - -}; -#endif -/* define the initial stack-sizes */ -#ifdef YYSTACKSIZE -#undef YYMAXDEPTH -#define YYMAXDEPTH YYSTACKSIZE -#else -#ifdef YYMAXDEPTH -#define YYSTACKSIZE YYMAXDEPTH -#else -#define YYSTACKSIZE 500 -#define YYMAXDEPTH 500 -#endif -#endif - -#define YYINITSTACKSIZE 500 - -int yydebug; -int yynerrs; - -typedef struct { - unsigned stacksize; - short *s_base; - short *s_mark; - short *s_last; - YYSTYPE *l_base; - YYSTYPE *l_mark; -} YYSTACKDATA; -int yyerrflag; -int yychar; -YYSTYPE yyval; -YYSTYPE yylval; - -/* variables for the parser stack */ -static YYSTACKDATA yystack; - -static long -name2number(const char *str) -{ - const char *p; - long num = 0; - const char *x = "ABCDEFGHIJKLMNOPQRSTUVWXYZ" - "abcdefghijklmnopqrstuvwxyz0123456789_"; - if(strlen(str) > 4) { - yyerror("table name too long"); - return 0; - } - for(p = str; *p; p++){ - char *q = strchr(x, *p); - if(q == NULL) { - yyerror("invalid character in table name"); - return 0; - } - num = (num << 6) + (q - x) + 1; - } - num <<= 8; - if(num > 0x7fffffff) - num = -(0xffffffff - num + 1); - return num; -} - -void -yyerror (char *s) -{ - _lex_error_message ("%s\n", s); -} - -#if YYDEBUG -#include <stdio.h> /* needed for printf */ -#endif - -#include <stdlib.h> /* needed for malloc, etc */ -#include <string.h> /* needed for memset */ - -/* allocate initial stack or double stack size, up to YYMAXDEPTH */ -static int yygrowstack(YYSTACKDATA *data) -{ - int i; - unsigned newsize; - short *newss; - YYSTYPE *newvs; - - if ((newsize = data->stacksize) == 0) - newsize = YYINITSTACKSIZE; - else if (newsize >= YYMAXDEPTH) - return -1; - else if ((newsize *= 2) > YYMAXDEPTH) - newsize = YYMAXDEPTH; - - i = data->s_mark - data->s_base; - newss = (short *)realloc(data->s_base, newsize * sizeof(*newss)); - if (newss == 0) - return -1; - - data->s_base = newss; - data->s_mark = newss + i; - - newvs = (YYSTYPE *)realloc(data->l_base, newsize * sizeof(*newvs)); - if (newvs == 0) - return -1; - - data->l_base = newvs; - data->l_mark = newvs + i; - - data->stacksize = newsize; - data->s_last = data->s_base + newsize - 1; - return 0; -} - -#if YYPURE || defined(YY_NO_LEAKS) -static void yyfreestack(YYSTACKDATA *data) -{ - free(data->s_base); - free(data->l_base); - memset(data, 0, sizeof(*data)); -} -#else -#define yyfreestack(data) /* nothing */ -#endif - -#define YYABORT goto yyabort -#define YYREJECT goto yyabort -#define YYACCEPT goto yyaccept -#define YYERROR goto yyerrlab - -int -YYPARSE_DECL() -{ - int yym, yyn, yystate; -#if YYDEBUG - const char *yys; - - if ((yys = getenv("YYDEBUG")) != 0) - { - yyn = *yys; - if (yyn >= '0' && yyn <= '9') - yydebug = yyn - '0'; - } -#endif - - yynerrs = 0; - yyerrflag = 0; - yychar = YYEMPTY; - yystate = 0; - -#if YYPURE - memset(&yystack, 0, sizeof(yystack)); -#endif - - if (yystack.s_base == NULL && yygrowstack(&yystack)) goto yyoverflow; - yystack.s_mark = yystack.s_base; - yystack.l_mark = yystack.l_base; - yystate = 0; - *yystack.s_mark = 0; - -yyloop: - if ((yyn = yydefred[yystate]) != 0) goto yyreduce; - if (yychar < 0) - { - if ((yychar = YYLEX) < 0) yychar = 0; -#if YYDEBUG - if (yydebug) - { - yys = 0; - if (yychar <= YYMAXTOKEN) yys = yyname[yychar]; - if (!yys) yys = "illegal-symbol"; - printf("%sdebug: state %d, reading %d (%s)\n", - YYPREFIX, yystate, yychar, yys); - } -#endif - } - if ((yyn = yysindex[yystate]) && (yyn += yychar) >= 0 && - yyn <= YYTABLESIZE && yycheck[yyn] == yychar) - { -#if YYDEBUG - if (yydebug) - printf("%sdebug: state %d, shifting to state %d\n", - YYPREFIX, yystate, yytable[yyn]); -#endif - if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack)) - { - goto yyoverflow; - } - yystate = yytable[yyn]; - *++yystack.s_mark = yytable[yyn]; - *++yystack.l_mark = yylval; - yychar = YYEMPTY; - if (yyerrflag > 0) --yyerrflag; - goto yyloop; - } - if ((yyn = yyrindex[yystate]) && (yyn += yychar) >= 0 && - yyn <= YYTABLESIZE && yycheck[yyn] == yychar) - { - yyn = yytable[yyn]; - goto yyreduce; - } - if (yyerrflag) goto yyinrecovery; - - yyerror("syntax error"); - - goto yyerrlab; - -yyerrlab: - ++yynerrs; - -yyinrecovery: - if (yyerrflag < 3) - { - yyerrflag = 3; - for (;;) - { - if ((yyn = yysindex[*yystack.s_mark]) && (yyn += YYERRCODE) >= 0 && - yyn <= YYTABLESIZE && yycheck[yyn] == YYERRCODE) - { -#if YYDEBUG - if (yydebug) - printf("%sdebug: state %d, error recovery shifting\ - to state %d\n", YYPREFIX, *yystack.s_mark, yytable[yyn]); -#endif - if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack)) - { - goto yyoverflow; - } - yystate = yytable[yyn]; - *++yystack.s_mark = yytable[yyn]; - *++yystack.l_mark = yylval; - goto yyloop; - } - else - { -#if YYDEBUG - if (yydebug) - printf("%sdebug: error recovery discarding state %d\n", - YYPREFIX, *yystack.s_mark); -#endif - if (yystack.s_mark <= yystack.s_base) goto yyabort; - --yystack.s_mark; - --yystack.l_mark; - } - } - } - else - { - if (yychar == 0) goto yyabort; -#if YYDEBUG - if (yydebug) - { - yys = 0; - if (yychar <= YYMAXTOKEN) yys = yyname[yychar]; - if (!yys) yys = "illegal-symbol"; - printf("%sdebug: state %d, error recovery discards token %d (%s)\n", - YYPREFIX, yystate, yychar, yys); - } -#endif - yychar = YYEMPTY; - goto yyloop; - } - -yyreduce: -#if YYDEBUG - if (yydebug) - printf("%sdebug: state %d, reducing by rule %d (%s)\n", - YYPREFIX, yystate, yyn, yyrule[yyn]); -#endif - yym = yylen[yyn]; - if (yym) - yyval = yystack.l_mark[1-yym]; - else - memset(&yyval, 0, sizeof yyval); - switch (yyn) - { -case 5: - { - id_str = yystack.l_mark[0].string; - } -break; -case 6: - { - base_id = name2number(yystack.l_mark[0].string); - strlcpy(name, yystack.l_mark[0].string, sizeof(name)); - free(yystack.l_mark[0].string); - } -break; -case 7: - { - base_id = name2number(yystack.l_mark[-1].string); - strlcpy(name, yystack.l_mark[0].string, sizeof(name)); - free(yystack.l_mark[-1].string); - free(yystack.l_mark[0].string); - } -break; -case 10: - { - number = yystack.l_mark[0].number; - } -break; -case 11: - { - free(prefix); - asprintf (&prefix, "%s_", yystack.l_mark[0].string); - if (prefix == NULL) - errx(1, "malloc"); - free(yystack.l_mark[0].string); - } -break; -case 12: - { - prefix = realloc(prefix, 1); - if (prefix == NULL) - errx(1, "malloc"); - *prefix = '\0'; - } -break; -case 13: - { - struct error_code *ec = malloc(sizeof(*ec)); - - if (ec == NULL) - errx(1, "malloc"); - - ec->next = NULL; - ec->number = number; - if(prefix && *prefix != '\0') { - asprintf (&ec->name, "%s%s", prefix, yystack.l_mark[-2].string); - if (ec->name == NULL) - errx(1, "malloc"); - free(yystack.l_mark[-2].string); - } else - ec->name = yystack.l_mark[-2].string; - ec->string = yystack.l_mark[0].string; - APPEND(codes, ec); - number++; - } -break; -case 14: - { - YYACCEPT; - } -break; - } - yystack.s_mark -= yym; - yystate = *yystack.s_mark; - yystack.l_mark -= yym; - yym = yylhs[yyn]; - if (yystate == 0 && yym == 0) - { -#if YYDEBUG - if (yydebug) - printf("%sdebug: after reduction, shifting from state 0 to\ - state %d\n", YYPREFIX, YYFINAL); -#endif - yystate = YYFINAL; - *++yystack.s_mark = YYFINAL; - *++yystack.l_mark = yyval; - if (yychar < 0) - { - if ((yychar = YYLEX) < 0) yychar = 0; -#if YYDEBUG - if (yydebug) - { - yys = 0; - if (yychar <= YYMAXTOKEN) yys = yyname[yychar]; - if (!yys) yys = "illegal-symbol"; - printf("%sdebug: state %d, reading %d (%s)\n", - YYPREFIX, YYFINAL, yychar, yys); - } -#endif - } - if (yychar == 0) goto yyaccept; - goto yyloop; - } - if ((yyn = yygindex[yym]) && (yyn += yystate) >= 0 && - yyn <= YYTABLESIZE && yycheck[yyn] == yystate) - yystate = yytable[yyn]; - else - yystate = yydgoto[yym]; -#if YYDEBUG - if (yydebug) - printf("%sdebug: after reduction, shifting from state %d \ -to state %d\n", YYPREFIX, *yystack.s_mark, yystate); -#endif - if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack)) - { - goto yyoverflow; - } - *++yystack.s_mark = (short) yystate; - *++yystack.l_mark = yyval; - goto yyloop; - -yyoverflow: - yyerror("yacc stack overflow"); - -yyabort: - yyfreestack(&yystack); - return (1); - -yyaccept: - yyfreestack(&yystack); - return (0); -} diff --git a/source4/heimdal/lib/com_err/parse.h b/source4/heimdal/lib/com_err/parse.h deleted file mode 100644 index 74cf6ed13c1..00000000000 --- a/source4/heimdal/lib/com_err/parse.h +++ /dev/null @@ -1,20 +0,0 @@ -#define ET 257 -#define INDEX 258 -#define PREFIX 259 -#define EC 260 -#define ID 261 -#define END 262 -#define STRING 263 -#define NUMBER 264 -#ifdef YYSTYPE -#undef YYSTYPE_IS_DECLARED -#define YYSTYPE_IS_DECLARED 1 -#endif -#ifndef YYSTYPE_IS_DECLARED -#define YYSTYPE_IS_DECLARED 1 -typedef union { - char *string; - int number; -} YYSTYPE; -#endif /* !YYSTYPE_IS_DECLARED */ -extern YYSTYPE yylval; diff --git a/source4/heimdal/lib/hx509/sel-gram.c b/source4/heimdal/lib/hx509/sel-gram.c deleted file mode 100644 index 73859af1473..00000000000 --- a/source4/heimdal/lib/hx509/sel-gram.c +++ /dev/null @@ -1,589 +0,0 @@ -#ifndef lint -static const char yysccsid[] = "@(#)yaccpar 1.9 (Berkeley) 02/21/93"; -#endif - -#define YYBYACC 1 -#define YYMAJOR 1 -#define YYMINOR 9 -#define YYPATCH 20101229 - -#define YYEMPTY (-1) -#define yyclearin (yychar = YYEMPTY) -#define yyerrok (yyerrflag = 0) -#define YYRECOVERING() (yyerrflag != 0) - -#define YYPREFIX "yy" - -#define YYPURE 0 - -#ifdef HAVE_CONFIG_H -#include <config.h> -#endif -#include <stdio.h> -#include <stdlib.h> -#include <hx_locl.h> - - -#ifdef YYSTYPE -#undef YYSTYPE_IS_DECLARED -#define YYSTYPE_IS_DECLARED 1 -#endif -#ifndef YYSTYPE_IS_DECLARED -#define YYSTYPE_IS_DECLARED 1 -typedef union { - char *string; - struct hx_expr *expr; -} YYSTYPE; -#endif /* !YYSTYPE_IS_DECLARED */ -/* compatibility with bison */ -#ifdef YYPARSE_PARAM -/* compatibility with FreeBSD */ -# ifdef YYPARSE_PARAM_TYPE -# define YYPARSE_DECL() yyparse(YYPARSE_PARAM_TYPE YYPARSE_PARAM) -# else -# define YYPARSE_DECL() yyparse(void *YYPARSE_PARAM) -# endif -#else -# define YYPARSE_DECL() yyparse(void) -#endif - -/* Parameters sent to lex. */ -#ifdef YYLEX_PARAM -# define YYLEX_DECL() yylex(void *YYLEX_PARAM) -# define YYLEX yylex(YYLEX_PARAM) -#else -# define YYLEX_DECL() yylex(void) -# define YYLEX yylex() -#endif - -/* Parameters sent to yyerror. */ -#define YYERROR_DECL() yyerror(const char *s) -#define YYERROR_CALL(msg) yyerror(msg) - -extern int YYPARSE_DECL(); - -#define kw_TRUE 257 -#define kw_FALSE 258 -#define kw_AND 259 -#define kw_OR 260 -#define kw_IN 261 -#define kw_TAILMATCH 262 -#define NUMBER 263 -#define STRING 264 -#define IDENTIFIER 265 -#define YYERRCODE 256 -static const short yylhs[] = { -1, - 0, 1, 1, 1, 1, 1, 1, 1, 4, 4, - 2, 2, 2, 2, 2, 3, 3, 3, 3, 5, - 6, 7, 8, 9, 9, -}; -static const short yylen[] = { 2, - 1, 1, 1, 2, 3, 3, 3, 1, 1, 3, - 4, 4, 3, 5, 3, 1, 1, 1, 1, 1, - 1, 4, 4, 3, 1, -}; -static const short yydefred[] = { 0, - 2, 3, 20, 21, 0, 0, 0, 0, 0, 0, - 8, 0, 16, 17, 18, 19, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, - 0, 0, 0, 0, 15, 13, 0, 0, 0, 22, - 0, 23, 0, 12, 11, 10, 24, 14, -}; -static const short yydgoto[] = { 9, - 10, 11, 12, 28, 13, 14, 15, 16, 31, -}; -static const short yysindex[] = { -33, - 0, 0, 0, 0, -23, -33, -33, -105, 0, -247, - 0, -28, 0, 0, 0, 0, -36, -247, -39, -244, - -33, -33, -26, -36, -38, -37, -22, -16, 0, -19, - -97, -247, -247, -36, 0, 0, -36, -36, -36, 0, - -244, 0, -9, 0, 0, 0, 0, 0, -}; -static const short yyrindex[] = { 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 36, - 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, - 0, 0, 0, 0, 0, 0, -4, 0, 0, -87, - 0, 6, 8, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, -}; -static const short yygindex[] = { 0, - 13, 0, -8, -24, 0, 0, 0, 16, -1, -}; -#define YYTABLESIZE 234 -static const short yytable[] = { 6, - 8, 29, 4, 8, 25, 5, 7, 6, 27, 43, - 8, 21, 22, 34, 46, 36, 17, 20, 18, 19, - 30, 39, 37, 38, 40, 27, 41, 42, 44, 45, - 27, 48, 26, 32, 33, 1, 9, 25, 35, 47, - 0, 0, 0, 4, 0, 0, 5, 0, 6, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 21, - 22, 0, 0, 1, 2, 0, 3, 4, 5, 3, - 4, 5, 23, 24, -}; -static const short yycheck[] = { 33, - 37, 41, 0, 37, 33, 0, 40, 0, 17, 34, - 37, 259, 260, 40, 39, 24, 40, 123, 6, 7, - 265, 44, 61, 61, 41, 34, 46, 125, 37, 38, - 39, 41, 61, 21, 22, 0, 41, 125, 23, 41, - -1, -1, -1, 41, -1, -1, 41, -1, 41, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 259, - 260, -1, -1, 257, 258, -1, 263, 264, 265, 263, - 264, 265, 261, 262, -}; -#define YYFINAL 9 -#ifndef YYDEBUG -#define YYDEBUG 0 -#endif -#define YYMAXTOKEN 265 -#if YYDEBUG -static const char *yyname[] = { - -"end-of-file",0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -"'!'",0,0,0,"'%'",0,0,"'('","')'",0,0,"','",0,"'.'",0,0,0,0,0,0,0,0,0,0,0,0,0,0, -"'='",0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"'{'",0,"'}'",0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,"kw_TRUE","kw_FALSE","kw_AND","kw_OR","kw_IN","kw_TAILMATCH","NUMBER", -"STRING","IDENTIFIER", -}; -static const char *yyrule[] = { -"$accept : start", -"start : expr", -"expr : kw_TRUE", -"expr : kw_FALSE", -"expr : '!' expr", -"expr : expr kw_AND expr", -"expr : expr kw_OR expr", -"expr : '(' expr ')'", -"expr : comp", -"words : word", -"words : word ',' words", -"comp : word '=' '=' word", -"comp : word '!' '=' word", -"comp : word kw_TAILMATCH word", -"comp : word kw_IN '(' words ')'", -"comp : word kw_IN variable", -"word : number", -"word : string", -"word : function", -"word : variable", -"number : NUMBER", -"string : STRING", -"function : IDENTIFIER '(' words ')'", -"variable : '%' '{' variables '}'", -"variables : IDENTIFIER '.' variables", -"variables : IDENTIFIER", - -}; -#endif -/* define the initial stack-sizes */ -#ifdef YYSTACKSIZE -#undef YYMAXDEPTH -#define YYMAXDEPTH YYSTACKSIZE -#else -#ifdef YYMAXDEPTH -#define YYSTACKSIZE YYMAXDEPTH -#else -#define YYSTACKSIZE 500 -#define YYMAXDEPTH 500 -#endif -#endif - -#define YYINITSTACKSIZE 500 - -int yydebug; -int yynerrs; - -typedef struct { - unsigned stacksize; - short *s_base; - short *s_mark; - short *s_last; - YYSTYPE *l_base; - YYSTYPE *l_mark; -} YYSTACKDATA; -int yyerrflag; -int yychar; -YYSTYPE yyval; -YYSTYPE yylval; - -/* variables for the parser stack */ -static YYSTACKDATA yystack; - -#if YYDEBUG -#include <stdio.h> /* needed for printf */ -#endif - -#include <stdlib.h> /* needed for malloc, etc */ -#include <string.h> /* needed for memset */ - -/* allocate initial stack or double stack size, up to YYMAXDEPTH */ -static int yygrowstack(YYSTACKDATA *data) -{ - int i; - unsigned newsize; - short *newss; - YYSTYPE *newvs; - - if ((newsize = data->stacksize) == 0) - newsize = YYINITSTACKSIZE; - else if (newsize >= YYMAXDEPTH) - return -1; - else if ((newsize *= 2) > YYMAXDEPTH) - newsize = YYMAXDEPTH; - - i = data->s_mark - data->s_base; - newss = (short *)realloc(data->s_base, newsize * sizeof(*newss)); - if (newss == 0) - return -1; - - data->s_base = newss; - data->s_mark = newss + i; - - newvs = (YYSTYPE *)realloc(data->l_base, newsize * sizeof(*newvs)); - if (newvs == 0) - return -1; - - data->l_base = newvs; - data->l_mark = newvs + i; - - data->stacksize = newsize; - data->s_last = data->s_base + newsize - 1; - return 0; -} - -#if YYPURE || defined(YY_NO_LEAKS) -static void yyfreestack(YYSTACKDATA *data) -{ - free(data->s_base); - free(data->l_base); - memset(data, 0, sizeof(*data)); -} -#else -#define yyfreestack(data) /* nothing */ -#endif - -#define YYABORT goto yyabort -#define YYREJECT goto yyabort -#define YYACCEPT goto yyaccept -#define YYERROR goto yyerrlab - -int -YYPARSE_DECL() -{ - int yym, yyn, yystate; -#if YYDEBUG - const char *yys; - - if ((yys = getenv("YYDEBUG")) != 0) - { - yyn = *yys; - if (yyn >= '0' && yyn <= '9') - yydebug = yyn - '0'; - } -#endif - - yynerrs = 0; - yyerrflag = 0; - yychar = YYEMPTY; - yystate = 0; - -#if YYPURE - memset(&yystack, 0, sizeof(yystack)); -#endif - - if (yystack.s_base == NULL && yygrowstack(&yystack)) goto yyoverflow; - yystack.s_mark = yystack.s_base; - yystack.l_mark = yystack.l_base; - yystate = 0; - *yystack.s_mark = 0; - -yyloop: - if ((yyn = yydefred[yystate]) != 0) goto yyreduce; - if (yychar < 0) - { - if ((yychar = YYLEX) < 0) yychar = 0; -#if YYDEBUG - if (yydebug) - { - yys = 0; - if (yychar <= YYMAXTOKEN) yys = yyname[yychar]; - if (!yys) yys = "illegal-symbol"; - printf("%sdebug: state %d, reading %d (%s)\n", - YYPREFIX, yystate, yychar, yys); - } -#endif - } - if ((yyn = yysindex[yystate]) && (yyn += yychar) >= 0 && - yyn <= YYTABLESIZE && yycheck[yyn] == yychar) - { -#if YYDEBUG - if (yydebug) - printf("%sdebug: state %d, shifting to state %d\n", - YYPREFIX, yystate, yytable[yyn]); -#endif - if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack)) - { - goto yyoverflow; - } - yystate = yytable[yyn]; - *++yystack.s_mark = yytable[yyn]; - *++yystack.l_mark = yylval; - yychar = YYEMPTY; - if (yyerrflag > 0) --yyerrflag; - goto yyloop; - } - if ((yyn = yyrindex[yystate]) && (yyn += yychar) >= 0 && - yyn <= YYTABLESIZE && yycheck[yyn] == yychar) - { - yyn = yytable[yyn]; - goto yyreduce; - } - if (yyerrflag) goto yyinrecovery; - - yyerror("syntax error"); - - goto yyerrlab; - -yyerrlab: - ++yynerrs; - -yyinrecovery: - if (yyerrflag < 3) - { - yyerrflag = 3; - for (;;) - { - if ((yyn = yysindex[*yystack.s_mark]) && (yyn += YYERRCODE) >= 0 && - yyn <= YYTABLESIZE && yycheck[yyn] == YYERRCODE) - { -#if YYDEBUG - if (yydebug) - printf("%sdebug: state %d, error recovery shifting\ - to state %d\n", YYPREFIX, *yystack.s_mark, yytable[yyn]); -#endif - if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack)) - { - goto yyoverflow; - } - yystate = yytable[yyn]; - *++yystack.s_mark = yytable[yyn]; - *++yystack.l_mark = yylval; - goto yyloop; - } - else - { -#if YYDEBUG - if (yydebug) - printf("%sdebug: error recovery discarding state %d\n", - YYPREFIX, *yystack.s_mark); -#endif - if (yystack.s_mark <= yystack.s_base) goto yyabort; - --yystack.s_mark; - --yystack.l_mark; - } - } - } - else - { - if (yychar == 0) goto yyabort; -#if YYDEBUG - if (yydebug) - { - yys = 0; - if (yychar <= YYMAXTOKEN) yys = yyname[yychar]; - if (!yys) yys = "illegal-symbol"; - printf("%sdebug: state %d, error recovery discards token %d (%s)\n", - YYPREFIX, yystate, yychar, yys); - } -#endif - yychar = YYEMPTY; - goto yyloop; - } - -yyreduce: -#if YYDEBUG - if (yydebug) - printf("%sdebug: state %d, reducing by rule %d (%s)\n", - YYPREFIX, yystate, yyn, yyrule[yyn]); -#endif - yym = yylen[yyn]; - if (yym) - yyval = yystack.l_mark[1-yym]; - else - memset(&yyval, 0, sizeof yyval); - switch (yyn) - { -case 1: - { _hx509_expr_input.expr = yystack.l_mark[0].expr; } -break; -case 2: - { yyval.expr = _hx509_make_expr(op_TRUE, NULL, NULL); } -break; -case 3: - { yyval.expr = _hx509_make_expr(op_FALSE, NULL, NULL); } -break; -case 4: - { yyval.expr = _hx509_make_expr(op_NOT, yystack.l_mark[0].expr, NULL); } -break; -case 5: - { yyval.expr = _hx509_make_expr(op_AND, yystack.l_mark[-2].expr, yystack.l_mark[0].expr); } -break; -case 6: - { yyval.expr = _hx509_make_expr(op_OR, yystack.l_mark[-2].expr, yystack.l_mark[0].expr); } -break; -case 7: - { yyval.expr = yystack.l_mark[-1].expr; } -break; -case 8: - { yyval.expr = _hx509_make_expr(op_COMP, yystack.l_mark[0].expr, NULL); } -break; -case 9: - { yyval.expr = _hx509_make_expr(expr_WORDS, yystack.l_mark[0].expr, NULL); } -break; -case 10: - { yyval.expr = _hx509_make_expr(expr_WORDS, yystack.l_mark[-2].expr, yystack.l_mark[0].expr); } -break; -case 11: - { yyval.expr = _hx509_make_expr(comp_EQ, yystack.l_mark[-3].expr, yystack.l_mark[0].expr); } -break; -case 12: - { yyval.expr = _hx509_make_expr(comp_NE, yystack.l_mark[-3].expr, yystack.l_mark[0].expr); } -break; -case 13: - { yyval.expr = _hx509_make_expr(comp_TAILEQ, yystack.l_mark[-2].expr, yystack.l_mark[0].expr); } -break; -case 14: - { yyval.expr = _hx509_make_expr(comp_IN, yystack.l_mark[-4].expr, yystack.l_mark[-1].expr); } -break; -case 15: - { yyval.expr = _hx509_make_expr(comp_IN, yystack.l_mark[-2].expr, yystack.l_mark[0].expr); } -break; -case 16: - { yyval.expr = yystack.l_mark[0].expr; } -break; -case 17: - { yyval.expr = yystack.l_mark[0].expr; } -break; -case 18: - { yyval.expr = yystack.l_mark[0].expr; } -break; -case 19: - { yyval.expr = yystack.l_mark[0].expr; } -break; -case 20: - { yyval.expr = _hx509_make_expr(expr_NUMBER, yystack.l_mark[0].string, NULL); } -break; -case 21: - { yyval.expr = _hx509_make_expr(expr_STRING, yystack.l_mark[0].string, NULL); } -break; -case 22: - { - yyval.expr = _hx509_make_expr(expr_FUNCTION, yystack.l_mark[-3].string, yystack.l_mark[-1].expr); } -break; -case 23: - { yyval.expr = yystack.l_mark[-1].expr; } -break; -case 24: - { - yyval.expr = _hx509_make_expr(expr_VAR, yystack.l_mark[-2].string, yystack.l_mark[0].expr); } -break; -case 25: - { - yyval.expr = _hx509_make_expr(expr_VAR, yystack.l_mark[0].string, NULL); } -break; - } - yystack.s_mark -= yym; - yystate = *yystack.s_mark; - yystack.l_mark -= yym; - yym = yylhs[yyn]; - if (yystate == 0 && yym == 0) - { -#if YYDEBUG - if (yydebug) - printf("%sdebug: after reduction, shifting from state 0 to\ - state %d\n", YYPREFIX, YYFINAL); -#endif - yystate = YYFINAL; - *++yystack.s_mark = YYFINAL; - *++yystack.l_mark = yyval; - if (yychar < 0) - { - if ((yychar = YYLEX) < 0) yychar = 0; -#if YYDEBUG - if (yydebug) - { - yys = 0; - if (yychar <= YYMAXTOKEN) yys = yyname[yychar]; - if (!yys) yys = "illegal-symbol"; - printf("%sdebug: state %d, reading %d (%s)\n", - YYPREFIX, YYFINAL, yychar, yys); - } -#endif - } - if (yychar == 0) goto yyaccept; - goto yyloop; - } - if ((yyn = yygindex[yym]) && (yyn += yystate) >= 0 && - yyn <= YYTABLESIZE && yycheck[yyn] == yystate) - yystate = yytable[yyn]; - else - yystate = yydgoto[yym]; -#if YYDEBUG - if (yydebug) - printf("%sdebug: after reduction, shifting from state %d \ -to state %d\n", YYPREFIX, *yystack.s_mark, yystate); -#endif - if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack)) - { - goto yyoverflow; - } - *++yystack.s_mark = (short) yystate; - *++yystack.l_mark = yyval; - goto yyloop; - -yyoverflow: - yyerror("yacc stack overflow"); - -yyabort: - yyfreestack(&yystack); - return (1); - -yyaccept: - yyfreestack(&yystack); - return (0); -} diff --git a/source4/heimdal/lib/hx509/sel-gram.h b/source4/heimdal/lib/hx509/sel-gram.h deleted file mode 100644 index 1f687f5b26e..00000000000 --- a/source4/heimdal/lib/hx509/sel-gram.h +++ /dev/null @@ -1,21 +0,0 @@ -#define kw_TRUE 257 -#define kw_FALSE 258 -#define kw_AND 259 -#define kw_OR 260 -#define kw_IN 261 -#define kw_TAILMATCH 262 -#define NUMBER 263 -#define STRING 264 -#define IDENTIFIER 265 -#ifdef YYSTYPE -#undef YYSTYPE_IS_DECLARED -#define YYSTYPE_IS_DECLARED 1 -#endif -#ifndef YYSTYPE_IS_DECLARED -#define YYSTYPE_IS_DECLARED 1 -typedef union { - char *string; - struct hx_expr *expr; -} YYSTYPE; -#endif /* !YYSTYPE_IS_DECLARED */ -extern YYSTYPE yylval; diff --git a/source4/heimdal_build/asn1parse.h b/source4/heimdal_build/asn1parse.h new file mode 100644 index 00000000000..9e43df34248 --- /dev/null +++ b/source4/heimdal_build/asn1parse.h @@ -0,0 +1 @@ +#include "asn1parse.tab.h" diff --git a/source4/heimdal_build/lexyacc.sh b/source4/heimdal_build/lexyacc.sh deleted file mode 100755 index 087caac20c7..00000000000 --- a/source4/heimdal_build/lexyacc.sh +++ /dev/null @@ -1,42 +0,0 @@ -#!/bin/bash - -# rebuild our heimdal lex/yacc files. Run this manually if you update heimdal - -yaccfiles="heimdal/lib/asn1/asn1parse.y heimdal/lib/hx509/sel-gram.y heimdal/lib/com_err/parse.y" - -set -e - -YACC="yacc" - -top=$PWD - -call_yacc() { - yfile="$1" - - echo "Calling $YACC on $yfile" - - dir=$(dirname $yfile) - base=$(basename $yfile .y) - cfile=$base".c" - yfile=$base".y" - - cd $dir - - # -l specified because line directives cause more bother than they solve (issues with lcov finding the source files) - $YACC -l -d $yfile || exit 1 - if [ -r y.tab.h -a -r y.tab.c ];then - cat y.tab.h > $base.h - cat y.tab.c > $base.c - rm -f y.tab.c y.tab.h - elif [ ! -r $base.h -a ! -r $base.c]; then - echo "$base.h nor $base.c generated." - exit 1 - fi - cd $top -} - - - -for yfile in $yaccfiles; do - call_yacc $yfile -done diff --git a/source4/heimdal_build/parse.h b/source4/heimdal_build/parse.h new file mode 100644 index 00000000000..1456fe0488a --- /dev/null +++ b/source4/heimdal_build/parse.h @@ -0,0 +1 @@ +#include "parse.tab.h" diff --git a/source4/heimdal_build/sel-gram.h b/source4/heimdal_build/sel-gram.h new file mode 100644 index 00000000000..bae5fc00044 --- /dev/null +++ b/source4/heimdal_build/sel-gram.h @@ -0,0 +1 @@ +#include "sel-gram.tab.h" diff --git a/source4/heimdal_build/wscript_build b/source4/heimdal_build/wscript_build index 10bf2687d23..3d1464b12c4 100644 --- a/source4/heimdal_build/wscript_build +++ b/source4/heimdal_build/wscript_build @@ -286,7 +286,8 @@ def HEIMDAL_SUBSYSTEM(modname, source, bld.env.HEIMDAL_PICKY_CFLAGS else: samba_cflags = CURRENT_CFLAGS(bld, modname, cflags, - allow_warnings=True) + allow_warnings=True) + \ + bld.env.HEIMDAL_UNPICKY_WNO_STRICT_OVERFLOW_CFLAGS return bld( features = 'c', @@ -825,7 +826,7 @@ if not bld.CONFIG_SET("USING_SYSTEM_HX509"): options="-q -P comment -p") HEIMDAL_LIBRARY('hx509', - 'lib/hx509/ca.c lib/hx509/cert.c lib/hx509/cms.c lib/hx509/collector.c lib/hx509/crypto.c lib/hx509/error.c lib/hx509/env.c lib/hx509/file.c lib/hx509/keyset.c lib/hx509/ks_dir.c lib/hx509/ks_file.c lib/hx509/ks_keychain.c lib/hx509/ks_mem.c lib/hx509/ks_null.c lib/hx509/ks_p11.c lib/hx509/ks_p12.c lib/hx509/lock.c lib/hx509/name.c lib/hx509/peer.c lib/hx509/print.c lib/hx509/req.c lib/hx509/revoke.c lib/hx509/sel.c lib/hx509/hx509_err.c lib/hx509/sel-lex.l lib/hx509/sel-gram.c', + 'lib/hx509/ca.c lib/hx509/cert.c lib/hx509/cms.c lib/hx509/collector.c lib/hx509/crypto.c lib/hx509/error.c lib/hx509/env.c lib/hx509/file.c lib/hx509/keyset.c lib/hx509/ks_dir.c lib/hx509/ks_file.c lib/hx509/ks_keychain.c lib/hx509/ks_mem.c lib/hx509/ks_null.c lib/hx509/ks_p11.c lib/hx509/ks_p12.c lib/hx509/lock.c lib/hx509/name.c lib/hx509/peer.c lib/hx509/print.c lib/hx509/req.c lib/hx509/revoke.c lib/hx509/sel.c lib/hx509/hx509_err.c lib/hx509/sel-lex.l lib/hx509/sel-gram.y', includes='../heimdal/lib/hx509', deps='roken com_err asn1 hcrypto asn1 HEIMDAL_OCSP_ASN1 HEIMDAL_PKCS8_ASN1 HEIMDAL_PKCS9_ASN1 HEIMDAL_PKCS12_ASN1 HEIMDAL_PKCS10_ASN1 wind', vnum='5.0.0', @@ -910,7 +911,7 @@ if not bld.CONFIG_SET('USING_SYSTEM_ASN1_COMPILE'): 'lib/asn1/gen_decode.c lib/asn1/gen_encode.c lib/asn1/gen_free.c ' 'lib/asn1/gen_glue.c lib/asn1/gen_length.c lib/asn1/gen_seq.c ' 'lib/asn1/gen_template.c lib/asn1/hash.c lib/asn1/symbol.c ' - 'lib/asn1/asn1parse.c lib/asn1/lex.l lib/asn1/main.c', + 'lib/asn1/asn1parse.y lib/asn1/lex.l lib/asn1/main.c', use_hostcc=True, use_global_deps=False, includes='../heimdal/lib/asn1', @@ -923,7 +924,7 @@ if not bld.CONFIG_SET('USING_SYSTEM_ASN1_COMPILE'): if not bld.CONFIG_SET('USING_SYSTEM_COMPILE_ET'): HEIMDAL_BINARY('compile_et', - 'lib/com_err/parse.c lib/com_err/lex.l lib/com_err/compile_et.c', + 'lib/com_err/parse.y lib/com_err/lex.l lib/com_err/compile_et.c', use_hostcc=True, use_global_deps=False, includes='../heimdal/lib/com_err', diff --git a/source4/heimdal_build/wscript_configure b/source4/heimdal_build/wscript_configure index 3a3d245d2bb..049ea27b5d5 100644 --- a/source4/heimdal_build/wscript_configure +++ b/source4/heimdal_build/wscript_configure @@ -82,6 +82,12 @@ for flag in heimdal_no_error_flags: if len(bld.env.HEIMDAL_PICKY_CFLAGS) == len(heimdal_no_error_flags): conf.env.enable_heimdal_warnings = True +else: + # Needed on CentOS 7 and Ubuntu 16.04 only for Bison generated + # files when we are not doing strict warnings -> errors + conf.ADD_NAMED_CFLAGS('HEIMDAL_UNPICKY_WNO_STRICT_OVERFLOW_CFLAGS', + '-Wno-strict-overflow', + testflags=True) conf.DEFINE('SAMBA4_USES_HEIMDAL', 1) @@ -11,6 +11,7 @@ sys.path.insert(0, top+"/buildtools/wafsamba") import shutil import wafsamba, samba_dist, samba_git, samba_version, samba_utils from waflib import Options, Scripting, Logs, Context, Errors +from waflib.Tools import bison samba_dist.DIST_DIRS('.') samba_dist.DIST_BLACKLIST('.gitignore .bzrignore source4/selftest/provisions') @@ -245,6 +246,17 @@ def configure(conf): # #line statements in these generated files cause issues for lcov conf.env.FLEXFLAGS += ["--noline"] + Logs.info("Checking for bison") + bison.configure(conf) + if conf.env['BISON']: + conf.CHECK_COMMAND('%s --version | head -n1' % conf.env.BISON[0], + msg='Using bison version', + define=None, + on_target=False) + + # #line statements in these generated files cause issues for lcov + conf.env.BISONFLAGS += ["--no-line"] + if Options.options.with_system_mitkrb5: if not Options.options.with_experimental_mit_ad_dc and \ not Options.options.without_ad_dc: diff --git a/wscript_configure_embedded_heimdal b/wscript_configure_embedded_heimdal index 92a29f71bf8..81cfd856c59 100644 --- a/wscript_configure_embedded_heimdal +++ b/wscript_configure_embedded_heimdal @@ -1,4 +1,7 @@ if not conf.env['FLEX']: conf.fatal("Embedded Heimdal build requires flex but it was not found. Install flex or use --with-system-mitkrb5 or --with-system-heimdalkrb5") +if not conf.env['BISON']: + conf.fatal("Embedded Heimdal build requires bison but it was not found. Install bison or use --with-system-mitkrb5 or --with-system-heimdalkrb5") + conf.RECURSE('source4/heimdal_build') |