Use memcpy instead of strncpy in nscd/nscd.h to fix build problem with ToT GCC

Message ID 1513112247.23303.55.camel@cavium.com
State New, archived
Headers

Commit Message

Steve Ellcey Dec. 12, 2017, 8:57 p.m. UTC
  The latest ToT GCC is warning about the use of strncpy in nscd/nscd.h.
The strncpy is intentionally truncating a string so the warning is not
really useful in this instance.  Joseph suggested changing it to
a memcpy and that seems to work fine.  I built glibc with ToT GCC
using this patch and ran the glibc test with no regressions on aarch64.

OK to checkin?

Steve Ellcey
sellcey@cavium.com


2017-12-12  Steve Ellcey  <sellcey@cavium.com>

	* nscd/nscd.h (init_traced_file): Change strncpy to memcpy.
  

Comments

Joseph Myers Dec. 12, 2017, 9:26 p.m. UTC | #1
On Tue, 12 Dec 2017, Steve Ellcey wrote:

> The latest ToT GCC is warning about the use of strncpy in nscd/nscd.h.
> The strncpy is intentionally truncating a string so the warning is not
> really useful in this instance.  Joseph suggested changing it to
> a memcpy and that seems to work fine.  I built glibc with ToT GCC
> using this patch and ran the glibc test with no regressions on aarch64.
> 
> OK to checkin?

OK.
  
Ramana Radhakrishnan Dec. 12, 2017, 9:29 p.m. UTC | #2
On Tue, Dec 12, 2017 at 8:57 PM, Steve Ellcey <sellcey@cavium.com> wrote:
> The latest ToT GCC is warning about the use of strncpy in nscd/nscd.h.
> The strncpy is intentionally truncating a string so the warning is not
> really useful in this instance.  Joseph suggested changing it to
> a memcpy and that seems to work fine.  I built glibc with ToT GCC
> using this patch and ran the glibc test with no regressions on aarch64.
>
> OK to checkin?
>
> Steve Ellcey
> sellcey@cavium.com
>
>
> 2017-12-12  Steve Ellcey  <sellcey@cavium.com>
>
>         * nscd/nscd.h (init_traced_file): Change strncpy to memcpy.
>
>
> diff --git a/nscd/nscd.h b/nscd/nscd.h
> index c6b0a3c..edcb5b6 100644
> --- a/nscd/nscd.h
> +++ b/nscd/nscd.h
> @@ -108,7 +108,7 @@ init_traced_file(struct traced_file *file, const char *fname, int crinit)
>         size_t len = (size_t)(dname - fname);
>         if (len > sizeof (file->dname))
>          abort ();
> -       strncpy (file->dname, file->fname, len);
> +       memcpy (file->dname, file->fname, len);
>         file->dname[len] = '\0';
>       }
>     /* The basename is the name just after the last forward slash.  */

Looks good to me FWIW.

Ramana
  

Patch

diff --git a/nscd/nscd.h b/nscd/nscd.h
index c6b0a3c..edcb5b6 100644
--- a/nscd/nscd.h
+++ b/nscd/nscd.h
@@ -108,7 +108,7 @@  init_traced_file(struct traced_file *file, const char *fname, int crinit)
        size_t len = (size_t)(dname - fname);
        if (len > sizeof (file->dname))
 	 abort ();
-       strncpy (file->dname, file->fname, len);
+       memcpy (file->dname, file->fname, len);
        file->dname[len] = '\0';
      }
    /* The basename is the name just after the last forward slash.  */