https://gcc.gnu.org/bugzilla/show_bug.cgi?id=110147

Mark Wielaard <mark at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
   Last reconfirmed|                            |2023-06-08
     Ever confirmed|0                           |1
             Status|UNCONFIRMED                 |NEW

--- Comment #3 from Mark Wielaard <mark at gcc dot gnu.org> ---
(In reply to Jonathan Wakely from comment #2)
> --- a/libiberty/rust-demangle.c
> +++ b/libiberty/rust-demangle.c
> @@ -1569,8 +1569,11 @@ str_buf_append (struct str_buf *buf, const char
> *data, size_t len)
>    if (buf->errored)
>      return;
>  
> -  memcpy (buf->ptr + buf->len, data, len);
> -  buf->len += len;
> +  if (len)
> +  {
> +    memcpy (buf->ptr + buf->len, data, len);
> +    buf->len += len;
> +  }
>  }
>  
>  static void

That is probably the correct fix/workaround. str_buf_append is the
function/callback used to build up the demangled string. If it gets an empty
NULL/0 string it really shouldn't do anything (so you could also do a if (len
== 0) return at the top).

We might want to ping ed...@lyken.rs (who wrote the original v0 rust demangler)
in case he thinks this might also need to raise an error flag. But that would
technically be a separate bug I think.

Reply via email to