2005-10-11 Danny Smith <dannysmith@users.sourceforge.net>
authorDanny Smith <dannysmith@users.sourceforge.net>
Wed, 12 Oct 2005 00:16:12 +0000 (00:16 +0000)
committerDanny Smith <dannysmith@users.sourceforge.net>
Wed, 12 Oct 2005 00:16:12 +0000 (00:16 +0000)
* rclex.l (handle quotes): Stop parsing hex notation escaped
chars after the first two digits,

binutils/ChangeLog
binutils/rclex.l

index aeaa659c644ef72ee3f27245bc940f7a7ea66b10..fdc26bb4aa717cb3a561766fbe6a0bd81ce1e686 100644 (file)
@@ -1,3 +1,8 @@
+2005-10-11  Danny Smith  <dannysmith@users.sourceforge.net>
+
+       * rclex.l (handle quotes): Stop parsing hex notation escaped
+       chars after the first two digits,
+
 2005-10-11  Nick Clifton  <nickc@redhat.com>
 
        PR binutils/1437
index eb33b4a36547aff30a6d32d401ce3975a2b32925..92b1ec738526786bed9088739bed5e69bd682f10 100644 (file)
@@ -308,6 +308,7 @@ handle_quotes (const char *input, unsigned long *len)
   char *ret, *s;
   const char *t;
   int ch;
+  int num_xdigits;
 
   ret = get_string (strlen (input) + 1);
 
@@ -389,7 +390,11 @@ handle_quotes (const char *input, unsigned long *len)
            case 'x':
              ++t;
              ch = 0;
-             while (1)
+             /* We only handle single byte chars here.  Make sure
+                we finish an escape sequence like "/xB0ABC" after
+                the first two digits.  */
+              num_xdigits = 2;
+             while (num_xdigits--)
                {
                  if (*t >= '0' && *t <= '9')
                    ch = (ch << 4) | (*t - '0');