Validate target parameter in CopyTexImage calls before using to check mip level
Would cause UNREACHABLE to be triggered if target was invalid, and INVALID_VALUE to
be returned instead of INVALID_ENUM if it were the only erroneous argument.
Change-Id: I2606e77379fa2832a50b3a299e6474a4b2f68afa
Reviewed-on: https://chromium-review.googlesource.com/189701
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Tested-by: Shannon Woods <shannonwoods@chromium.org>
diff --git a/src/libGLESv2/validationES3.cpp b/src/libGLESv2/validationES3.cpp
index 4b2bd45..326e5aa 100644
--- a/src/libGLESv2/validationES3.cpp
+++ b/src/libGLESv2/validationES3.cpp
@@ -286,6 +286,11 @@
bool isSubImage, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y,
GLsizei width, GLsizei height, GLint border)
{
+ if (!ValidTexture2DDestinationTarget(context, target))
+ {
+ return gl::error(GL_INVALID_ENUM, false);
+ }
+
if (level < 0 || xoffset < 0 || yoffset < 0 || zoffset < 0 || width < 0 || height < 0)
{
return gl::error(GL_INVALID_VALUE, false);
@@ -451,6 +456,7 @@
}
+
// If width or height is zero, it is a no-op. Return false without setting an error.
return (width > 0 && height > 0);
}