diff options
Diffstat (limited to 'lib/asn1/lex.c')
| -rw-r--r-- | lib/asn1/lex.c | 186 | 
1 files changed, 111 insertions, 75 deletions
| diff --git a/lib/asn1/lex.c b/lib/asn1/lex.c index 812bce16acb9..3f2dc92e2775 100644 --- a/lib/asn1/lex.c +++ b/lib/asn1/lex.c @@ -8,7 +8,7 @@  #define FLEX_SCANNER  #define YY_FLEX_MAJOR_VERSION 2  #define YY_FLEX_MINOR_VERSION 5 -#define YY_FLEX_SUBMINOR_VERSION 33 +#define YY_FLEX_SUBMINOR_VERSION 35  #if YY_FLEX_SUBMINOR_VERSION > 0  #define FLEX_BETA  #endif @@ -30,7 +30,7 @@  /* C99 systems have <inttypes.h>. Non-C99 systems may or may not. */ -#if __STDC_VERSION__ >= 199901L +#if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L  /* C99 says to define __STDC_LIMIT_MACROS before including stdint.h,   * if you want the limit (max/min) macros for int types.  @@ -93,11 +93,12 @@ typedef unsigned int flex_uint32_t;  #else	/* ! __cplusplus */ -#if __STDC__ +/* C99 requires __STDC__ to be defined as 1. */ +#if defined (__STDC__)  #define YY_USE_CONST -#endif	/* __STDC__ */ +#endif	/* defined (__STDC__) */  #endif	/* ! __cplusplus */  #ifdef YY_USE_CONST @@ -151,7 +152,12 @@ typedef unsigned int flex_uint32_t;  typedef struct yy_buffer_state *YY_BUFFER_STATE;  #endif -extern int yyleng; +#ifndef YY_TYPEDEF_YY_SIZE_T +#define YY_TYPEDEF_YY_SIZE_T +typedef size_t yy_size_t; +#endif + +extern yy_size_t yyleng;  extern FILE *yyin, *yyout; @@ -177,16 +183,6 @@ extern FILE *yyin, *yyout;  #define unput(c) yyunput( c, (yytext_ptr)  ) -/* The following is because we cannot portably get our hands on size_t - * (without autoconf's help, which isn't available because we want - * flex-generated scanners to compile on their own). - */ - -#ifndef YY_TYPEDEF_YY_SIZE_T -#define YY_TYPEDEF_YY_SIZE_T -typedef unsigned int yy_size_t; -#endif -  #ifndef YY_STRUCT_YY_BUFFER_STATE  #define YY_STRUCT_YY_BUFFER_STATE  struct yy_buffer_state @@ -204,7 +200,7 @@ struct yy_buffer_state  	/* Number of characters read into yy_ch_buf, not including EOB  	 * characters.  	 */ -	int yy_n_chars; +	yy_size_t yy_n_chars;  	/* Whether we "own" the buffer - i.e., we know we created it,  	 * and can realloc() it to grow it, and should free() it to @@ -274,8 +270,8 @@ static YY_BUFFER_STATE * yy_buffer_stack = 0; /**< Stack as an array. */  /* yy_hold_char holds the character lost when yytext is formed. */  static char yy_hold_char; -static int yy_n_chars;		/* number of characters read into yy_ch_buf */ -int yyleng; +static yy_size_t yy_n_chars;		/* number of characters read into yy_ch_buf */ +yy_size_t yyleng;  /* Points to current character in buffer. */  static char *yy_c_buf_p = (char *) 0; @@ -303,7 +299,7 @@ static void yy_init_buffer (YY_BUFFER_STATE b,FILE *file  );  YY_BUFFER_STATE yy_scan_buffer (char *base,yy_size_t size  );  YY_BUFFER_STATE yy_scan_string (yyconst char *yy_str  ); -YY_BUFFER_STATE yy_scan_bytes (yyconst char *bytes,int len  ); +YY_BUFFER_STATE yy_scan_bytes (yyconst char *bytes,yy_size_t len  );  void *yyalloc (yy_size_t  );  void *yyrealloc (void *,yy_size_t  ); @@ -794,39 +790,39 @@ char *yytext;  #line 1 "lex.l"  #line 2 "lex.l"  /* - * Copyright (c) 1997 - 2005 Kungliga Tekniska Högskolan - * (Royal Institute of Technology, Stockholm, Sweden).  - * All rights reserved.  + * Copyright (c) 1997 - 2005 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:  + * 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.  + * 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.  + * 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.  + * 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.  + * 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.   */ -/* $Id: lex.l 18738 2006-10-21 11:57:22Z lha $ */ +/* $Id$ */  #ifdef HAVE_CONFIG_H  #include <config.h> @@ -840,7 +836,7 @@ char *yytext;  #endif  #undef ECHO  #include "symbol.h" -#include "parse.h" +#include "asn1parse.h"  #include "lex.h"  #include "gen_locl.h" @@ -851,7 +847,7 @@ static unsigned lineno = 1;  static void unterminated(const char *, unsigned);  /* This is for broken old lexes (solaris 10 and hpux) */ -#line 855 "lex.c" +#line 851 "lex.c"  #define INITIAL 0 @@ -869,6 +865,35 @@ static void unterminated(const char *, unsigned);  static int yy_init_globals (void ); +/* Accessor methods to globals. +   These are made visible to non-reentrant scanners for convenience. */ + +int yylex_destroy (void ); + +int yyget_debug (void ); + +void yyset_debug (int debug_flag  ); + +YY_EXTRA_TYPE yyget_extra (void ); + +void yyset_extra (YY_EXTRA_TYPE user_defined  ); + +FILE *yyget_in (void ); + +void yyset_in  (FILE * in_str  ); + +FILE *yyget_out (void ); + +void yyset_out  (FILE * out_str  ); + +yy_size_t yyget_leng (void ); + +char *yyget_text (void ); + +int yyget_lineno (void ); + +void yyset_lineno (int line_number  ); +  /* Macros after this point can all be overridden by user definitions in   * section 1.   */ @@ -911,7 +936,7 @@ static int input (void );  /* This used to be an fputs(), but since the string might contain NUL's,   * we now use fwrite().   */ -#define ECHO (void) fwrite( yytext, yyleng, 1, yyout ) +#define ECHO fwrite( yytext, yyleng, 1, yyout )  #endif  /* Gets input and stuffs it into "buf".  number of characters read, or YY_NULL, @@ -922,7 +947,7 @@ static int input (void );  	if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \  		{ \  		int c = '*'; \ -		size_t n; \ +		yy_size_t n; \  		for ( n = 0; n < max_size && \  			     (c = getc( yyin )) != EOF && c != '\n'; ++n ) \  			buf[n] = (char) c; \ @@ -1006,7 +1031,7 @@ YY_DECL  #line 68 "lex.l" -#line 1010 "lex.c" +#line 1035 "lex.c"  	if ( !(yy_init) )  		{ @@ -1512,7 +1537,7 @@ YY_RULE_SETUP  case 85:  YY_RULE_SETUP  #line 153 "lex.l" -{  +{  			    int c, start_lineno = lineno;  			    int f = 0;  			    while((c = input()) != EOF) { @@ -1535,7 +1560,7 @@ YY_RULE_SETUP  case 86:  YY_RULE_SETUP  #line 172 "lex.l" -{  +{  			    int c, start_lineno = lineno;  			    int level = 1;  			    int seen_star = 0; @@ -1562,7 +1587,7 @@ YY_RULE_SETUP  					level++;  					seen_star = seen_slash = 0;  					continue; -				    }  +				    }  				    seen_star = 1;  				    continue;  				} @@ -1579,14 +1604,14 @@ YY_RULE_SETUP  case 87:  YY_RULE_SETUP  #line 212 "lex.l" -{  +{  			    int start_lineno = lineno;  			    int c;  			    char buf[1024];  			    char *p = buf;  			    int f = 0;  			    int skip_ws = 0; -			     +  			    while((c = input()) != EOF) {  				if(isspace(c) && skip_ws) {  				    if(c == '\n') @@ -1594,7 +1619,7 @@ YY_RULE_SETUP  				    continue;  				}  				skip_ws = 0; -				 +  				if(c == '"') {  				    if(f) {  					*p++ = '"'; @@ -1621,7 +1646,7 @@ YY_RULE_SETUP  			    *p++ = '\0';  			    fprintf(stderr, "string -- %s\n", buf);  			    yylval.name = estrdup(buf); -			    return STRING;  +			    return STRING;  			}  	YY_BREAK  case 88: @@ -1630,8 +1655,8 @@ YY_RULE_SETUP  { char *e, *y = yytext;  			  yylval.constant = strtol((const char *)yytext,  						   &e, 0); -			  if(e == y)  -			    error_message("malformed constant (%s)", yytext);  +			  if(e == y) +			    lex_error_message("malformed constant (%s)", yytext);  			  else  			    return NUMBER;  			} @@ -1668,14 +1693,14 @@ YY_RULE_SETUP  case 94:  YY_RULE_SETUP  #line 273 "lex.l" -{ error_message("Ignoring char(%c)\n", *yytext); } +{ lex_error_message("Ignoring char(%c)\n", *yytext); }  	YY_BREAK  case 95:  YY_RULE_SETUP  #line 274 "lex.l"  ECHO;  	YY_BREAK -#line 1679 "lex.c" +#line 1704 "lex.c"  case YY_STATE_EOF(INITIAL):  	yyterminate(); @@ -1861,7 +1886,7 @@ static int yy_get_next_buffer (void)  	else  		{ -			int num_to_read = +			yy_size_t num_to_read =  			YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1;  		while ( num_to_read <= 0 ) @@ -1875,7 +1900,7 @@ static int yy_get_next_buffer (void)  			if ( b->yy_is_our_buffer )  				{ -				int new_size = b->yy_buf_size * 2; +				yy_size_t new_size = b->yy_buf_size * 2;  				if ( new_size <= 0 )  					b->yy_buf_size += b->yy_buf_size / 8; @@ -1930,6 +1955,14 @@ static int yy_get_next_buffer (void)  	else  		ret_val = EOB_ACT_CONTINUE_SCAN; +	if ((yy_size_t) ((yy_n_chars) + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) { +		/* Extend the array by 50%, plus the number we really need. */ +		yy_size_t new_size = (yy_n_chars) + number_to_move + ((yy_n_chars) >> 1); +		YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) yyrealloc((void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf,new_size  ); +		if ( ! YY_CURRENT_BUFFER_LVALUE->yy_ch_buf ) +			YY_FATAL_ERROR( "out of dynamic memory in yy_get_next_buffer()" ); +	} +  	(yy_n_chars) += number_to_move;  	YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] = YY_END_OF_BUFFER_CHAR;  	YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] = YY_END_OF_BUFFER_CHAR; @@ -2008,7 +2041,7 @@ static int yy_get_next_buffer (void)  	if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 )  		{ /* need to shift things up to make room */  		/* +2 for EOB chars. */ -		register int number_to_move = (yy_n_chars) + 2; +		register yy_size_t number_to_move = (yy_n_chars) + 2;  		register char *dest = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[  					YY_CURRENT_BUFFER_LVALUE->yy_buf_size + 2];  		register char *source = @@ -2057,7 +2090,7 @@ static int yy_get_next_buffer (void)  		else  			{ /* need more input */ -			int offset = (yy_c_buf_p) - (yytext_ptr); +			yy_size_t offset = (yy_c_buf_p) - (yytext_ptr);  			++(yy_c_buf_p);  			switch ( yy_get_next_buffer(  ) ) @@ -2333,7 +2366,7 @@ void yypop_buffer_state (void)   */  static void yyensure_buffer_stack (void)  { -	int num_to_alloc; +	yy_size_t num_to_alloc;  	if (!(yy_buffer_stack)) { @@ -2345,7 +2378,9 @@ static void yyensure_buffer_stack (void)  		(yy_buffer_stack) = (struct yy_buffer_state**)yyalloc  								(num_to_alloc * sizeof(struct yy_buffer_state*)  								); -		 +		if ( ! (yy_buffer_stack) ) +			YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" ); +								    		memset((yy_buffer_stack), 0, num_to_alloc * sizeof(struct yy_buffer_state*));  		(yy_buffer_stack_max) = num_to_alloc; @@ -2363,6 +2398,8 @@ static void yyensure_buffer_stack (void)  								((yy_buffer_stack),  								num_to_alloc * sizeof(struct yy_buffer_state*)  								); +		if ( ! (yy_buffer_stack) ) +			YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" );  		/* zero only the new slots.*/  		memset((yy_buffer_stack) + (yy_buffer_stack_max), 0, grow_size * sizeof(struct yy_buffer_state*)); @@ -2407,7 +2444,7 @@ YY_BUFFER_STATE yy_scan_buffer  (char * base, yy_size_t  size )  /** Setup the input buffer state to scan a string. The next call to yylex() will   * scan from a @e copy of @a str. - * @param str a NUL-terminated string to scan + * @param yystr a NUL-terminated string to scan   *    * @return the newly allocated buffer state object.   * @note If you want to scan bytes that may contain NUL values, then use @@ -2426,12 +2463,11 @@ YY_BUFFER_STATE yy_scan_string (yyconst char * yystr )   *    * @return the newly allocated buffer state object.   */ -YY_BUFFER_STATE yy_scan_bytes  (yyconst char * yybytes, int  _yybytes_len ) +YY_BUFFER_STATE yy_scan_bytes  (yyconst char * yybytes, yy_size_t  _yybytes_len )  {  	YY_BUFFER_STATE b;  	char *buf; -	yy_size_t n; -	int i; +	yy_size_t n, i;  	/* Get memory for full buffer, including space for trailing EOB's. */  	n = _yybytes_len + 2; @@ -2513,7 +2549,7 @@ FILE *yyget_out  (void)  /** Get the length of the current token.   *    */ -int yyget_leng  (void) +yy_size_t yyget_leng  (void)  {          return yyleng;  } @@ -2667,14 +2703,14 @@ void yyfree (void * ptr )  #ifndef yywrap /* XXX */  int -yywrap ()  +yywrap ()  {       return 1;  }  #endif  void -error_message (const char *format, ...) +lex_error_message (const char *format, ...)  {      va_list args; @@ -2688,6 +2724,6 @@ error_message (const char *format, ...)  static void  unterminated(const char *type, unsigned start_lineno)  { -    error_message("unterminated %s, possibly started on line %d\n", type, start_lineno); +    lex_error_message("unterminated %s, possibly started on line %d\n", type, start_lineno);  } | 
