]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
genmodes: remove misleading use of strncpy
authorJim Meyering <meyering@redhat.com>
Thu, 19 Apr 2012 13:51:17 +0000 (13:51 +0000)
committerJim Meyering <meyering@gcc.gnu.org>
Thu, 19 Apr 2012 13:51:17 +0000 (13:51 +0000)
* genmodes.c (make_complex_modes): Avoid unnecessary use of strncpy.
We verified above that the string(including trailing NUL) fits in buf,
so just use memcpy.

From-SVN: r186596

gcc/ChangeLog
gcc/genmodes.c

index c70e3bb64b06efebf9495a1d74bdc7c6d323e914..72269124ae2fce6a8244d3096abe46e53f6aaa16 100644 (file)
@@ -1,3 +1,10 @@
+2012-04-19  Jim Meyering  <meyering@redhat.com>
+
+       genmodes: remove misleading use of strncpy
+       * genmodes.c (make_complex_modes): Avoid unnecessary use of strncpy.
+       We verified above that the string(including trailing NUL) fits in buf,
+       so just use memcpy.
+
 2012-04-19  Richard Guenther  <rguenther@suse.de>
 
        * symtab.c (dump_symtab_base): Use TREE_STRING_POINTER
index 8b6f5bce96b937f71fe76d47916dee167d2bb59b..6bbeb6faef15aab9331fe168c2d4a7a805f5c09b 100644 (file)
@@ -1,5 +1,5 @@
 /* Generate the machine mode enumeration and associated tables.
-   Copyright (C) 2003, 2004, 2005, 2006, 2007, 2010
+   Copyright (C) 2003, 2004, 2005, 2006, 2007, 2010, 2012
    Free Software Foundation, Inc.
 
 This file is part of GCC.
@@ -435,11 +435,14 @@ make_complex_modes (enum mode_class cl,
 
   for (m = modes[cl]; m; m = m->next)
     {
+      size_t m_len;
+
       /* Skip BImode.  FIXME: BImode probably shouldn't be MODE_INT.  */
       if (m->precision == 1)
        continue;
 
-      if (strlen (m->name) >= sizeof buf)
+      m_len = strlen (m->name);
+      if (m_len >= sizeof buf)
        {
          error ("%s:%d:mode name \"%s\" is too long",
                 m->file, m->line, m->name);
@@ -452,7 +455,8 @@ make_complex_modes (enum mode_class cl,
       if (cl == MODE_FLOAT)
        {
          char *p, *q = 0;
-         strncpy (buf, m->name, sizeof buf);
+         /* We verified above that m->name+NUL fits in buf.  */
+         memcpy (buf, m->name, m_len + 1);
          p = strchr (buf, 'F');
          if (p == 0)
            q = strchr (buf, 'D');