* src/SDCC.lex, sdc/SDCCmain.c, support/cpp2/sdcpp.c:
authorborutr <borutr@4a8a32a2-be11-0410-ad9d-d568d2c75423>
Sun, 1 Apr 2007 11:06:09 +0000 (11:06 +0000)
committerborutr <borutr@4a8a32a2-be11-0410-ad9d-d568d2c75423>
Sun, 1 Apr 2007 11:06:09 +0000 (11:06 +0000)
  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

ChangeLog
src/SDCC.lex
src/SDCCmain.c
support/cpp2/sdcpp.c

index f72ce264ed60b76d102770939cf05b739331aab8..cbe3d92fb40bdc294c4a486db20c144f693af87a 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2007-04-01 Borut Razem <borut.razem AT siol.net>
+
+       * src/SDCC.lex, sdc/SDCCmain.c, support/cpp2/sdcpp.c:
+         fixed bug #1692042: input buffer overflow...scanner uses REJECT
+
 2007-03-30 Raphael Neider <rneider AT web.de>
 
        * src/pic/ralloc.c (isData): suppress garbage debug output
index 7785550391c404e85d0c53e24b5ef0b4ce249652..1fc106256dbb66462bd6458ebb4f3b35ff4bc606 100644 (file)
@@ -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); }
index cb082bb14f9e65120d0bb3e72428e8cdf559afaf..ed2fa9616068b27b85c9de127f983c562a28ce03 100644 (file)
@@ -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)
index e45a02f0589e4498cfaed0189f12ec4eeaa90285..9c1e9b6516462bd79d8e57a9bf58e3239dac0aa8 100644 (file)
@@ -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 ();