public inbox for linux-serial@vger.kernel.org
 help / color / mirror / Atom feed
* missing fix for CVE-2005-0504 in moxa
       [not found] <20060816225742.GD11954@krebs.dannf>
@ 2007-01-03  1:38 ` dann frazier
  0 siblings, 0 replies; only message in thread
From: dann frazier @ 2007-01-03  1:38 UTC (permalink / raw)
  To: linux-serial; +Cc: support, dilinger

hey,
  I noticed that the moxa input checking security bug described by
CVE-2005-0504 appears to remain unfixed upstream.
 
The issue is described here:
  http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2005-0504

Debian has been shipping the following patch from Andres Salomon. I
tried contacting the listed maintainer a few months ago but received
no response.

I've tested that this still applies to and compiles against
2.6.20-rc3.

Signed-off-by: dann frazier <dannf@debian.org>

diff --git a/drivers/char/moxa.c b/drivers/char/moxa.c
index f391a24..4388791 100644
--- a/drivers/char/moxa.c
+++ b/drivers/char/moxa.c
@@ -1669,7 +1669,7 @@ int MoxaDriverIoctl(unsigned int cmd, unsigned long arg, int port)
 
 	if(copy_from_user(&dltmp, argp, sizeof(struct dl_str)))
 		return -EFAULT;
-	if(dltmp.cardno < 0 || dltmp.cardno >= MAX_BOARDS)
+	if(dltmp.cardno < 0 || dltmp.cardno >= MAX_BOARDS || dltmp.len < 0)
 		return -EINVAL;
 
 	switch(cmd)
@@ -2711,6 +2711,8 @@ static int moxaloadbios(int cardno, unsigned char __user *tmp, int len)
 	void __iomem *baseAddr;
 	int i;
 
+	if(len < 0 || len > sizeof(moxaBuff))
+		return -EINVAL;
 	if(copy_from_user(moxaBuff, tmp, len))
 		return -EFAULT;
 	baseAddr = moxaBaseAddr[cardno];
@@ -2758,7 +2760,7 @@ static int moxaload320b(int cardno, unsigned char __user *tmp, int len)
 	void __iomem *baseAddr;
 	int i;
 
-	if(len > sizeof(moxaBuff))
+	if(len < 0 || len > sizeof(moxaBuff))
 		return -EINVAL;
 	if(copy_from_user(moxaBuff, tmp, len))
 		return -EFAULT;
@@ -2778,6 +2780,8 @@ static int moxaloadcode(int cardno, unsigned char __user *tmp, int len)
 	void __iomem *baseAddr, *ofsAddr;
 	int retval, port, i;
 
+	if(len < 0 || len > sizeof(moxaBuff))
+		return -EINVAL;
 	if(copy_from_user(moxaBuff, tmp, len))
 		return -EFAULT;
 	baseAddr = moxaBaseAddr[cardno];



-- 
dann frazier | HP Open Source and Linux Organization

^ permalink raw reply related	[flat|nested] only message in thread

only message in thread, other threads:[~2007-01-03  1:52 UTC | newest]

Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
     [not found] <20060816225742.GD11954@krebs.dannf>
2007-01-03  1:38 ` missing fix for CVE-2005-0504 in moxa dann frazier

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox