diff options
-rw-r--r-- | binutils/ChangeLog | 5 | ||||
-rw-r--r-- | binutils/rclex.l | 7 |
2 files changed, 11 insertions, 1 deletions
diff --git a/binutils/ChangeLog b/binutils/ChangeLog index aeaa659..fdc26bb 100644 --- a/binutils/ChangeLog +++ b/binutils/ChangeLog @@ -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 diff --git a/binutils/rclex.l b/binutils/rclex.l index eb33b4a..92b1ec7 100644 --- a/binutils/rclex.l +++ b/binutils/rclex.l @@ -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'); |