* [PATCH] [gdb/build] Fix Wstringop-truncation in coff_getfilename
@ 2023-07-26 8:49 Tom de Vries
2023-07-26 13:45 ` Tom Tromey
0 siblings, 1 reply; 2+ messages in thread
From: Tom de Vries @ 2023-07-26 8:49 UTC (permalink / raw)
To: gdb-patches
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
60ebc257517 ("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.
PR build/30669
Bug: https://sourceware.org/bugzilla/show_bug.cgi?id=30669
---
gdb/coffread.c | 5 +++--
gdb/xcoffread.c | 5 +++--
2 files changed, 6 insertions(+), 4 deletions(-)
diff --git a/gdb/coffread.c b/gdb/coffread.c
index 33fb2ba1fca..6ec341c61c2 100644
--- a/gdb/coffread.c
+++ b/gdb/coffread.c
@@ -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;
diff --git a/gdb/xcoffread.c b/gdb/xcoffread.c
index 1538d1c823d..8930cf1bc35 100644
--- a/gdb/xcoffread.c
+++ b/gdb/xcoffread.c
@@ -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);
}
base-commit: 477c9f2ba26ccd77016f2c97941fc8b35e332e35
--
2.35.3
^ permalink raw reply [flat|nested] 2+ messages in thread
* Re: [PATCH] [gdb/build] Fix Wstringop-truncation in coff_getfilename
2023-07-26 8:49 [PATCH] [gdb/build] Fix Wstringop-truncation in coff_getfilename Tom de Vries
@ 2023-07-26 13:45 ` Tom Tromey
0 siblings, 0 replies; 2+ messages in thread
From: Tom Tromey @ 2023-07-26 13:45 UTC (permalink / raw)
To: Tom de Vries via Gdb-patches; +Cc: Tom de Vries
>>>>> "Tom" == Tom de Vries via Gdb-patches <gdb-patches@sourceware.org> writes:
Tom> When building gdb with -O2 -fsanitize-threads, I ran into
Tom> a Werror=stringop-truncation.
...
Tom> Fix this by using "sizeof (aux_entry->x_file.x_n.x_fname)" instead.
Tom> Likewise in xcoffread.c.
Tom> Tested on x86_64-linux.
This seems fine to me. I wonder why this code is using a fixed-size
buffer, but your fix is clearly an improvement anyway.
Approved-By: Tom Tromey <tom@tromey.com>
Tom
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2023-07-26 13:45 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-07-26 8:49 [PATCH] [gdb/build] Fix Wstringop-truncation in coff_getfilename Tom de Vries
2023-07-26 13:45 ` Tom Tromey
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).