+2012-11-26  Maxime Villard  <rustyBSD@gmx.fr>
+           Pedro Alves  <palves@redhat.com>
+
+       * common/linux-osdata.c (linux_xfer_osdata_fds): Decrease buffer
+       size parameter passed to readlink by one byte.
+       * fbsd-nat.c (fbsd_pid_to_exec_file): Ditto.
+       * linux-nat.c (linux_child_pid_to_exec_file): Ditto.
+       * nbsd-nat.c (nbsd_pid_to_exec_file): Ditto.
+       * inf-child.c (inf_child_fileio_readlink): Decrease local buffer's
+       size by one byte.
+
 2012-11-26  Yao Qi  <yao@codesourcery.com>
 
        * f-valprint.c (f77_create_arrayprint_offset_tbl): Remove
 
                            continue;
 
                          fdname = xstrprintf ("%s/%s", pathname, dp2->d_name);
-                         rslt = readlink (fdname, buf, 1000);
+                         rslt = readlink (fdname, buf, sizeof (buf) - 1);
                          if (rslt >= 0)
                            buf[rslt] = '\0';
 
 
 #endif
 
   path = xstrprintf ("/proc/%d/file", pid);
-  if (readlink (path, buf, MAXPATHLEN) == -1)
+  if (readlink (path, buf, MAXPATHLEN - 1) == -1)
     {
       xfree (buf);
       buf = NULL;
 
+2012-11-26  Maxime Villard  <rustyBSD@gmx.fr>
+
+       * hostio.c (handle_readlink): Decrease buffer size
+       parameter passed to readlink by one byte.
+
 2012-11-26  Yao Qi  <yao@codesourcery.com>
 
        * configure.ac (build_warnings): Append '-Wempty-body'.
 
       return;
     }
 
-  ret = readlink (filename, linkname, sizeof linkname);
+  ret = readlink (filename, linkname, sizeof (linkname) - 1);
   if (ret == -1)
     {
       hostio_error (own_buf);
 
   /* We support readlink only on systems that also provide a compile-time
      maximum path length (MAXPATHLEN), at least for now.  */
 #if defined (HAVE_READLINK) && defined (MAXPATHLEN)
-  char buf[MAXPATHLEN];
+  char buf[MAXPATHLEN - 1];
   int len;
   char *ret;
 
 
   memset (name2, 0, MAXPATHLEN);
 
   sprintf (name1, "/proc/%d/exe", pid);
-  if (readlink (name1, name2, MAXPATHLEN) > 0)
+  if (readlink (name1, name2, MAXPATHLEN - 1) > 0)
     return name2;
   else
     return name1;
 
   char *path;
 
   path = xstrprintf ("/proc/%d/exe", pid);
-  if (readlink (path, buf, MAXPATHLEN) == -1)
+  if (readlink (path, buf, MAXPATHLEN - 1) == -1)
     {
       xfree (buf);
       buf = NULL;