mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-01-01 18:20:10 +01:00
i965: Check return value of screen->image.loader->getBuffers (v2)
The images struct is an uninitialized local variable on the stack. If the
callback returns 0, the struct might not have been updated and so should
be considered uninitialized. Currently the code ignores the return value,
which (depending on stack contents) might end up in reading a non-zero
value from images.image_mask and dereferencing further fields.
Another solution would be to initialize image_mask with 0, but checking
the return value seems more sensible and it is what Gallium is doing.
v2: fix typos in commit message,
fix indentation,
remove unnecessary parentheses and pointer dereference to keep line
length reasonable.
Cc: 11.2 12.0 <mesa-stable@lists.freedesktop.org>
Signed-off-by: Tomasz Figa <tfiga@chromium.org>
Reviewed-by: Emil Velikov <emil.velikov@collabora.com>
This commit is contained in:
parent
9ee3f097b6
commit
e7ab358e81
1 changed files with 9 additions and 6 deletions
|
|
@ -1649,6 +1649,7 @@ intel_update_image_buffers(struct brw_context *brw, __DRIdrawable *drawable)
|
|||
struct __DRIimageList images;
|
||||
unsigned int format;
|
||||
uint32_t buffer_mask = 0;
|
||||
int ret;
|
||||
|
||||
front_rb = intel_get_renderbuffer(fb, BUFFER_FRONT_LEFT);
|
||||
back_rb = intel_get_renderbuffer(fb, BUFFER_BACK_LEFT);
|
||||
|
|
@ -1668,12 +1669,14 @@ intel_update_image_buffers(struct brw_context *brw, __DRIdrawable *drawable)
|
|||
if (back_rb)
|
||||
buffer_mask |= __DRI_IMAGE_BUFFER_BACK;
|
||||
|
||||
(*screen->image.loader->getBuffers) (drawable,
|
||||
driGLFormatToImageFormat(format),
|
||||
&drawable->dri2.stamp,
|
||||
drawable->loaderPrivate,
|
||||
buffer_mask,
|
||||
&images);
|
||||
ret = screen->image.loader->getBuffers(drawable,
|
||||
driGLFormatToImageFormat(format),
|
||||
&drawable->dri2.stamp,
|
||||
drawable->loaderPrivate,
|
||||
buffer_mask,
|
||||
&images);
|
||||
if (!ret)
|
||||
return;
|
||||
|
||||
if (images.image_mask & __DRI_IMAGE_BUFFER_FRONT) {
|
||||
drawable->w = images.front->width;
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue