copyimage: check requested slice early when cube maps are involved
authorGert Wollny <gert.wollny@collabora.com>
Mon, 2 Oct 2023 13:38:19 +0000 (15:38 +0200)
committerMarge Bot <emma+marge@anholt.net>
Tue, 3 Oct 2023 18:50:10 +0000 (18:50 +0000)
The generalized check for the z-slice happens in 'check_region_bounds',
but this function requires the image pointer that is acquired in
`prepare_target_err`, therefore replace the assertion with a proper test.

v2: Also check for negative value (Brian Paul)

CC: mesa-stable
Signed-off-by: Gert Wollny <gert.wollny@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/25507>

src/mesa/main/copyimage.c

index 3d0d8af..3fcfd3d 100644 (file)
@@ -239,7 +239,11 @@ prepare_target_err(struct gl_context *ctx, GLuint name, GLenum target,
       if (target == GL_TEXTURE_CUBE_MAP) {
          int i;
 
-         assert(z < MAX_FACES);  /* should have been caught earlier */
+         if (z < 0 || z >= MAX_FACES) {
+            _mesa_error(ctx, GL_INVALID_VALUE,
+                        "glCopyImageSubData(cube face (%sZ = %d)", dbg_prefix, z);
+            return false;
+         }
 
          /* make sure all the cube faces are present */
          for (i = 0; i < depth; i++) {