|
@@ -1582,7 +1582,7 @@ copy:
|
|
|
|
|
|
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)
|
|
@@ -2529,6 +2529,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 = moxa_boards[cardno].basemem;
|
|
@@ -2576,7 +2578,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;
|
|
@@ -2596,6 +2598,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 = moxa_boards[cardno].basemem;
|