]> git.pld-linux.org Git - packages/flex.git/blame - flex-2.5.4a_bufer_overflow.patch
- massive attack, adding Source-md5
[packages/flex.git] / flex-2.5.4a_bufer_overflow.patch
CommitLineData
25439158
KT
1diff -urN flex-2.5.4.orig/initscan.c flex-2.5.4/initscan.c
2--- flex-2.5.4.orig/initscan.c Sat Sep 7 11:02:56 2002
3+++ flex-2.5.4/initscan.c Sat Sep 7 11:05:50 2002
4@@ -11,6 +11,7 @@
5
6 #include <stdio.h>
7 #include <unistd.h>
8+#include <errno.h>
9
10 /* cfront 1.2 defines "c_plusplus" instead of "__cplusplus" */
11 #ifdef c_plusplus
12@@ -1291,7 +1292,15 @@
13 return CHAR;
14
15 #define RETURNNAME \
16+ if(strlen(yytext) < MAXLINE) \
17+ { \
18 strcpy( nmstr, yytext ); \
19+ } \
20+ else \
21+ { \
22+ fputs("Input line too long!\n", stderr); \
23+ exit(1); \
24+ } /* end of else */ \
25 return NAME;
26
27 #define PUT_BACK_STRING(str, start) \
28@@ -1328,7 +1337,7 @@
29 #define OPTION 17
30 #define LINEDIR 18
31
32-#line 1333 "scan.c"
33+#line 1343 "scan.c"
34
35 /* Macros after this point can all be overridden by user definitions in
36 * section 1.
37@@ -1428,9 +1437,20 @@
38 YY_FATAL_ERROR( "input in flex scanner failed" ); \
39 result = n; \
40 } \
41- else if ( ((result = fread( buf, 1, max_size, yyin )) == 0) \
42- && ferror( yyin ) ) \
43- YY_FATAL_ERROR( "input in flex scanner failed" );
44+ else \
45+ { \
46+ errno=0; \
47+ while ( (result = fread(buf, 1, max_size, yyin))==0 && ferror(yyin)) \
48+ { \
49+ if( errno != EINTR) \
50+ { \
51+ YY_FATAL_ERROR( "input in flex scanner failed" ); \
52+ break; \
53+ } \
54+ errno=0; \
55+ clearerr(yyin); \
56+ } \
57+ }
58 #endif
59
60 /* No semi-colon after return; correct usage is to write "yyterminate();" -
61@@ -1482,7 +1502,7 @@
62 register char *yy_cp, *yy_bp;
63 register int yy_act;
64
65-#line 94 "scan.l"
66+#line 102 "scan.l"
67
68 static int bracelevel, didadef, indented_code;
69 static int doing_rule_action = false;
70@@ -1493,7 +1513,7 @@
71 Char nmdef[MAXLINE], myesc();
72
73
74-#line 1498 "scan.c"
75+#line 1519 "scan.c"
76
77 if ( yy_init )
78 {
79@@ -1580,32 +1600,32 @@
80
81 case 1:
82 YY_RULE_SETUP
83-#line 105 "scan.l"
84+#line 113 "scan.l"
85 indented_code = true; BEGIN(CODEBLOCK);
86 YY_BREAK
87 case 2:
88 YY_RULE_SETUP
89-#line 106 "scan.l"
90+#line 114 "scan.l"
91 ACTION_ECHO; yy_push_state( COMMENT );
92 YY_BREAK
93 case 3:
94 YY_RULE_SETUP
95-#line 107 "scan.l"
96+#line 115 "scan.l"
97 yy_push_state( LINEDIR );
98 YY_BREAK
99 case 4:
100 YY_RULE_SETUP
101-#line 108 "scan.l"
102+#line 116 "scan.l"
103 return SCDECL;
104 YY_BREAK
105 case 5:
106 YY_RULE_SETUP
107-#line 109 "scan.l"
108+#line 117 "scan.l"
109 return XSCDECL;
110 YY_BREAK
111 case 6:
112 YY_RULE_SETUP
113-#line 110 "scan.l"
114+#line 118 "scan.l"
115 {
116 ++linenum;
117 line_directive_out( (FILE *) 0, 1 );
118@@ -1615,12 +1635,12 @@
119 YY_BREAK
120 case 7:
121 YY_RULE_SETUP
122-#line 117 "scan.l"
123+#line 125 "scan.l"
124 /* discard */
125 YY_BREAK
126 case 8:
127 YY_RULE_SETUP
128-#line 119 "scan.l"
129+#line 127 "scan.l"
130 {
131 sectnum = 2;
132 bracelevel = 0;
133@@ -1632,95 +1652,103 @@
134 YY_BREAK
135 case 9:
136 YY_RULE_SETUP
137-#line 128 "scan.l"
138+#line 136 "scan.l"
139 yytext_is_array = false; ++linenum;
140 YY_BREAK
141 case 10:
142 YY_RULE_SETUP
143-#line 129 "scan.l"
144+#line 137 "scan.l"
145 yytext_is_array = true; ++linenum;
146 YY_BREAK
147 case 11:
148 YY_RULE_SETUP
149-#line 131 "scan.l"
150+#line 139 "scan.l"
151 BEGIN(OPTION); return OPTION_OP;
152 YY_BREAK
153 case 12:
154 YY_RULE_SETUP
155-#line 133 "scan.l"
156+#line 141 "scan.l"
157 ++linenum; /* ignore */
158 YY_BREAK
159 case 13:
160 YY_RULE_SETUP
161-#line 134 "scan.l"
162+#line 142 "scan.l"
163 ++linenum; /* ignore */
164 YY_BREAK
165 case 14:
166 YY_RULE_SETUP
167-#line 136 "scan.l"
168+#line 144 "scan.l"
169 synerr( _( "unrecognized '%' directive" ) );
170 YY_BREAK
171 case 15:
172 YY_RULE_SETUP
173-#line 138 "scan.l"
174+#line 146 "scan.l"
175+{
176+ if(strlen(yytext) < MAXLINE)
177 {
178 strcpy( nmstr, yytext );
179+ }
180+ else
181+ {
182+ fputs("Input line too long!\n", stderr);
183+ exit(1);
184+ } /* end of else */
185 didadef = false;
186 BEGIN(PICKUPDEF);
187 }
188 YY_BREAK
189 case 16:
190 YY_RULE_SETUP
191-#line 144 "scan.l"
192+#line 160 "scan.l"
193 RETURNNAME;
194 YY_BREAK
195 case 17:
196 YY_RULE_SETUP
197-#line 145 "scan.l"
198+#line 161 "scan.l"
199 ++linenum; /* allows blank lines in section 1 */
200 YY_BREAK
201 case 18:
202 YY_RULE_SETUP
203-#line 146 "scan.l"
204+#line 162 "scan.l"
205 ACTION_ECHO; ++linenum; /* maybe end of comment line */
206 YY_BREAK
207
208
209 case 19:
210 YY_RULE_SETUP
211-#line 151 "scan.l"
212+#line 167 "scan.l"
213 ACTION_ECHO; yy_pop_state();
214 YY_BREAK
215 case 20:
216 YY_RULE_SETUP
217-#line 152 "scan.l"
218+#line 168 "scan.l"
219 ACTION_ECHO;
220 YY_BREAK
221 case 21:
222 YY_RULE_SETUP
223-#line 153 "scan.l"
224+#line 169 "scan.l"
225 ACTION_ECHO;
226 YY_BREAK
227 case 22:
228 YY_RULE_SETUP
229-#line 154 "scan.l"
230+#line 170 "scan.l"
231 ++linenum; ACTION_ECHO;
232 YY_BREAK
233
234
235 case 23:
236 YY_RULE_SETUP
237-#line 158 "scan.l"
238+#line 174 "scan.l"
239 yy_pop_state();
240 YY_BREAK
241 case 24:
242 YY_RULE_SETUP
243-#line 159 "scan.l"
244+#line 175 "scan.l"
245 linenum = myctoi( yytext );
246 YY_BREAK
247 case 25:
248 YY_RULE_SETUP
249-#line 161 "scan.l"
250+#line 177 "scan.l"
251 {
252 flex_free( (void *) infilename );
253 infilename = copy_string( yytext + 1 );
254@@ -1729,24 +1757,24 @@
255 YY_BREAK
256 case 26:
257 YY_RULE_SETUP
258-#line 166 "scan.l"
259+#line 182 "scan.l"
260 /* ignore spurious characters */
261 YY_BREAK
262
263
264 case 27:
265 YY_RULE_SETUP
266-#line 170 "scan.l"
267+#line 186 "scan.l"
268 ++linenum; BEGIN(INITIAL);
269 YY_BREAK
270 case 28:
271 YY_RULE_SETUP
272-#line 172 "scan.l"
273+#line 188 "scan.l"
274 ACTION_ECHO;
275 YY_BREAK
276 case 29:
277 YY_RULE_SETUP
278-#line 174 "scan.l"
279+#line 190 "scan.l"
280 {
281 ++linenum;
282 ACTION_ECHO;
283@@ -1758,14 +1786,24 @@
284
285 case 30:
286 YY_RULE_SETUP
287-#line 184 "scan.l"
288+#line 200 "scan.l"
289 /* separates name and definition */
290 YY_BREAK
291 case 31:
292 YY_RULE_SETUP
293-#line 186 "scan.l"
294+#line 202 "scan.l"
295+{
296+ if(strlen(yytext) < MAXLINE)
297 {
298 strcpy( (char *) nmdef, yytext );
299+ }
300+ else
301+ {
302+ fputs("Input line too long!\n", stderr);
303+ exit(1);
304+ } /* end of else */
305+
306+
307
308 /* Skip trailing whitespace. */
309 for ( i = strlen( (char *) nmdef ) - 1;
310@@ -1781,7 +1819,7 @@
311 YY_BREAK
312 case 32:
313 YY_RULE_SETUP
314-#line 201 "scan.l"
315+#line 227 "scan.l"
316 {
317 if ( ! didadef )
318 synerr( _( "incomplete name definition" ) );
319@@ -1793,94 +1831,94 @@
320
321 case 33:
322 YY_RULE_SETUP
323-#line 211 "scan.l"
324+#line 237 "scan.l"
325 ++linenum; BEGIN(INITIAL);
326 YY_BREAK
327 case 34:
328 YY_RULE_SETUP
329-#line 212 "scan.l"
330+#line 238 "scan.l"
331 option_sense = true;
332 YY_BREAK
333 case 35:
334 YY_RULE_SETUP
335-#line 214 "scan.l"
336+#line 240 "scan.l"
337 return '=';
338 YY_BREAK
339 case 36:
340 YY_RULE_SETUP
341-#line 216 "scan.l"
342+#line 242 "scan.l"
343 option_sense = ! option_sense;
344 YY_BREAK
345 case 37:
346 YY_RULE_SETUP
347-#line 218 "scan.l"
348+#line 244 "scan.l"
349 csize = option_sense ? 128 : 256;
350 YY_BREAK
351 case 38:
352 YY_RULE_SETUP
353-#line 219 "scan.l"
354+#line 245 "scan.l"
355 csize = option_sense ? 256 : 128;
356 YY_BREAK
357 case 39:
358 YY_RULE_SETUP
359-#line 221 "scan.l"
360+#line 247 "scan.l"
361 long_align = option_sense;
362 YY_BREAK
363 case 40:
364 YY_RULE_SETUP
365-#line 222 "scan.l"
366+#line 248 "scan.l"
367 {
368 action_define( "YY_ALWAYS_INTERACTIVE", option_sense );
369 }
370 YY_BREAK
371 case 41:
372 YY_RULE_SETUP
373-#line 225 "scan.l"
374+#line 251 "scan.l"
375 yytext_is_array = option_sense;
376 YY_BREAK
377 case 42:
378 YY_RULE_SETUP
379-#line 226 "scan.l"
380+#line 252 "scan.l"
381 backing_up_report = option_sense;
382 YY_BREAK
383 case 43:
384 YY_RULE_SETUP
385-#line 227 "scan.l"
386+#line 253 "scan.l"
387 interactive = ! option_sense;
388 YY_BREAK
389 case 44:
390 YY_RULE_SETUP
391-#line 228 "scan.l"
392+#line 254 "scan.l"
393 C_plus_plus = option_sense;
394 YY_BREAK
395 case 45:
396 YY_RULE_SETUP
397-#line 229 "scan.l"
398+#line 255 "scan.l"
399 caseins = ! option_sense;
400 YY_BREAK
401 case 46:
402 YY_RULE_SETUP
403-#line 230 "scan.l"
404+#line 256 "scan.l"
405 caseins = option_sense;
406 YY_BREAK
407 case 47:
408 YY_RULE_SETUP
409-#line 231 "scan.l"
410+#line 257 "scan.l"
411 ddebug = option_sense;
412 YY_BREAK
413 case 48:
414 YY_RULE_SETUP
415-#line 232 "scan.l"
416+#line 258 "scan.l"
417 spprdflt = ! option_sense;
418 YY_BREAK
419 case 49:
420 YY_RULE_SETUP
421-#line 233 "scan.l"
422+#line 259 "scan.l"
423 useecs = option_sense;
424 YY_BREAK
425 case 50:
426 YY_RULE_SETUP
427-#line 234 "scan.l"
428+#line 260 "scan.l"
429 {
430 useecs = usemecs = false;
431 use_read = fullspd = true;
432@@ -1888,7 +1926,7 @@
433 YY_BREAK
434 case 51:
435 YY_RULE_SETUP
436-#line 238 "scan.l"
437+#line 264 "scan.l"
438 {
439 useecs = usemecs = false;
440 use_read = fulltbl = true;
441@@ -1896,22 +1934,22 @@
442 YY_BREAK
443 case 52:
444 YY_RULE_SETUP
445-#line 242 "scan.l"
446+#line 268 "scan.l"
447 ACTION_IFDEF("YY_NO_INPUT", ! option_sense);
448 YY_BREAK
449 case 53:
450 YY_RULE_SETUP
451-#line 243 "scan.l"
452+#line 269 "scan.l"
453 interactive = option_sense;
454 YY_BREAK
455 case 54:
456 YY_RULE_SETUP
457-#line 244 "scan.l"
458+#line 270 "scan.l"
459 lex_compat = option_sense;
460 YY_BREAK
461 case 55:
462 YY_RULE_SETUP
463-#line 245 "scan.l"
464+#line 271 "scan.l"
465 {
466 action_define( "YY_MAIN", option_sense );
467 do_yywrap = ! option_sense;
468@@ -1919,138 +1957,146 @@
469 YY_BREAK
470 case 56:
471 YY_RULE_SETUP
472-#line 249 "scan.l"
473+#line 275 "scan.l"
474 usemecs = option_sense;
475 YY_BREAK
476 case 57:
477 YY_RULE_SETUP
478-#line 250 "scan.l"
479+#line 276 "scan.l"
480 {
481 action_define( "YY_NEVER_INTERACTIVE", option_sense );
482 }
483 YY_BREAK
484 case 58:
485 YY_RULE_SETUP
486-#line 253 "scan.l"
487+#line 279 "scan.l"
488 performance_report += option_sense ? 1 : -1;
489 YY_BREAK
490 case 59:
491 YY_RULE_SETUP
492-#line 254 "scan.l"
493+#line 280 "scan.l"
494 yytext_is_array = ! option_sense;
495 YY_BREAK
496 case 60:
497 YY_RULE_SETUP
498-#line 255 "scan.l"
499+#line 281 "scan.l"
500 use_read = option_sense;
501 YY_BREAK
502 case 61:
503 YY_RULE_SETUP
504-#line 256 "scan.l"
505+#line 282 "scan.l"
506 reject_really_used = option_sense;
507 YY_BREAK
508 case 62:
509 YY_RULE_SETUP
510-#line 257 "scan.l"
511+#line 283 "scan.l"
512 action_define( "YY_STACK_USED", option_sense );
513 YY_BREAK
514 case 63:
515 YY_RULE_SETUP
516-#line 258 "scan.l"
517+#line 284 "scan.l"
518 do_stdinit = option_sense;
519 YY_BREAK
520 case 64:
521 YY_RULE_SETUP
522-#line 259 "scan.l"
523+#line 285 "scan.l"
524 use_stdout = option_sense;
525 YY_BREAK
526 case 65:
527 YY_RULE_SETUP
528-#line 260 "scan.l"
529+#line 286 "scan.l"
530 ACTION_IFDEF("YY_NO_UNPUT", ! option_sense);
531 YY_BREAK
532 case 66:
533 YY_RULE_SETUP
534-#line 261 "scan.l"
535+#line 287 "scan.l"
536 printstats = option_sense;
537 YY_BREAK
538 case 67:
539 YY_RULE_SETUP
540-#line 262 "scan.l"
541+#line 288 "scan.l"
542 nowarn = ! option_sense;
543 YY_BREAK
544 case 68:
545 YY_RULE_SETUP
546-#line 263 "scan.l"
547+#line 289 "scan.l"
548 do_yylineno = option_sense;
549 YY_BREAK
550 case 69:
551 YY_RULE_SETUP
552-#line 264 "scan.l"
553+#line 290 "scan.l"
554 yymore_really_used = option_sense;
555 YY_BREAK
556 case 70:
557 YY_RULE_SETUP
558-#line 265 "scan.l"
559+#line 291 "scan.l"
560 do_yywrap = option_sense;
561 YY_BREAK
562 case 71:
563 YY_RULE_SETUP
564-#line 267 "scan.l"
565+#line 293 "scan.l"
566 ACTION_IFDEF("YY_NO_PUSH_STATE", ! option_sense);
567 YY_BREAK
568 case 72:
569 YY_RULE_SETUP
570-#line 268 "scan.l"
571+#line 294 "scan.l"
572 ACTION_IFDEF("YY_NO_POP_STATE", ! option_sense);
573 YY_BREAK
574 case 73:
575 YY_RULE_SETUP
576-#line 269 "scan.l"
577+#line 295 "scan.l"
578 ACTION_IFDEF("YY_NO_TOP_STATE", ! option_sense);
579 YY_BREAK
580 case 74:
581 YY_RULE_SETUP
582-#line 271 "scan.l"
583+#line 297 "scan.l"
584 ACTION_IFDEF("YY_NO_SCAN_BUFFER", ! option_sense);
585 YY_BREAK
586 case 75:
587 YY_RULE_SETUP
588-#line 272 "scan.l"
589+#line 298 "scan.l"
590 ACTION_IFDEF("YY_NO_SCAN_BYTES", ! option_sense);
591 YY_BREAK
592 case 76:
593 YY_RULE_SETUP
594-#line 273 "scan.l"
595+#line 299 "scan.l"
596 ACTION_IFDEF("YY_NO_SCAN_STRING", ! option_sense);
597 YY_BREAK
598 case 77:
599 YY_RULE_SETUP
600-#line 275 "scan.l"
601+#line 301 "scan.l"
602 return OPT_OUTFILE;
603 YY_BREAK
604 case 78:
605 YY_RULE_SETUP
606-#line 276 "scan.l"
607+#line 302 "scan.l"
608 return OPT_PREFIX;
609 YY_BREAK
610 case 79:
611 YY_RULE_SETUP
612-#line 277 "scan.l"
613+#line 303 "scan.l"
614 return OPT_YYCLASS;
615 YY_BREAK
616 case 80:
617 YY_RULE_SETUP
618-#line 279 "scan.l"
619+#line 305 "scan.l"
620+{
621+ if(strlen(yytext + 1 ) < MAXLINE)
622 {
623 strcpy( nmstr, yytext + 1 );
624+ }
625+ else
626+ {
627+ fputs("Input line too long!\n", stderr);
628+ exit(1);
629+ } /* end of else */
630 nmstr[strlen( nmstr ) - 1] = '\0';
631 return NAME;
632 }
633 YY_BREAK
634 case 81:
635 YY_RULE_SETUP
636-#line 285 "scan.l"
637+#line 319 "scan.l"
638 {
639 format_synerr( _( "unrecognized %%option: %s" ),
640 yytext );
641@@ -2060,28 +2106,28 @@
642
643 case 82:
644 YY_RULE_SETUP
645-#line 292 "scan.l"
646+#line 326 "scan.l"
647 ++linenum; BEGIN(INITIAL);
648 YY_BREAK
649
650 case 83:
651 YY_RULE_SETUP
652-#line 296 "scan.l"
653+#line 330 "scan.l"
654 ++bracelevel; yyless( 2 ); /* eat only %{ */
655 YY_BREAK
656 case 84:
657 YY_RULE_SETUP
658-#line 297 "scan.l"
659+#line 331 "scan.l"
660 --bracelevel; yyless( 2 ); /* eat only %} */
661 YY_BREAK
662 case 85:
663 YY_RULE_SETUP
664-#line 299 "scan.l"
665+#line 333 "scan.l"
666 ACTION_ECHO; /* indented code in prolog */
667 YY_BREAK
668 case 86:
669 YY_RULE_SETUP
670-#line 301 "scan.l"
671+#line 335 "scan.l"
672 { /* non-indented code */
673 if ( bracelevel <= 0 )
674 { /* not in %{ ... %} */
675@@ -2096,16 +2142,16 @@
676 YY_BREAK
677 case 87:
678 YY_RULE_SETUP
679-#line 313 "scan.l"
680+#line 347 "scan.l"
681 ACTION_ECHO;
682 YY_BREAK
683 case 88:
684 YY_RULE_SETUP
685-#line 314 "scan.l"
686+#line 348 "scan.l"
687 ++linenum; ACTION_ECHO;
688 YY_BREAK
689 case YY_STATE_EOF(SECT2PROLOG):
690-#line 316 "scan.l"
691+#line 350 "scan.l"
692 {
693 mark_prolog();
694 sectnum = 0;
695@@ -2116,12 +2162,12 @@
696
697 case 89:
698 YY_RULE_SETUP
699-#line 324 "scan.l"
700+#line 358 "scan.l"
701 ++linenum; /* allow blank lines in section 2 */
702 YY_BREAK
703 case 90:
704 YY_RULE_SETUP
705-#line 326 "scan.l"
706+#line 360 "scan.l"
707 {
708 indented_code = false;
709 doing_codeblock = true;
710@@ -2131,17 +2177,17 @@
711 YY_BREAK
712 case 91:
713 YY_RULE_SETUP
714-#line 333 "scan.l"
715+#line 367 "scan.l"
716 BEGIN(SC); return '<';
717 YY_BREAK
718 case 92:
719 YY_RULE_SETUP
720-#line 334 "scan.l"
721+#line 368 "scan.l"
722 return '^';
723 YY_BREAK
724 case 93:
725 YY_RULE_SETUP
726-#line 335 "scan.l"
727+#line 369 "scan.l"
728 BEGIN(QUOTE); return '"';
729 YY_BREAK
730 case 94:
731@@ -2149,7 +2195,7 @@
732 yy_c_buf_p = yy_cp = yy_bp + 1;
733 YY_DO_BEFORE_ACTION; /* set up yytext again */
734 YY_RULE_SETUP
735-#line 336 "scan.l"
736+#line 370 "scan.l"
737 BEGIN(NUM); return '{';
738 YY_BREAK
739 case 95:
740@@ -2157,12 +2203,12 @@
741 yy_c_buf_p = yy_cp = yy_bp + 1;
742 YY_DO_BEFORE_ACTION; /* set up yytext again */
743 YY_RULE_SETUP
744-#line 337 "scan.l"
745+#line 371 "scan.l"
746 return '$';
747 YY_BREAK
748 case 96:
749 YY_RULE_SETUP
750-#line 339 "scan.l"
751+#line 373 "scan.l"
752 {
753 bracelevel = 1;
754 BEGIN(PERCENT_BRACE_ACTION);
755@@ -2177,12 +2223,12 @@
756 YY_BREAK
757 case 97:
758 YY_RULE_SETUP
759-#line 350 "scan.l"
760+#line 384 "scan.l"
761 continued_action = true; ++linenum; return '\n';
762 YY_BREAK
763 case 98:
764 YY_RULE_SETUP
765-#line 352 "scan.l"
766+#line 386 "scan.l"
767 {
768 yyless( yyleng - 2 ); /* put back '/', '*' */
769 bracelevel = 0;
770@@ -2192,12 +2238,12 @@
771 YY_BREAK
772 case 99:
773 YY_RULE_SETUP
774-#line 359 "scan.l"
775+#line 393 "scan.l"
776 /* allow indented rules */
777 YY_BREAK
778 case 100:
779 YY_RULE_SETUP
780-#line 361 "scan.l"
781+#line 395 "scan.l"
782 {
783 /* This rule is separate from the one below because
784 * otherwise we get variable trailing context, so
785@@ -2217,7 +2263,7 @@
786 YY_BREAK
787 case 101:
788 YY_RULE_SETUP
789-#line 378 "scan.l"
790+#line 412 "scan.l"
791 {
792 bracelevel = 0;
793 continued_action = false;
794@@ -2233,15 +2279,15 @@
795 }
796 YY_BREAK
797 case 102:
798-#line 393 "scan.l"
799+#line 427 "scan.l"
800 case 103:
801 YY_RULE_SETUP
802-#line 393 "scan.l"
803+#line 427 "scan.l"
804 return EOF_OP;
805 YY_BREAK
806 case 104:
807 YY_RULE_SETUP
808-#line 395 "scan.l"
809+#line 429 "scan.l"
810 {
811 sectnum = 3;
812 BEGIN(SECT3);
813@@ -2250,11 +2296,19 @@
814 YY_BREAK
815 case 105:
816 YY_RULE_SETUP
817-#line 401 "scan.l"
818+#line 435 "scan.l"
819 {
820 int cclval;
821
822+ if(strlen(yytext ) < MAXLINE)
823+ {
824 strcpy( nmstr, yytext );
825+ }
826+ else
827+ {
828+ fputs("Input line too long!\n", stderr);
829+ exit(1);
830+ }
831
832 /* Check to see if we've already encountered this
833 * ccl.
834@@ -2287,12 +2341,20 @@
835 YY_BREAK
836 case 106:
837 YY_RULE_SETUP
838-#line 435 "scan.l"
839+#line 477 "scan.l"
840 {
841 register Char *nmdefptr;
842 Char *ndlookup();
843
844+ if(strlen(yytext + 1 ) < MAXLINE)
845+ {
846 strcpy( nmstr, yytext + 1 );
847+ }
848+ else
849+ {
850+ fputs("Input line too long!\n", stderr);
851+ exit(1);
852+ } /* end of else */
853 nmstr[yyleng - 2] = '\0'; /* chop trailing brace */
854
855 if ( (nmdefptr = ndlookup( nmstr )) == 0 )
856@@ -2324,24 +2386,24 @@
857 YY_BREAK
858 case 107:
859 YY_RULE_SETUP
860-#line 469 "scan.l"
861+#line 519 "scan.l"
862 return (unsigned char) yytext[0];
863 YY_BREAK
864 case 108:
865 YY_RULE_SETUP
866-#line 470 "scan.l"
867+#line 520 "scan.l"
868 RETURNCHAR;
869 YY_BREAK
870
871
872 case 109:
873 YY_RULE_SETUP
874-#line 475 "scan.l"
875+#line 525 "scan.l"
876 return (unsigned char) yytext[0];
877 YY_BREAK
878 case 110:
879 YY_RULE_SETUP
880-#line 476 "scan.l"
881+#line 526 "scan.l"
882 BEGIN(SECT2); return '>';
883 YY_BREAK
884 case 111:
885@@ -2349,17 +2411,17 @@
886 yy_c_buf_p = yy_cp = yy_bp + 1;
887 YY_DO_BEFORE_ACTION; /* set up yytext again */
888 YY_RULE_SETUP
889-#line 477 "scan.l"
890+#line 527 "scan.l"
891 BEGIN(CARETISBOL); return '>';
892 YY_BREAK
893 case 112:
894 YY_RULE_SETUP
895-#line 478 "scan.l"
896+#line 528 "scan.l"
897 RETURNNAME;
898 YY_BREAK
899 case 113:
900 YY_RULE_SETUP
901-#line 479 "scan.l"
902+#line 529 "scan.l"
903 {
904 format_synerr( _( "bad <start condition>: %s" ),
905 yytext );
906@@ -2368,23 +2430,23 @@
907
908 case 114:
909 YY_RULE_SETUP
910-#line 485 "scan.l"
911+#line 535 "scan.l"
912 BEGIN(SECT2); return '^';
913 YY_BREAK
914
915 case 115:
916 YY_RULE_SETUP
917-#line 489 "scan.l"
918+#line 539 "scan.l"
919 RETURNCHAR;
920 YY_BREAK
921 case 116:
922 YY_RULE_SETUP
923-#line 490 "scan.l"
924+#line 540 "scan.l"
925 BEGIN(SECT2); return '"';
926 YY_BREAK
927 case 117:
928 YY_RULE_SETUP
929-#line 492 "scan.l"
930+#line 542 "scan.l"
931 {
932 synerr( _( "missing quote" ) );
933 BEGIN(SECT2);
934@@ -2399,7 +2461,7 @@
935 yy_c_buf_p = yy_cp = yy_bp + 1;
936 YY_DO_BEFORE_ACTION; /* set up yytext again */
937 YY_RULE_SETUP
938-#line 502 "scan.l"
939+#line 552 "scan.l"
940 BEGIN(CCL); return '^';
941 YY_BREAK
942 case 119:
943@@ -2407,12 +2469,12 @@
944 yy_c_buf_p = yy_cp = yy_bp + 1;
945 YY_DO_BEFORE_ACTION; /* set up yytext again */
946 YY_RULE_SETUP
947-#line 503 "scan.l"
948+#line 553 "scan.l"
949 return '^';
950 YY_BREAK
951 case 120:
952 YY_RULE_SETUP
953-#line 504 "scan.l"
954+#line 554 "scan.l"
955 BEGIN(CCL); RETURNCHAR;
956 YY_BREAK
957
958@@ -2422,22 +2484,22 @@
959 yy_c_buf_p = yy_cp = yy_bp + 1;
960 YY_DO_BEFORE_ACTION; /* set up yytext again */
961 YY_RULE_SETUP
962-#line 508 "scan.l"
963+#line 558 "scan.l"
964 return '-';
965 YY_BREAK
966 case 122:
967 YY_RULE_SETUP
968-#line 509 "scan.l"
969+#line 559 "scan.l"
970 RETURNCHAR;
971 YY_BREAK
972 case 123:
973 YY_RULE_SETUP
974-#line 510 "scan.l"
975+#line 560 "scan.l"
976 BEGIN(SECT2); return ']';
977 YY_BREAK
978 case 124:
979 YY_RULE_SETUP
980-#line 511 "scan.l"
981+#line 561 "scan.l"
982 {
983 synerr( _( "bad character class" ) );
984 BEGIN(SECT2);
985@@ -2448,67 +2510,67 @@
986
987 case 125:
988 YY_RULE_SETUP
989-#line 519 "scan.l"
990+#line 569 "scan.l"
991 BEGIN(CCL); return CCE_ALNUM;
992 YY_BREAK
993 case 126:
994 YY_RULE_SETUP
995-#line 520 "scan.l"
996+#line 570 "scan.l"
997 BEGIN(CCL); return CCE_ALPHA;
998 YY_BREAK
999 case 127:
1000 YY_RULE_SETUP
1001-#line 521 "scan.l"
1002+#line 571 "scan.l"
1003 BEGIN(CCL); return CCE_BLANK;
1004 YY_BREAK
1005 case 128:
1006 YY_RULE_SETUP
1007-#line 522 "scan.l"
1008+#line 572 "scan.l"
1009 BEGIN(CCL); return CCE_CNTRL;
1010 YY_BREAK
1011 case 129:
1012 YY_RULE_SETUP
1013-#line 523 "scan.l"
1014+#line 573 "scan.l"
1015 BEGIN(CCL); return CCE_DIGIT;
1016 YY_BREAK
1017 case 130:
1018 YY_RULE_SETUP
1019-#line 524 "scan.l"
1020+#line 574 "scan.l"
1021 BEGIN(CCL); return CCE_GRAPH;
1022 YY_BREAK
1023 case 131:
1024 YY_RULE_SETUP
1025-#line 525 "scan.l"
1026+#line 575 "scan.l"
1027 BEGIN(CCL); return CCE_LOWER;
1028 YY_BREAK
1029 case 132:
1030 YY_RULE_SETUP
1031-#line 526 "scan.l"
1032+#line 576 "scan.l"
1033 BEGIN(CCL); return CCE_PRINT;
1034 YY_BREAK
1035 case 133:
1036 YY_RULE_SETUP
1037-#line 527 "scan.l"
1038+#line 577 "scan.l"
1039 BEGIN(CCL); return CCE_PUNCT;
1040 YY_BREAK
1041 case 134:
1042 YY_RULE_SETUP
1043-#line 528 "scan.l"
1044+#line 578 "scan.l"
1045 BEGIN(CCL); return CCE_SPACE;
1046 YY_BREAK
1047 case 135:
1048 YY_RULE_SETUP
1049-#line 529 "scan.l"
1050+#line 579 "scan.l"
1051 BEGIN(CCL); return CCE_UPPER;
1052 YY_BREAK
1053 case 136:
1054 YY_RULE_SETUP
1055-#line 530 "scan.l"
1056+#line 580 "scan.l"
1057 BEGIN(CCL); return CCE_XDIGIT;
1058 YY_BREAK
1059 case 137:
1060 YY_RULE_SETUP
1061-#line 531 "scan.l"
1062+#line 581 "scan.l"
1063 {
1064 format_synerr(
1065 _( "bad character class expression: %s" ),
1066@@ -2520,7 +2582,7 @@
1067
1068 case 138:
1069 YY_RULE_SETUP
1070-#line 540 "scan.l"
1071+#line 590 "scan.l"
1072 {
1073 yylval = myctoi( yytext );
1074 return NUMBER;
1075@@ -2528,17 +2590,17 @@
1076 YY_BREAK
1077 case 139:
1078 YY_RULE_SETUP
1079-#line 545 "scan.l"
1080+#line 595 "scan.l"
1081 return ',';
1082 YY_BREAK
1083 case 140:
1084 YY_RULE_SETUP
1085-#line 546 "scan.l"
1086+#line 596 "scan.l"
1087 BEGIN(SECT2); return '}';
1088 YY_BREAK
1089 case 141:
1090 YY_RULE_SETUP
1091-#line 548 "scan.l"
1092+#line 598 "scan.l"
1093 {
1094 synerr( _( "bad character inside {}'s" ) );
1095 BEGIN(SECT2);
1096@@ -2547,7 +2609,7 @@
1097 YY_BREAK
1098 case 142:
1099 YY_RULE_SETUP
1100-#line 554 "scan.l"
1101+#line 604 "scan.l"
1102 {
1103 synerr( _( "missing }" ) );
1104 BEGIN(SECT2);
1105@@ -2559,18 +2621,18 @@
1106
1107 case 143:
1108 YY_RULE_SETUP
1109-#line 564 "scan.l"
1110+#line 614 "scan.l"
1111 bracelevel = 0;
1112 YY_BREAK
1113 case 144:
1114 YY_RULE_SETUP
1115-#line 566 "scan.l"
1116+#line 616 "scan.l"
1117 ACTION_ECHO; yy_push_state( COMMENT );
1118 YY_BREAK
1119
1120 case 145:
1121 YY_RULE_SETUP
1122-#line 569 "scan.l"
1123+#line 619 "scan.l"
1124 {
1125 ACTION_ECHO;
1126 CHECK_REJECT(yytext);
1127@@ -2578,7 +2640,7 @@
1128 YY_BREAK
1129 case 146:
1130 YY_RULE_SETUP
1131-#line 573 "scan.l"
1132+#line 623 "scan.l"
1133 {
1134 ACTION_ECHO;
1135 CHECK_YYMORE(yytext);
1136@@ -2587,12 +2649,12 @@
1137
1138 case 147:
1139 YY_RULE_SETUP
1140-#line 579 "scan.l"
1141+#line 629 "scan.l"
1142 ACTION_ECHO;
1143 YY_BREAK
1144 case 148:
1145 YY_RULE_SETUP
1146-#line 580 "scan.l"
1147+#line 630 "scan.l"
1148 {
1149 ++linenum;
1150 ACTION_ECHO;
1151@@ -2612,37 +2674,37 @@
1152
1153 case 149:
1154 YY_RULE_SETUP
1155-#line 598 "scan.l"
1156+#line 648 "scan.l"
1157 ACTION_ECHO; ++bracelevel;
1158 YY_BREAK
1159 case 150:
1160 YY_RULE_SETUP
1161-#line 599 "scan.l"
1162+#line 649 "scan.l"
1163 ACTION_ECHO; --bracelevel;
1164 YY_BREAK
1165 case 151:
1166 YY_RULE_SETUP
1167-#line 600 "scan.l"
1168+#line 650 "scan.l"
1169 ACTION_ECHO;
1170 YY_BREAK
1171 case 152:
1172 YY_RULE_SETUP
1173-#line 601 "scan.l"
1174+#line 651 "scan.l"
1175 ACTION_ECHO;
1176 YY_BREAK
1177 case 153:
1178 YY_RULE_SETUP
1179-#line 602 "scan.l"
1180+#line 652 "scan.l"
1181 ACTION_ECHO; /* character constant */
1182 YY_BREAK
1183 case 154:
1184 YY_RULE_SETUP
1185-#line 603 "scan.l"
1186+#line 653 "scan.l"
1187 ACTION_ECHO; BEGIN(ACTION_STRING);
1188 YY_BREAK
1189 case 155:
1190 YY_RULE_SETUP
1191-#line 604 "scan.l"
1192+#line 654 "scan.l"
1193 {
1194 ++linenum;
1195 ACTION_ECHO;
1196@@ -2658,41 +2720,41 @@
1197 YY_BREAK
1198 case 156:
1199 YY_RULE_SETUP
1200-#line 616 "scan.l"
1201+#line 666 "scan.l"
1202 ACTION_ECHO;
1203 YY_BREAK
1204
1205
1206 case 157:
1207 YY_RULE_SETUP
1208-#line 620 "scan.l"
1209+#line 670 "scan.l"
1210 ACTION_ECHO;
1211 YY_BREAK
1212 case 158:
1213 YY_RULE_SETUP
1214-#line 621 "scan.l"
1215+#line 671 "scan.l"
1216 ACTION_ECHO;
1217 YY_BREAK
1218 case 159:
1219 YY_RULE_SETUP
1220-#line 622 "scan.l"
1221+#line 672 "scan.l"
1222 ++linenum; ACTION_ECHO;
1223 YY_BREAK
1224 case 160:
1225 YY_RULE_SETUP
1226-#line 623 "scan.l"
1227+#line 673 "scan.l"
1228 ACTION_ECHO; BEGIN(ACTION);
1229 YY_BREAK
1230 case 161:
1231 YY_RULE_SETUP
1232-#line 624 "scan.l"
1233+#line 674 "scan.l"
1234 ACTION_ECHO;
1235 YY_BREAK
1236
1237 case YY_STATE_EOF(COMMENT):
1238 case YY_STATE_EOF(ACTION):
1239 case YY_STATE_EOF(ACTION_STRING):
1240-#line 627 "scan.l"
1241+#line 677 "scan.l"
1242 {
1243 synerr( _( "EOF encountered inside an action" ) );
1244 yyterminate();
1245@@ -2700,7 +2762,7 @@
1246 YY_BREAK
1247 case 162:
1248 YY_RULE_SETUP
1249-#line 633 "scan.l"
1250+#line 683 "scan.l"
1251 {
1252 yylval = myesc( (Char *) yytext );
1253
1254@@ -2713,25 +2775,25 @@
1255
1256 case 163:
1257 YY_RULE_SETUP
1258-#line 644 "scan.l"
1259+#line 694 "scan.l"
1260 ECHO;
1261 YY_BREAK
1262 case YY_STATE_EOF(SECT3):
1263-#line 645 "scan.l"
1264+#line 695 "scan.l"
1265 sectnum = 0; yyterminate();
1266 YY_BREAK
1267
1268 case 164:
1269 YY_RULE_SETUP
1270-#line 648 "scan.l"
1271+#line 698 "scan.l"
1272 format_synerr( _( "bad character: %s" ), yytext );
1273 YY_BREAK
1274 case 165:
1275 YY_RULE_SETUP
1276-#line 650 "scan.l"
1277+#line 700 "scan.l"
1278 YY_FATAL_ERROR( "flex scanner jammed" );
1279 YY_BREAK
1280-#line 2736 "scan.c"
1281+#line 2799 "scan.c"
1282 case YY_STATE_EOF(INITIAL):
1283 case YY_STATE_EOF(SECT2):
1284 case YY_STATE_EOF(CODEBLOCK):
1285@@ -3626,7 +3688,7 @@
1286 return 0;
1287 }
1288 #endif
1289-#line 650 "scan.l"
1290+#line 700 "scan.l"
1291
1292
1293
1294diff -urN flex-2.5.4.orig/scan.l flex-2.5.4/scan.l
1295--- flex-2.5.4.orig/scan.l Sun Jul 27 04:44:13 1997
1296+++ flex-2.5.4/scan.l Sat Sep 7 11:04:34 2002
1297@@ -49,7 +49,15 @@
1298 return CHAR;
1299
1300 #define RETURNNAME \
1301+ if(strlen(yytext) < MAXLINE) \
1302+ { \
1303 strcpy( nmstr, yytext ); \
1304+ } \
1305+ else \
1306+ { \
1307+ fputs("Input line too long!\n", stderr); \
1308+ exit(1); \
1309+ } /* end of else */ \
1310 return NAME;
1311
1312 #define PUT_BACK_STRING(str, start) \
1313@@ -136,7 +144,15 @@
1314 ^"%"[^sxaceknopr{}].* synerr( _( "unrecognized '%' directive" ) );
1315
1316 ^{NAME} {
1317+ if(strlen(yytext) < MAXLINE)
1318+ {
1319 strcpy( nmstr, yytext );
1320+ }
1321+ else
1322+ {
1323+ fputs("Input line too long!\n", stderr);
1324+ exit(1);
1325+ } /* end of else */
1326 didadef = false;
1327 BEGIN(PICKUPDEF);
1328 }
1329@@ -184,7 +200,17 @@
1330 {WS} /* separates name and definition */
1331
1332 {NOT_WS}.* {
1333+ if(strlen(yytext) < MAXLINE)
1334+ {
1335 strcpy( (char *) nmdef, yytext );
1336+ }
1337+ else
1338+ {
1339+ fputs("Input line too long!\n", stderr);
1340+ exit(1);
1341+ } /* end of else */
1342+
1343+
1344
1345 /* Skip trailing whitespace. */
1346 for ( i = strlen( (char *) nmdef ) - 1;
1347@@ -277,7 +303,15 @@
1348 yyclass return OPT_YYCLASS;
1349
1350 \"[^"\n]*\" {
1351+ if(strlen(yytext + 1 ) < MAXLINE)
1352+ {
1353 strcpy( nmstr, yytext + 1 );
1354+ }
1355+ else
1356+ {
1357+ fputs("Input line too long!\n", stderr);
1358+ exit(1);
1359+ } /* end of else */
1360 nmstr[strlen( nmstr ) - 1] = '\0';
1361 return NAME;
1362 }
1363@@ -401,7 +435,15 @@
1364 "["({FIRST_CCL_CHAR}|{CCL_EXPR})({CCL_CHAR}|{CCL_EXPR})* {
1365 int cclval;
1366
1367+ if(strlen(yytext ) < MAXLINE)
1368+ {
1369 strcpy( nmstr, yytext );
1370+ }
1371+ else
1372+ {
1373+ fputs("Input line too long!\n", stderr);
1374+ exit(1);
1375+ }
1376
1377 /* Check to see if we've already encountered this
1378 * ccl.
1379@@ -436,7 +478,15 @@
1380 register Char *nmdefptr;
1381 Char *ndlookup();
1382
1383+ if(strlen(yytext + 1 ) < MAXLINE)
1384+ {
1385 strcpy( nmstr, yytext + 1 );
1386+ }
1387+ else
1388+ {
1389+ fputs("Input line too long!\n", stderr);
1390+ exit(1);
1391+ } /* end of else */
1392 nmstr[yyleng - 2] = '\0'; /* chop trailing brace */
1393
1394 if ( (nmdefptr = ndlookup( nmstr )) == 0 )
This page took 0.179293 seconds and 4 git commands to generate.