From 0851f04365fb9d46d1e10808d5f55619ccfc7aed Mon Sep 17 00:00:00 2001 From: Danny Smith Date: Wed, 12 Oct 2005 00:16:12 +0000 Subject: [PATCH] 2005-10-11 Danny Smith * rclex.l (handle quotes): Stop parsing hex notation escaped chars after the first two digits, --- binutils/ChangeLog | 5 +++++ binutils/rclex.l | 7 ++++++- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/binutils/ChangeLog b/binutils/ChangeLog index aeaa659c644..fdc26bb4aa7 100644 --- a/binutils/ChangeLog +++ b/binutils/ChangeLog @@ -1,3 +1,8 @@ +2005-10-11 Danny Smith + + * rclex.l (handle quotes): Stop parsing hex notation escaped + chars after the first two digits, + 2005-10-11 Nick Clifton PR binutils/1437 diff --git a/binutils/rclex.l b/binutils/rclex.l index eb33b4a3654..92b1ec73852 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'); -- 2.30.2