From ee42883cff56a3fb6fb4ff939dd3c8c4f42d4c12 Mon Sep 17 00:00:00 2001 From: Nick Clifton Date: Tue, 16 Mar 2021 14:02:38 +0000 Subject: [PATCH] Fix potentially undefined behaviour use of strcpcy. * pe-dll.c (pe_find_cdecl_alias_match): Use memmove to overwrite lname string. --- ld/ChangeLog | 5 +++++ ld/pe-dll.c | 4 +++- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/ld/ChangeLog b/ld/ChangeLog index 01b93c52cb9..7cc917a5128 100644 --- a/ld/ChangeLog +++ b/ld/ChangeLog @@ -1,3 +1,8 @@ +2021-03-16 Nick Clifton + + * pe-dll.c (pe_find_cdecl_alias_match): Use memmove to overwrite + lname string. + 2021-03-15 Jan Beulich * pe-dll.c (generate_reloc): Drop padding to reloc_s->size. diff --git a/ld/pe-dll.c b/ld/pe-dll.c index eaecb951efd..7aba09cd359 100644 --- a/ld/pe-dll.c +++ b/ld/pe-dll.c @@ -3039,7 +3039,9 @@ pe_find_cdecl_alias_match (struct bfd_link_info *linfo, char *name) if (pe_details->underscored) lname[0] = '_'; else - strcpy (lname, lname + 1); + /* Use memmove rather than strcpy as that + can handle overlapping buffers. */ + memmove (lname, lname + 1, strlen (lname)); key.key = lname; kv = bsearch (&key, udef_table, undef_count, sizeof (struct key_value), undef_sort_cmp); -- 2.39.5