From: Jim Meyering Date: Thu, 19 Apr 2012 13:51:17 +0000 (+0000) Subject: genmodes: remove misleading use of strncpy X-Git-Tag: misc/gccgo-go1_1_2~3412 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=75be0217a8b024cc146748db6894ff9e060d7ac9;p=thirdparty%2Fgcc.git 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. From-SVN: r186596 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index c70e3bb64b06..72269124ae2f 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,10 @@ +2012-04-19 Jim Meyering + + 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 * symtab.c (dump_symtab_base): Use TREE_STRING_POINTER diff --git a/gcc/genmodes.c b/gcc/genmodes.c index 8b6f5bce96b9..6bbeb6faef15 100644 --- a/gcc/genmodes.c +++ b/gcc/genmodes.c @@ -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');