summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlan Modra <amodra@gmail.com>2014-12-28 15:28:19 +1030
committerAlan Modra <amodra@gmail.com>2014-12-28 15:34:01 +1030
commitde0d78958fe3db5184c5a7174f55f08d41c8706b (patch)
tree64ae2b93a4c00849e1cc9731b4d89d97972bce55
parentce637ffbe6b75a4a676bbf5f68434abf5261ba99 (diff)
downloadbinutils-gdb-de0d78958fe3db5184c5a7174f55f08d41c8706b.tar.gz
Misplaced parenthesis calculates two too few bytes for string
Factor out strlen to give better code and less likelihood of a repeat of this problem. PR 17766 * pei-x86_64.c (pex64_bfd_print_pdata_section): Correct string length. Use memcpy rather than strcpy.
-rw-r--r--bfd/ChangeLog6
-rw-r--r--bfd/pei-x86_64.c7
2 files changed, 10 insertions, 3 deletions
diff --git a/bfd/ChangeLog b/bfd/ChangeLog
index 7b3a4740c1e..b883d3c6d2c 100644
--- a/bfd/ChangeLog
+++ b/bfd/ChangeLog
@@ -1,3 +1,9 @@
+2014-12-28 Alan Modra <amodra@gmail.com>
+
+ PR 17766
+ * pei-x86_64.c (pex64_bfd_print_pdata_section): Correct string
+ length. Use memcpy rather than strcpy.
+
2014-12-26 Alan Modra <amodra@gmail.com>
PR 17755
diff --git a/bfd/pei-x86_64.c b/bfd/pei-x86_64.c
index 51bf39046cb..2009a2962a7 100644
--- a/bfd/pei-x86_64.c
+++ b/bfd/pei-x86_64.c
@@ -601,11 +601,12 @@ pex64_bfd_print_pdata_section (bfd *abfd, void *vfile, asection *pdata_section)
section name, replacing .pdata by .xdata prefix. */
if (strcmp (pdata_section->name, ".pdata") != 0)
{
- char *xdata_name = alloca (strlen (pdata_section->name + 1));
+ size_t len = strlen (pdata_section->name);
+ char *xdata_name = alloca (len + 1);
- xdata_name = strcpy (xdata_name, pdata_section->name);
+ xdata_name = memcpy (xdata_name, pdata_section->name, len + 1);
/* Transform .pdata prefix into .xdata prefix. */
- if (strlen (xdata_name) > 1)
+ if (len > 1)
xdata_name [1] = 'x';
xdata_section = pex64_get_section_by_rva (abfd, xdata_base,
xdata_name);