svn commit: r332045 - head/sys/netinet

Ed Maste emaste at FreeBSD.org
Wed Apr 4 21:12:35 UTC 2018


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 <ivansprundel at 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);


More information about the svn-src-all mailing list