[PATCH 1/1] strings patch for bug 33360

Alice Carlotti alice.carlotti@arm.com
Fri Sep 5 23:12:23 GMT 2025


On Thu, Sep 04, 2025 at 08:27:50AM +0930, Alan Modra wrote:
> On Wed, Sep 03, 2025 at 11:02:12PM +0100, Alice Carlotti wrote:
> > On Wed, Sep 03, 2025 at 03:08:33PM +0100, Andrew C Aitchison wrote:
> > > ---
> > >  binutils/strings.c | 4 ++--
> > >  1 file changed, 2 insertions(+), 2 deletions(-)
> > > 
> > > diff --git a/binutils/strings.c b/binutils/strings.c
> > > index f5c022b50a1..38da6381edf 100644
> > > --- a/binutils/strings.c
> > > +++ b/binutils/strings.c
> > > @@ -757,8 +757,8 @@ display_utf8_char (const unsigned char * buffer)
> > >  
> > >  	case 4:
> > >  	  printf ("\\u%02x%02x%02x",
> > 
> > Should 5 digit outputs be allowed?
> > 
> > > -		  ((buffer[0] & 0x07) << 6) | ((buffer[1] & 0x3c) >> 2),
> > > -		  ((buffer[1] & 0x03) << 6) | ((buffer[2] & 0x3c) >> 2),
> > > +		  ((buffer[0] & 0x07) << 2) | ((buffer[1] & 0x30) >> 4),
> > > +		  ((buffer[1] & 0x0f) << 4) | ((buffer[2] & 0x3c) >> 2),
> > 
> > Your updated bit arithmetic looks correct to me, but I do wonder whether we
> > should simplify things by building the whole value into a 32 bit integer and
> > printing that.  Is there any reason we can't do that?
> 
> Thanks for reviewing.  I'm going to accept the patch as-is.
> Improvements, if necessary, can come later.

I've discovered some more bugs.  Firstly, there's exactly the same bug with
4-byte encodings in objdump.c and nm.c.  Secondly, we currently accept various
invalid encodings (overlong encodings, out-of-range codepoints, and UTF-16
surrogate pair values).  There's also other bits of code that are unnecessarily
complicated that I can simplify, including one typo that only happens to not be
a bug because swapping two bytes at that point doesn't affect output.

I'm currently working on a patch (series) to fix and simplify the utf-8 code in
these files.

Alice

> 
> > Alice
> > 
> > >  		  ((buffer[2] & 0x03) << 6) | ((buffer[3] & 0x3f)));
> > >  	  break;
> > >  	default:
> > > -- 
> > > 2.48.1
> > > 
> 
> -- 
> Alan Modra


More information about the Binutils mailing list