dri3: Guard against buggy clients

There's nothing to stop a client from sending these requests to screens
without DRI3 support, and if they do, we'll crash.  Let's not do that.

Reviewed-by: Jasper St. Pierre <<jstpierre@mecheye.net>
Signed-off-by: Adam Jackson <ajax@redhat.com>
This commit is contained in:
Adam Jackson 2013-12-13 11:28:59 -05:00
parent fe07ec19e2
commit e6fafd3de7

View File

@ -55,6 +55,9 @@ dri3_pixmap_from_fd(PixmapPtr *ppixmap, ScreenPtr screen, int fd,
dri3_screen_info_ptr info = ds->info; dri3_screen_info_ptr info = ds->info;
PixmapPtr pixmap; PixmapPtr pixmap;
if (!info || !info->pixmap_from_fd)
return BadImplementation;
pixmap = (*info->pixmap_from_fd) (screen, fd, width, height, stride, depth, bpp); pixmap = (*info->pixmap_from_fd) (screen, fd, width, height, stride, depth, bpp);
if (!pixmap) if (!pixmap)
return BadAlloc; return BadAlloc;
@ -71,6 +74,9 @@ dri3_fd_from_pixmap(int *pfd, PixmapPtr pixmap, CARD16 *stride, CARD32 *size)
dri3_screen_info_ptr info = ds->info; dri3_screen_info_ptr info = ds->info;
int fd; int fd;
if (!info || !info->fd_from_pixmap)
return BadImplementation;
fd = (*info->fd_from_pixmap)(screen, pixmap, stride, size); fd = (*info->fd_from_pixmap)(screen, pixmap, stride, size);
if (fd < 0) if (fd < 0)
return BadAlloc; return BadAlloc;