summaryrefslogtreecommitdiffstats
path: root/opengl/system
diff options
context:
space:
mode:
authorbohu <bohu@google.com>2014-10-21 17:10:28 +0000
committerGerrit Code Review <noreply-gerritcodereview@google.com>2014-10-21 17:10:28 +0000
commitd7486c9cd3ff87cfda193cf5fca1d2f5ec0f7316 (patch)
tree2b512d16507c76873c1894e31f70ee1cafcc8304 /opengl/system
parentb86347c7f68c9739fcddf1338cc4fcd6ca9b3e2a (diff)
parentf2f04f45cbf6a44d9235faa61e218e7a205f5838 (diff)
downloadandroid_device_generic_goldfish-d7486c9cd3ff87cfda193cf5fca1d2f5ec0f7316.tar.gz
android_device_generic_goldfish-d7486c9cd3ff87cfda193cf5fca1d2f5ec0f7316.tar.bz2
android_device_generic_goldfish-d7486c9cd3ff87cfda193cf5fca1d2f5ec0f7316.zip
Merge "Guard against negative buffer size"
Diffstat (limited to 'opengl/system')
-rw-r--r--opengl/system/GLESv2_enc/GL2Encoder.cpp37
-rw-r--r--opengl/system/GLESv2_enc/GL2Encoder.h16
2 files changed, 53 insertions, 0 deletions
diff --git a/opengl/system/GLESv2_enc/GL2Encoder.cpp b/opengl/system/GLESv2_enc/GL2Encoder.cpp
index 305806e..f6f61e6 100644
--- a/opengl/system/GLESv2_enc/GL2Encoder.cpp
+++ b/opengl/system/GLESv2_enc/GL2Encoder.cpp
@@ -79,6 +79,11 @@ GL2Encoder::GL2Encoder(IOStream *stream) : gl2_encoder_context_t(stream)
m_glDeleteShader_enc = set_glDeleteShader(s_glDeleteShader);
m_glAttachShader_enc = set_glAttachShader(s_glAttachShader);
m_glDetachShader_enc = set_glDetachShader(s_glDetachShader);
+ m_glGetAttachedShaders_enc = set_glGetAttachedShaders(s_glGetAttachedShaders);
+ m_glGetShaderSource_enc = set_glGetShaderSource(s_glGetShaderSource);
+ m_glGetShaderInfoLog_enc = set_glGetShaderInfoLog(s_glGetShaderInfoLog);
+ m_glGetProgramInfoLog_enc = set_glGetProgramInfoLog(s_glGetProgramInfoLog);
+
m_glGetUniformLocation_enc = set_glGetUniformLocation(s_glGetUniformLocation);
m_glUseProgram_enc = set_glUseProgram(s_glUseProgram);
@@ -746,6 +751,38 @@ GLuint GL2Encoder::s_glCreateShader(void *self, GLenum shaderType)
return shader;
}
+void GL2Encoder::s_glGetAttachedShaders(void *self, GLuint program, GLsizei maxCount,
+ GLsizei* count, GLuint* shaders)
+{
+ GL2Encoder *ctx = (GL2Encoder*)self;
+ SET_ERROR_IF(maxCount < 0, GL_INVALID_VALUE);
+ ctx->m_glGetAttachedShaders_enc(self, program, maxCount, count, shaders);
+}
+
+void GL2Encoder::s_glGetShaderSource(void *self, GLuint shader, GLsizei bufsize,
+ GLsizei* length, GLchar* source)
+{
+ GL2Encoder *ctx = (GL2Encoder*)self;
+ SET_ERROR_IF(bufsize < 0, GL_INVALID_VALUE);
+ ctx->m_glGetShaderSource_enc(self, shader, bufsize, length, source);
+}
+
+void GL2Encoder::s_glGetShaderInfoLog(void *self, GLuint shader, GLsizei bufsize,
+ GLsizei* length, GLchar* infolog)
+{
+ GL2Encoder *ctx = (GL2Encoder*)self;
+ SET_ERROR_IF(bufsize < 0, GL_INVALID_VALUE);
+ ctx->m_glGetShaderInfoLog_enc(self, shader, bufsize, length, infolog);
+}
+
+void GL2Encoder::s_glGetProgramInfoLog(void *self, GLuint program, GLsizei bufsize,
+ GLsizei* length, GLchar* infolog)
+{
+ GL2Encoder *ctx = (GL2Encoder*)self;
+ SET_ERROR_IF(bufsize < 0, GL_INVALID_VALUE);
+ ctx->m_glGetProgramInfoLog_enc(self, program, bufsize, length, infolog);
+}
+
void GL2Encoder::s_glDeleteShader(void *self, GLenum shader)
{
GL2Encoder *ctx = (GL2Encoder*)self;
diff --git a/opengl/system/GLESv2_enc/GL2Encoder.h b/opengl/system/GLESv2_enc/GL2Encoder.h
index c6506a9..8f6204c 100644
--- a/opengl/system/GLESv2_enc/GL2Encoder.h
+++ b/opengl/system/GLESv2_enc/GL2Encoder.h
@@ -148,6 +148,22 @@ private:
glDetachShader_client_proc_t m_glDetachShader_enc;
static void s_glDetachShader(void *self, GLuint program, GLuint shader);
+ glGetAttachedShaders_client_proc_t m_glGetAttachedShaders_enc;
+ static void s_glGetAttachedShaders(void *self, GLuint program, GLsizei maxCount,
+ GLsizei* count, GLuint* shaders);
+
+ glGetShaderSource_client_proc_t m_glGetShaderSource_enc;
+ static void s_glGetShaderSource(void *self, GLuint shader, GLsizei bufsize,
+ GLsizei* length, GLchar* source);
+
+ glGetShaderInfoLog_client_proc_t m_glGetShaderInfoLog_enc;
+ static void s_glGetShaderInfoLog(void *self,GLuint shader,
+ GLsizei bufsize, GLsizei* length, GLchar* infolog);
+
+ glGetProgramInfoLog_client_proc_t m_glGetProgramInfoLog_enc;
+ static void s_glGetProgramInfoLog(void *self,GLuint program,
+ GLsizei bufsize, GLsizei* length, GLchar* infolog);
+
glGetUniformLocation_client_proc_t m_glGetUniformLocation_enc;
static int s_glGetUniformLocation(void *self, GLuint program, const GLchar *name);
glUseProgram_client_proc_t m_glUseProgram_enc;