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.billa...@gmail.com>
---
 drivers/staging/xillybus/xillybus_core.c |    6 ++++++
 1 files changed, 6 insertions(+), 0 deletions(-)

diff --git a/drivers/staging/xillybus/xillybus_core.c 
b/drivers/staging/xillybus/xillybus_core.c
index 5fca58e..fa79979 100644
--- a/drivers/staging/xillybus/xillybus_core.c
+++ b/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;
-- 
1.7.2.3

_______________________________________________
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel

Reply via email to