* Ken Ashcraft ([EMAIL PROTECTED]) wrote:
> [BUG]
> /home/kash/linux/linux-2.6.5/drivers/char/drm/i810_dma.c:1276:i810_dma_mc: 
> ERROR:TAINT: 1267:1276:Using user value "((mc).idx * 4)" without first performing 
> bounds checks [SOURCE_MODEL=(lib,copy_from_user,user,taintscalar)] [PATH= 
> "(*((*dev).lock).hw_lock).lock & -2147483648 == 0" on line 1271 is false => 
> "copy_from_user != 0" on line 1267 is false]    
>       u32 *hw_status = dev_priv->hw_status_page;
>       drm_i810_sarea_t *sarea_priv = (drm_i810_sarea_t *)
>               dev_priv->sarea_priv;
>       drm_i810_mc_t mc;
> 
> Start --->
>       if (copy_from_user(&mc, (drm_i810_mc_t *)arg, sizeof(mc)))
>               return -EFAULT;
> 
> 
>       if (!_DRM_LOCK_IS_HELD(dev->lock.hw_lock->lock)) {
>               DRM_ERROR("i810_dma_mc called without lock held\n");
>               return -EINVAL;
>       }
> 
> Error --->
>       i810_dma_dispatch_mc(dev, dma->buflist[mc.idx], mc.used,
>               mc.last_render );
> 
>       atomic_add(mc.used, &dev->counts[_DRM_STAT_SECONDARY]);

Looks like a possible bug.  Index shouldn't go off end of buflist.
Perhaps verifying it's below buf_count would do it.  Patch below.

thanks,
-chris
-- 
Linux Security Modules     http://lsm.immunix.org     http://lsm.bkbits.net

===== drivers/char/drm/i810_dma.c 1.31 vs edited =====
--- 1.31/drivers/char/drm/i810_dma.c    Mon Apr 12 10:54:26 2004
+++ edited/drivers/char/drm/i810_dma.c  Fri Apr 16 11:46:32 2004
@@ -1275,6 +1275,9 @@
                return -EINVAL;
        }
 
+       if (mc.idx >= dma->buf_count)
+               return -EINVAL;
+
        i810_dma_dispatch_mc(dev, dma->buflist[mc.idx], mc.used,
                mc.last_render );
 


-------------------------------------------------------
This SF.Net email is sponsored by: IBM Linux Tutorials
Free Linux tutorial presented by Daniel Robbins, President and CEO of
GenToo technologies. Learn everything from fundamentals to system
administration.http://ads.osdn.com/?ad_id=1470&alloc_id=3638&op=click
--
_______________________________________________
Dri-devel mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/dri-devel

Reply via email to