Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 23 Nov 2012 01:48:32 +0000 (UTC)
From:      Colin Percival <cperciva@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r243419 - in head: contrib/wpa/src/eap_server sys/compat/linux
Message-ID:  <201211230148.qAN1mW1X011743@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: cperciva
Date: Fri Nov 23 01:48:31 2012
New Revision: 243419
URL: http://svnweb.freebsd.org/changeset/base/243419

Log:
  MFS security patches which seem to have accidentally not reached HEAD:
  
  Fix insufficient message length validation for EAP-TLS messages.
  
  Fix Linux compatibility layer input validation error.
  
  Security:	FreeBSD-SA-12:07.hostapd
  Security:	FreeBSD-SA-12:08.linux
  Security:	CVE-2012-4445, CVE-2012-4576
  With hat:	so@

Modified:
  head/contrib/wpa/src/eap_server/eap_server_tls_common.c
  head/sys/compat/linux/linux_ioctl.c

Modified: head/contrib/wpa/src/eap_server/eap_server_tls_common.c
==============================================================================
--- head/contrib/wpa/src/eap_server/eap_server_tls_common.c	Thu Nov 22 23:15:38 2012	(r243418)
+++ head/contrib/wpa/src/eap_server/eap_server_tls_common.c	Fri Nov 23 01:48:31 2012	(r243419)
@@ -225,6 +225,14 @@ static int eap_server_tls_process_fragme
 			return -1;
 		}
 
+		if (len > message_length) {
+			wpa_printf(MSG_INFO, "SSL: Too much data (%d bytes) in "
+				   "first fragment of frame (TLS Message "
+				   "Length %d bytes)",
+				   (int) len, (int) message_length);
+			return -1;
+		}
+
 		data->tls_in = wpabuf_alloc(message_length);
 		if (data->tls_in == NULL) {
 			wpa_printf(MSG_DEBUG, "SSL: No memory for message");

Modified: head/sys/compat/linux/linux_ioctl.c
==============================================================================
--- head/sys/compat/linux/linux_ioctl.c	Thu Nov 22 23:15:38 2012	(r243418)
+++ head/sys/compat/linux/linux_ioctl.c	Fri Nov 23 01:48:31 2012	(r243419)
@@ -2260,8 +2260,9 @@ again:
 
 	ifc.ifc_len = valid_len; 
 	sbuf_finish(sb);
-	memcpy(PTRIN(ifc.ifc_buf), sbuf_data(sb), ifc.ifc_len);
-	error = copyout(&ifc, uifc, sizeof(ifc));
+	error = copyout(sbuf_data(sb), PTRIN(ifc.ifc_buf), ifc.ifc_len);
+	if (error == 0)
+		error = copyout(&ifc, uifc, sizeof(ifc));
 	sbuf_delete(sb);
 	CURVNET_RESTORE();
 



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201211230148.qAN1mW1X011743>