Commit dbfc119a by Alexey Knyazev Committed by Angle LUCI CQ

Fix overflow in gl::ValidateES2TexImageParametersBase

Bug: chromium:1222516 Change-Id: I532dc6e1c80c442af2c35d1facc262c48222def3 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2978251Reviewed-by: 's avatarJamie Madill <jmadill@chromium.org> Reviewed-by: 's avatarGeoff Lang <geofflang@chromium.org> Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
parent 64ce506d
...@@ -964,8 +964,8 @@ bool ValidateES2TexImageParametersBase(const Context *context, ...@@ -964,8 +964,8 @@ bool ValidateES2TexImageParametersBase(const Context *context,
return false; return false;
} }
if (xoffset < 0 || std::numeric_limits<GLsizei>::max() - xoffset < width || if ((xoffset < 0 || std::numeric_limits<GLsizei>::max() - xoffset < width) ||
std::numeric_limits<GLsizei>::max() - yoffset < height) (yoffset < 0 || std::numeric_limits<GLsizei>::max() - yoffset < height))
{ {
context->validationError(GL_INVALID_VALUE, kResourceMaxTextureSize); context->validationError(GL_INVALID_VALUE, kResourceMaxTextureSize);
return false; return false;
......
...@@ -3007,6 +3007,22 @@ TEST_P(Texture2DTest, NPOTSubImageParameters) ...@@ -3007,6 +3007,22 @@ TEST_P(Texture2DTest, NPOTSubImageParameters)
EXPECT_GL_NO_ERROR(); EXPECT_GL_NO_ERROR();
} }
// Regression test for https://crbug.com/1222516 to prevent integer overflow during validation.
TEST_P(Texture2DTest, SubImageValidationOverflow)
{
glActiveTexture(GL_TEXTURE0);
glBindTexture(GL_TEXTURE_2D, mTexture2D);
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 8, 8, 0, GL_RGBA, GL_UNSIGNED_BYTE, nullptr);
EXPECT_GL_NO_ERROR();
glTexSubImage2D(GL_TEXTURE_2D, 0, -4, 0, 2147483647, 1, GL_RGBA, GL_UNSIGNED_BYTE, nullptr);
EXPECT_GL_ERROR(GL_INVALID_VALUE);
glTexSubImage2D(GL_TEXTURE_2D, 0, 0, -4, 1, 2147483647, GL_RGBA, GL_UNSIGNED_BYTE, nullptr);
EXPECT_GL_ERROR(GL_INVALID_VALUE);
}
void FillLevel(GLint level, void FillLevel(GLint level,
GLuint width, GLuint width,
GLuint height, GLuint height,
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment