Author: emaste
Date: Wed Apr  4 21:12:35 2018
New Revision: 332045
URL: https://svnweb.freebsd.org/changeset/base/332045

Log:
  Fix kernel memory disclosure in tcp_ctloutput
  
  strcpy was used to copy a string into a buffer copied to userland, which
  left uninitialized data after the terminating 0-byte.  Use the same
  approach as in tcp_subr.c: strncpy and explicit '\0'.
  
  admbugs:      765, 822
  MFC after:    1 day
  Reported by:  Ilja Van Sprundel <ivansprun...@ioactive.com>
  Reported by:  Vlad Tsyrklevich
  Security:     Kernel memory disclosure
  Sponsored by: The FreeBSD Foundation

Modified:
  head/sys/netinet/tcp_usrreq.c

Modified: head/sys/netinet/tcp_usrreq.c
==============================================================================
--- head/sys/netinet/tcp_usrreq.c       Wed Apr  4 20:29:55 2018        
(r332044)
+++ head/sys/netinet/tcp_usrreq.c       Wed Apr  4 21:12:35 2018        
(r332045)
@@ -1533,7 +1533,9 @@ tcp_ctloutput(struct socket *so, struct sockopt *sopt)
                return (error);
        } else if ((sopt->sopt_dir == SOPT_GET) && 
            (sopt->sopt_name == TCP_FUNCTION_BLK)) {
-               strcpy(fsn.function_set_name, tp->t_fb->tfb_tcp_block_name);
+               strncpy(fsn.function_set_name, tp->t_fb->tfb_tcp_block_name,
+                   TCP_FUNCTION_NAME_LEN_MAX);
+               fsn.function_set_name[TCP_FUNCTION_NAME_LEN_MAX - 1] = '\0';
                fsn.pcbcnt = tp->t_fb->tfb_refcnt;
                INP_WUNLOCK(inp);
                error = sooptcopyout(sopt, &fsn, sizeof fsn);
_______________________________________________
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