Explorar o código

staging: xillybus: Add sanity check in interrupt handler

Data arriving from the hardware is verified prior to its use. The lack of
this check has never been reported to cause a problem, but it's necessary
nevertheless.

Signed-off-by: Eli Billauer <eli.billauer@gmail.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Eli Billauer %!s(int64=11) %!d(string=hai) anos
pai
achega
cc6289fa14
Modificáronse 1 ficheiros con 6 adicións e 0 borrados
  1. 6 0
      drivers/staging/xillybus/xillybus_core.c

+ 6 - 0
drivers/staging/xillybus/xillybus_core.c

@@ -267,6 +267,12 @@ irqreturn_t xillybus_isr(int irq, void *data)
 
 			break;
 		case XILLYMSG_OPCODE_FIFOEOF:
+			if ((msg_channel > ep->num_channels) ||
+			    (msg_channel == 0) || (!msg_dir) ||
+			    !ep->channels[msg_channel]->num_wr_buffers) {
+				malformed_message(ep, &buf[i]);
+				break;
+			}
 			channel = ep->channels[msg_channel];
 			spin_lock(&channel->wr_spinlock);
 			channel->wr_eof = msg_bufno;