Remove invalid glGetIntegerv() enums. GL_UNIFORM_BUFFER_SIZE and GL_UNIFORM_BUFFER_START can't be queried using glGetIntegerv(). They're only valid for glGetInteger64i_v(). This prevents a potential null dereference. Bug chromium:859775 Change-Id: Ic66f33a582805b021a2d4bd08ff627f704d42aa7 Reviewed-on: https://swiftshader-review.googlesource.com/19748 Tested-by: Nicolas Capens <nicolascapens@google.com> Reviewed-by: Alexis Hétu <sugoi@google.com>
diff --git a/src/OpenGL/libGLESv2/Context.cpp b/src/OpenGL/libGLESv2/Context.cpp index 7d21c63..227cd4c 100644 --- a/src/OpenGL/libGLESv2/Context.cpp +++ b/src/OpenGL/libGLESv2/Context.cpp
@@ -2320,12 +2320,6 @@ case GL_UNIFORM_BUFFER_OFFSET_ALIGNMENT: *params = UNIFORM_BUFFER_OFFSET_ALIGNMENT; return true; - case GL_UNIFORM_BUFFER_SIZE: - *params = static_cast<T>(mState.genericUniformBuffer->size()); - return true; - case GL_UNIFORM_BUFFER_START: - *params = static_cast<T>(mState.genericUniformBuffer->offset()); - return true; case GL_UNPACK_IMAGE_HEIGHT: *params = mState.unpackParameters.imageHeight; return true; @@ -2413,7 +2407,7 @@ if(transformFeedback->getBuffer(index)) { *param = transformFeedback->getOffset(index); - break; + break; } else return false; default: @@ -2433,13 +2427,14 @@ case GL_UNIFORM_BUFFER_BINDING: case GL_UNIFORM_BUFFER_SIZE: case GL_UNIFORM_BUFFER_START: - if(index >= MAX_UNIFORM_BUFFER_BINDINGS) - { - return error(GL_INVALID_VALUE, true); - } break; default: - break; + return false; + } + + if(index >= MAX_UNIFORM_BUFFER_BINDINGS) + { + return error(GL_INVALID_VALUE, true); } const BufferBinding& uniformBuffer = mState.uniformBuffers[index]; @@ -2609,8 +2604,6 @@ case GL_TEXTURE_BINDING_2D_ARRAY: case GL_UNIFORM_BUFFER_BINDING: case GL_UNIFORM_BUFFER_OFFSET_ALIGNMENT: - case GL_UNIFORM_BUFFER_SIZE: - case GL_UNIFORM_BUFFER_START: case GL_UNPACK_IMAGE_HEIGHT: case GL_UNPACK_ROW_LENGTH: case GL_UNPACK_SKIP_IMAGES: