xf86-video-intel: src/sna/sna_accel.c

Chris Wilson ickle at kemper.freedesktop.org
Tue Oct 29 15:06:57 CET 2013


 src/sna/sna_accel.c |   11 +++++++++++
 1 file changed, 11 insertions(+)

New commits:
commit 0e6aca90c7b0b9edd5873034bcf0f3d8b2a9f065
Author: Chris Wilson <chris at chris-wilson.co.uk>
Date:   Tue Oct 29 13:50:51 2013 +0000

    sna: asserts bitmap uploads are correct
    
    Place guards around the pointer accesses to verify that they are within
    the bitmap.
    
    Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>

diff --git a/src/sna/sna_accel.c b/src/sna/sna_accel.c
index 16d76a2..a429f73 100644
--- a/src/sna/sna_accel.c
+++ b/src/sna/sna_accel.c
@@ -4549,9 +4549,12 @@ sna_put_xybitmap_blt(DrawablePtr drawable, GCPtr gc, RegionPtr region,
 		src_stride -= bw;
 		do {
 			int i = bw;
+			assert(src >= (uint8_t *)bits);
 			do {
 				*dst++ = byte_reverse(*src++);
 			} while (--i);
+			assert(src <= (uint8_t *)bits + BitmapBytePad(w) * h);
+			assert(dst <= (uint8_t *)ptr + kgem_bo_size(upload));
 			dst += bstride;
 			src += src_stride;
 		} while (--bh);
@@ -4679,9 +4682,12 @@ sna_put_xypixmap_blt(DrawablePtr drawable, GCPtr gc, RegionPtr region,
 			src_stride -= bw;
 			do {
 				int j = bw;
+				assert(src >= (uint8_t *)bits);
 				do {
 					*dst++ = byte_reverse(*src++);
 				} while (--j);
+				assert(src <= (uint8_t *)bits + BitmapBytePad(w) * h);
+				assert(dst <= (uint8_t *)ptr + kgem_bo_size(upload));
 				dst += bstride;
 				src += src_stride;
 			} while (--bh);
@@ -7401,11 +7407,13 @@ sna_copy_bitmap_blt(DrawablePtr _bitmap, DrawablePtr drawable, GCPtr gc,
 			src_stride -= bstride;
 			do {
 				int i = bstride;
+				assert(src >= (uint8_t *)bitmap->devPrivate.ptr);
 				do {
 					*dst++ = byte_reverse(*src++);
 					*dst++ = byte_reverse(*src++);
 					i -= 2;
 				} while (i);
+				assert(src <= (uint8_t *)bitmap->devPrivate.ptr + bitmap->devKind * bitmap->drawable.height);
 				src += src_stride;
 			} while (--bh);
 		} else {
@@ -7457,11 +7465,14 @@ sna_copy_bitmap_blt(DrawablePtr _bitmap, DrawablePtr drawable, GCPtr gc,
 			src_stride -= bstride;
 			do {
 				int i = bstride;
+				assert(src >= (uint8_t *)bitmap->devPrivate.ptr);
 				do {
 					*dst++ = byte_reverse(*src++);
 					*dst++ = byte_reverse(*src++);
 					i -= 2;
 				} while (i);
+				assert(src <= (uint8_t *)bitmap->devPrivate.ptr + bitmap->devKind * bitmap->drawable.height);
+				assert(dst <= (uint8_t *)ptr + kgem_bo_size(upload));
 				src += src_stride;
 			} while (--bh);
 


More information about the xorg-commit mailing list