diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/sna/sna_video_overlay.c | 8 | ||||
-rw-r--r-- | src/sna/sna_video_sprite.c | 8 | ||||
-rw-r--r-- | src/sna/sna_video_textured.c | 8 |
3 files changed, 21 insertions, 3 deletions
diff --git a/src/sna/sna_video_overlay.c b/src/sna/sna_video_overlay.c index a68a173b..cfdc83d6 100644 --- a/src/sna/sna_video_overlay.c +++ b/src/sna/sna_video_overlay.c @@ -523,7 +523,13 @@ sna_video_overlay_put_image(ClientPtr client, return BadAlloc; } - assert(kgem_bo_size(frame.bo) >= frame.size); + if (kgem_bo_size(frame.bo) < frame.size) { + DBG(("%s: bo size=%d, expected=%d\n", + __FUNCTION__, kgem_bo_size(frame.bo), frame.size)); + kgem_bo_destroy(&sna->kgem, frame.bo); + return BadAlloc; + } + frame.image.x1 = 0; frame.image.y1 = 0; frame.image.x2 = frame.width; diff --git a/src/sna/sna_video_sprite.c b/src/sna/sna_video_sprite.c index a8d50ab2..cab2cdaa 100644 --- a/src/sna/sna_video_sprite.c +++ b/src/sna/sna_video_sprite.c @@ -348,7 +348,13 @@ static int sna_video_sprite_put_image(ClientPtr client, if (frame.bo == NULL) return BadAlloc; - assert(kgem_bo_size(frame.bo) >= frame.size); + if (kgem_bo_size(frame.bo) < frame.size) { + DBG(("%s: bo size=%d, expected=%d\n", + __FUNCTION__, kgem_bo_size(frame.bo), frame.size)); + kgem_bo_destroy(&sna->kgem, frame.bo); + return BadAlloc; + } + frame.image.x1 = 0; frame.image.y1 = 0; frame.image.x2 = frame.width; diff --git a/src/sna/sna_video_textured.c b/src/sna/sna_video_textured.c index d3ce2804..7ec17d18 100644 --- a/src/sna/sna_video_textured.c +++ b/src/sna/sna_video_textured.c @@ -222,7 +222,13 @@ sna_video_textured_put_image(ClientPtr client, return BadAlloc; } - assert(kgem_bo_size(frame.bo) >= frame.size); + if (kgem_bo_size(frame.bo) < frame.size) { + DBG(("%s: bo size=%d, expected=%d\n", + __FUNCTION__, kgem_bo_size(frame.bo), frame.size)); + kgem_bo_destroy(&sna->kgem, frame.bo); + return BadAlloc; + } + frame.image.x1 = 0; frame.image.y1 = 0; frame.image.x2 = frame.width; |