[Mesa-dev] [PATCH 04/10] gbm: handle queryImage() failure for GBM_BO_IMPORT_EGL_IMAGE

Emil Velikov emil.l.velikov at gmail.com
Mon Oct 16 16:04:06 UTC 2017


From: Emil Velikov <emil.velikov at collabora.com>

The function can fail. Check and teardown accordingly.

Fixes: a43d286ef7f ("gbm: Add import from fd")
Cc: Kristian Høgsberg <krh at bitplanet.net>
Signed-off-by: Emil Velikov <emil.velikov at collabora.com>
---
 src/gbm/backends/dri/gbm_dri.c | 8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)

diff --git a/src/gbm/backends/dri/gbm_dri.c b/src/gbm/backends/dri/gbm_dri.c
index 4a51bd39903..9c9066e6661 100644
--- a/src/gbm/backends/dri/gbm_dri.c
+++ b/src/gbm/backends/dri/gbm_dri.c
@@ -891,6 +891,7 @@ gbm_dri_bo_import(struct gbm_device *gbm,
    __DRIimage *image;
    unsigned dri_use = 0;
    int gbm_format;
+   unsigned query; /* EGLBoolean, but we cannot include the header */
 
    /* Required for query image WIDTH & HEIGHT */
    if (dri->image == NULL || dri->image->base.version < 4) {
@@ -934,7 +935,12 @@ gbm_dri_bo_import(struct gbm_device *gbm,
 
       image = dri->lookup_image(dri->screen, buffer, dri->lookup_user_data);
       image = dri->image->dupImage(image, NULL);
-      dri->image->queryImage(image, __DRI_IMAGE_ATTRIB_FORMAT, &dri_format);
+      query = dri->image->queryImage(image, __DRI_IMAGE_ATTRIB_FORMAT, &dri_format);
+      if (!query) {
+         errno = EINVAL;
+         dri->image->destroyImage(image);
+         break;
+      }
       gbm_format = gbm_dri_to_gbm_format(dri_format);
       if (gbm_format == 0) {
          errno = EINVAL;
-- 
2.14.1



More information about the mesa-dev mailing list