Sfoglia il codice sorgente

mtd: sanity check ioctl input

If "ur_idx" is wrong we could go past the end of the array.  The
"ur_idx" comes from root so it's not a huge deal, but adding a sanity
check makes the code more robust.

Signed-off-by: Dan Carpenter <error27@gmail.com>
Signed-off-by: Artem Bityutskiy <Artem.Bityutskiy@nokia.com>
Signed-off-by: David Woodhouse <David.Woodhouse@intel.com>
Dan Carpenter 14 anni fa
parent
commit
5e59be1f35
1 ha cambiato i file con 3 aggiunte e 0 eliminazioni
  1. 3 0
      drivers/mtd/mtdchar.c

+ 3 - 0
drivers/mtd/mtdchar.c

@@ -546,6 +546,9 @@ static int mtd_ioctl(struct file *file, u_int cmd, u_long arg)
 		if (get_user(ur_idx, &(ur->regionindex)))
 		if (get_user(ur_idx, &(ur->regionindex)))
 			return -EFAULT;
 			return -EFAULT;
 
 
+		if (ur_idx >= mtd->numeraseregions)
+			return -EINVAL;
+
 		kr = &(mtd->eraseregions[ur_idx]);
 		kr = &(mtd->eraseregions[ur_idx]);
 
 
 		if (put_user(kr->offset, &(ur->offset))
 		if (put_user(kr->offset, &(ur->offset))