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:
parent
fe07ec19e2
commit
e6fafd3de7
|
@ -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;
|
||||||
|
|
Loading…
Reference in New Issue