From: borutr Date: Sun, 1 Apr 2007 11:06:09 +0000 (+0000) Subject: * src/SDCC.lex, sdc/SDCCmain.c, support/cpp2/sdcpp.c: X-Git-Url: https://git.gag.com/?a=commitdiff_plain;ds=sidebyside;h=35ae84eba60b5aa2bd3803b9425259bb19057cd1;p=fw%2Fsdcc * src/SDCC.lex, sdc/SDCCmain.c, support/cpp2/sdcpp.c: fixed bug #1692042: input buffer overflow...scanner uses REJECT git-svn-id: https://sdcc.svn.sourceforge.net/svnroot/sdcc/trunk/sdcc@4731 4a8a32a2-be11-0410-ad9d-d568d2c75423 --- diff --git a/ChangeLog b/ChangeLog index f72ce264..cbe3d92f 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2007-04-01 Borut Razem + + * src/SDCC.lex, sdc/SDCCmain.c, support/cpp2/sdcpp.c: + fixed bug #1692042: input buffer overflow...scanner uses REJECT + 2007-03-30 Raphael Neider * src/pic/ralloc.c (isData): suppress garbage debug output diff --git a/src/SDCC.lex b/src/SDCC.lex index 77855503..1fc10625 100644 --- a/src/SDCC.lex +++ b/src/SDCC.lex @@ -23,8 +23,7 @@ -------------------------------------------------------------------------*/ D [0-9] -L [a-zA-Z_] -L_DOLL [a-zA-Z_$] +L [a-zA-Z_$] H [a-fA-F0-9] E [Ee][+-]?{D}+ FS (f|F|l|L) @@ -58,6 +57,7 @@ int lexLineno = 1; static struct dbuf_s asmbuff; /* reusable _asm buffer */ /* forward declarations */ +int yyerror(char *s); static const char *stringLiteral(void); static void count(void); static void count_char(int); @@ -191,15 +191,13 @@ _?"_asm" { "__overlay" { count(); TKEYWORD(OVERLAY); } "inline" { count(); TKEYWORD99(INLINE); } "restrict" { count(); TKEYWORD99(RESTRICT); } -{L}({L}|{D})* { count(); return(check_type()); } -{L_DOLL}({L_DOLL}|{D})* { - if (options.dollars_in_ident) +{L}({L}|{D})* { + if (!options.dollars_in_ident && strchr(yytext, '$')) { - count(); - return(check_type()); + yyerror("stray '$' in program"); } - else - REJECT; + count(); + return(check_type()); } 0[xX]{H}+{IS}? { count(); yylval.val = constVal(yytext); return(CONSTANT); } 0[0-7]*{IS}? { count(); yylval.val = constVal(yytext); return(CONSTANT); } diff --git a/src/SDCCmain.c b/src/SDCCmain.c index cb082bb1..ed2fa961 100644 --- a/src/SDCCmain.c +++ b/src/SDCCmain.c @@ -2035,7 +2035,7 @@ preProcess (char **envp) /* if using dollar signs in identifiers */ if (options.dollars_in_ident) - addSet(&preArgvSet, Safe_strdup("--fdollars-in-identifiers")); + addSet(&preArgvSet, Safe_strdup("-fdollars-in-identifiers")); /* if using external stack define the macro */ if (options.useXstack) diff --git a/support/cpp2/sdcpp.c b/support/cpp2/sdcpp.c index e45a02f0..9c1e9b65 100644 --- a/support/cpp2/sdcpp.c +++ b/support/cpp2/sdcpp.c @@ -316,6 +316,7 @@ inform (const char *gmsgid, ...) va_start (ap, gmsgid); fprintf (stderr, "%s: note: ", progname); vfprintf (stderr, gmsgid, ap); + putc('\n', stderr); va_end (ap); } @@ -332,6 +333,7 @@ warning (int opt, const char *gmsgid, ...) va_start (ap, gmsgid); fprintf (stderr, "%s: warning: ", progname); vfprintf (stderr, gmsgid, ap); + putc('\n', stderr); va_end (ap); } @@ -347,6 +349,7 @@ error (const char *gmsgid, ...) va_start (ap, gmsgid); fprintf (stderr, "%s: error: ", progname); vfprintf (stderr, gmsgid, ap); + putc('\n', stderr); va_end (ap); } @@ -361,6 +364,7 @@ fatal_error (const char *gmsgid, ...) va_start (ap, gmsgid); fprintf (stderr, "%s: fatal error: ", progname); vfprintf (stderr, gmsgid, ap); + putc('\n', stderr); va_end (ap); gcc_unreachable (); @@ -378,6 +382,7 @@ internal_error (const char *gmsgid, ...) va_start (ap, gmsgid); fprintf (stderr, "%s: internal compiler error: ", progname); vfprintf (stderr, gmsgid, ap); + putc('\n', stderr); va_end (ap); gcc_unreachable ();