Author: ngie
Date: Thu Jan  5 07:46:57 2017
New Revision: 311377
URL: https://svnweb.freebsd.org/changeset/base/311377

Log:
  Redo fix for CID 979581
  
  The previous change was flawed in terms of how it calculated the
  buffer length for the sockaddr_un object. Use SUN_LEN where
  appropriate and mute the Coverity complaint by using memset(.., 0, ..)
  to zero out the entire structure instead of setting .sun_len to a bogus
  value and strlcpy'ing in the contents of argv[1].
  
  SUN_LEN is now being passed to bind(2) as well. For some odd reason
  this wasn't flagged as a bug with Coverity.
  
  Reported by:  jilles, jmallett
  MFC after:    2 days
  X-MFC with:   r311233

Modified:
  head/contrib/netbsd-tests/fs/tmpfs/h_tools.c

Modified: head/contrib/netbsd-tests/fs/tmpfs/h_tools.c
==============================================================================
--- head/contrib/netbsd-tests/fs/tmpfs/h_tools.c        Thu Jan  5 07:42:08 
2017        (r311376)
+++ head/contrib/netbsd-tests/fs/tmpfs/h_tools.c        Thu Jan  5 07:46:57 
2017        (r311377)
@@ -244,13 +244,15 @@ sockets_main(int argc, char **argv)
        }
 
 #ifdef __FreeBSD__
-       addr.sun_len = sizeof(addr.sun_path);
-       (void)strlcpy(addr.sun_path, argv[1], addr.sun_len);
-#else
-       (void)strlcpy(addr.sun_path, argv[1], sizeof(addr.sun_path));
+       memset(&addr, 0, sizeof(addr));
 #endif
+       (void)strlcpy(addr.sun_path, argv[1], sizeof(addr.sun_path));
        addr.sun_family = PF_UNIX;
+#ifdef __FreeBSD__
+       error = bind(fd, (struct sockaddr *)&addr, SUN_LEN(&addr));
+#else
        error = bind(fd, (struct sockaddr *)&addr, sizeof(addr));
+#endif
        if (error == -1) {
                warn("connect");
 #ifdef __FreeBSD__
_______________________________________________
svn-src-all@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"

Reply via email to