[PATCH] Change some arguments to gdb::string_view instead of name+len
Pedro Alves
palves@redhat.com
Tue Oct 1 18:23:00 GMT 2019
On 10/1/19 6:33 PM, Christian Biesinger via gdb-patches wrote:
> - if (linkage_name[len] != '\0')
> + /* Don't use string_view::operator[] because we are accessing beyond
> + the size of the string_view, which is technically unsupported. */
> + if (linkage_name.data ()[linkage_name.length ()] != '\0')
> {
> char *alloc_name;
It's more than just unsupported, it's undefined behavior. If we're promising
the string_view interface, then it's supposedly valid to pass in a string_view
that happens to point just at the end of a page, with the one-past-the-end
byte living in an unmapped page. Dereferencing the one-past-end byte in
that case SIGSEGVs.
> - if (ms_type == mst_file_text && startswith (name, "__gnu_compiled"))
> + if (ms_type == mst_file_text && startswith (name.data (), "__gnu_compiled"))
> return (NULL);
>
This, via startswith also assumes that name.data() is a null-terminated
string.
I wonder whether we should have a zstring_view type. like string_view, but
assumes/requires null-terminated.
Thanks,
Pedro Alves
More information about the Gdb-patches
mailing list