mirror of
https://sourceware.org/git/binutils-gdb.git
synced 2024-11-27 03:54:41 +08:00
[gdb/build] Fix Wstringop-truncation in coff_getfilename
When building gdb with -O2 -fsanitize-threads, I ran into
a Werror=stringop-truncation.
The problem is here in coff_getfilename in coffread.c:
...
strncpy (buffer, aux_entry->x_file.x_n.x_fname, FILNMLEN);
buffer[FILNMLEN] = '\0';
...
The constant FILNMLEN is expected to designate the size of
aux_entry->x_file.x_n.x_fname, but that's no longer the case since commit
60ebc25751
("Fixes a buffer overflow when compiling assembler for the MinGW
targets.").
Fix this by using "sizeof (aux_entry->x_file.x_n.x_fname)" instead.
Likewise in xcoffread.c.
Tested on x86_64-linux.
Approved-By: Tom Tromey <tom@tromey.com>
PR build/30669
Bug: https://sourceware.org/bugzilla/show_bug.cgi?id=30669
This commit is contained in:
parent
ac284430be
commit
200546f1a3
@ -1371,8 +1371,9 @@ coff_getfilename (union internal_auxent *aux_entry)
|
||||
}
|
||||
else
|
||||
{
|
||||
strncpy (buffer, aux_entry->x_file.x_n.x_fname, FILNMLEN);
|
||||
buffer[FILNMLEN] = '\0';
|
||||
size_t x_fname_len = sizeof (aux_entry->x_file.x_n.x_fname);
|
||||
strncpy (buffer, aux_entry->x_file.x_n.x_fname, x_fname_len);
|
||||
buffer[x_fname_len] = '\0';
|
||||
}
|
||||
result = buffer;
|
||||
|
||||
|
@ -1598,8 +1598,9 @@ coff_getfilename (union internal_auxent *aux_entry, struct objfile *objfile)
|
||||
+ aux_entry->x_file.x_n.x_n.x_offset));
|
||||
else
|
||||
{
|
||||
strncpy (buffer, aux_entry->x_file.x_n.x_fname, FILNMLEN);
|
||||
buffer[FILNMLEN] = '\0';
|
||||
size_t x_fname_len = sizeof (aux_entry->x_file.x_n.x_fname);
|
||||
strncpy (buffer, aux_entry->x_file.x_n.x_fname, x_fname_len);
|
||||
buffer[x_fname_len] = '\0';
|
||||
}
|
||||
return (buffer);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user