usbnet: ipheth: check that DPE points past NCM header

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



From: Foster Snowhill <forst@xxxxxx>

commit 429fa68b58cefb9aa9de27e4089637298b46b757 upstream.

By definition, a DPE points at the start of a network frame/datagram.
Thus it makes no sense for it to point at anything that's part of the
NCM header. It is not a security issue, but merely an indication of
a malformed DPE.

Enforce that all DPEs point at the data portion of the URB, past the
NCM header.

Fixes: a2d274c62e44 ("usbnet: ipheth: add CDC NCM support")
Cc: stable@xxxxxxxxxxxxxxx
Signed-off-by: Foster Snowhill <forst@xxxxxx>
Reviewed-by: Jakub Kicinski <kuba@xxxxxxxxxx>
Signed-off-by: Paolo Abeni <pabeni@xxxxxxxxxx>
Signed-off-by: Greg Kroah-Hartman <gregkh@xxxxxxxxxxxxxxxxxxx>
---
 drivers/net/usb/ipheth.c |    3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

--- a/drivers/net/usb/ipheth.c
+++ b/drivers/net/usb/ipheth.c
@@ -241,7 +241,8 @@ static int ipheth_rcvbulk_callback_ncm(s
 	dpe = ncm0->dpe16;
 	while (le16_to_cpu(dpe->wDatagramIndex) != 0 &&
 	       le16_to_cpu(dpe->wDatagramLength) != 0) {
-		if (le16_to_cpu(dpe->wDatagramIndex) >= urb->actual_length ||
+		if (le16_to_cpu(dpe->wDatagramIndex) < IPHETH_NCM_HEADER_SIZE ||
+		    le16_to_cpu(dpe->wDatagramIndex) >= urb->actual_length ||
 		    le16_to_cpu(dpe->wDatagramLength) > urb->actual_length -
 		    le16_to_cpu(dpe->wDatagramIndex)) {
 			dev->net->stats.rx_length_errors++;


Patches currently in stable-queue which might be from forst@xxxxxx are

queue-6.6/usbnet-ipheth-use-static-ndp16-location-in-urb.patch
queue-6.6/usbnet-ipheth-check-that-dpe-points-past-ncm-header.patch
queue-6.6/usbnet-ipheth-fix-dpe-oob-read.patch
queue-6.6/usbnet-ipheth-document-scope-of-ncm-implementation.patch
queue-6.6/usbnet-ipheth-fix-possible-overflow-in-dpe-length-check.patch
queue-6.6/usbnet-ipheth-refactor-ncm-datagram-loop.patch
queue-6.6/usbnet-ipheth-break-up-ncm-header-size-computation.patch




[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux