Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 22 Jul 2016 03:26:02 +0000 (UTC)
From:      Sean Bruno <sbruno@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-10@freebsd.org
Subject:   svn commit: r303177 - stable/10/sys/dev/an
Message-ID:  <201607220326.u6M3Q2Xp082276@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: sbruno
Date: Fri Jul 22 03:26:01 2016
New Revision: 303177
URL: https://svnweb.freebsd.org/changeset/base/303177

Log:
  MFC r300612
  Reject ioctl commands for FLSHGCHR and FLSHPCHR if the size is greater
  than sc->areq.  This is a bounds check to ensure we're not just cramming
  arbitrarily sized nonsense into the driver and overflowing the heap.
  
  PR:		209545

Modified:
  stable/10/sys/dev/an/if_an.c

Modified: stable/10/sys/dev/an/if_an.c
==============================================================================
--- stable/10/sys/dev/an/if_an.c	Fri Jul 22 03:21:47 2016	(r303176)
+++ stable/10/sys/dev/an/if_an.c	Fri Jul 22 03:26:01 2016	(r303177)
@@ -3777,6 +3777,9 @@ flashcard(struct ifnet *ifp, struct airo
 			return ENOBUFS;
 		break;
 	case AIROFLSHGCHR:	/* Get char from aux */
+		if (l_ioctl->len > sizeof(sc->areq)) {
+			return -EINVAL;
+		}
 		AN_UNLOCK(sc);
 		status = copyin(l_ioctl->data, &sc->areq, l_ioctl->len);
 		AN_LOCK(sc);
@@ -3788,6 +3791,9 @@ flashcard(struct ifnet *ifp, struct airo
 		else
 			return -1;
 	case AIROFLSHPCHR:	/* Send char to card. */
+		if (l_ioctl->len > sizeof(sc->areq)) {
+			return -EINVAL;
+		}
 		AN_UNLOCK(sc);
 		status = copyin(l_ioctl->data, &sc->areq, l_ioctl->len);
 		AN_LOCK(sc);



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