OSDN Git Service

Fix the suspicious reference before check NULL pointer
authorZhao Yakui <yakui.zhao@intel.com>
Wed, 19 Apr 2017 08:37:50 +0000 (16:37 +0800)
committerXiang, Haihao <haihao.xiang@intel.com>
Mon, 12 Jun 2017 05:13:09 +0000 (13:13 +0800)
Fix #140
https://github.com/01org/intel-vaapi-driver/issues/140

Signed-off-by: Zhao Yakui <yakui.zhao@intel.com>
(cherry picked from commit 6907a27b6ed1eaa7acd2b3bd0930bc81501ab4f6)

src/i965_drv_video.c

index 699ebb6..d1982e1 100644 (file)
@@ -1466,6 +1466,11 @@ i965_suface_external_memory(VADriverContextP ctx,
     struct i965_driver_data *i965 = i965_driver_data(ctx);
     unsigned int tiling, swizzle;
 
+    if (!memory_attibute ||
+        !memory_attibute->buffers ||
+        index >= memory_attibute->num_buffers)
+        return VA_STATUS_ERROR_INVALID_PARAMETER;
+
     obj_surface->size = memory_attibute->data_size;
     if (external_memory_type == I965_SURFACE_MEM_GEM_FLINK)
         obj_surface->bo = drm_intel_bo_gem_create_from_name(i965->intel.bufmgr,
@@ -1480,10 +1485,6 @@ i965_suface_external_memory(VADriverContextP ctx,
         return VA_STATUS_ERROR_INVALID_PARAMETER;
 
     dri_bo_get_tiling(obj_surface->bo, &tiling, &swizzle);
-    if (!memory_attibute ||
-        !memory_attibute->buffers ||
-        index > memory_attibute->num_buffers)
-        return VA_STATUS_ERROR_INVALID_PARAMETER;
 
     ASSERT_RET(obj_surface->orig_width == memory_attibute->width, VA_STATUS_ERROR_INVALID_PARAMETER);
     ASSERT_RET(obj_surface->orig_height == memory_attibute->height, VA_STATUS_ERROR_INVALID_PARAMETER);