summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSylwester Nawrocki <s.nawrocki@samsung.com>2020-10-12 17:26:27 +0200
committerSylwester Nawrocki <s.nawrocki@samsung.com>2020-10-13 17:27:17 +0200
commitaef0e34edd8e4a5fe49eb53153b9c2cdf2c8e8e6 (patch)
tree944fbcd43fcb17e6e13d35c7a0844a647b9d28dc
parent2a1d580dbc6ad895923bf47be2eeb35f5a631bc6 (diff)
downloademulator-yagl-aef0e34edd8e4a5fe49eb53153b9c2cdf2c8e8e6.tar.gz
emulator-yagl-aef0e34edd8e4a5fe49eb53153b9c2cdf2c8e8e6.tar.bz2
emulator-yagl-aef0e34edd8e4a5fe49eb53153b9c2cdf2c8e8e6.zip
YaGL: Avoid potential null pointer dereference in glGetUniformLocation()
Avoid passing a NULL name argument to function yagl_gles2_program_get_uniform_location() as that function will dereference the pointer without checking. When the name argument is NULL make the function return value -1, which according to OpenGL/GLES specification indicates that name contains an invalid value/string. This suppresses a SVACE warning: * DEREF_AFTER_NULL: After having been compared to NULL value at yagl_gles2_calls.c:1096, pointer 'name' is passed as 2nd parameter in call to function 'yagl_gles2_program_get_uniform_location' at yagl_gles2_calls.c:1100, where it is dereferenced at yagl_gles2_program.c:373. [dereference] Variable 'name' is passed to function 'yagl_gles2_program_get_uniform_location' as 2nd parameter at GLESv2/yagl_gles2_calls.c:1100 [null check] null check at GLESv2/yagl_gles2_calls.c:1096 Change-Id: Id4a4315e6c48eebf2c4047c158faa5bf54897e18 Signed-off-by: Sylwester Nawrocki <s.nawrocki@samsung.com>
-rw-r--r--GLESv2/yagl_gles2_calls.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/GLESv2/yagl_gles2_calls.c b/GLESv2/yagl_gles2_calls.c
index 72d27ba..75a4e13 100644
--- a/GLESv2/yagl_gles2_calls.c
+++ b/GLESv2/yagl_gles2_calls.c
@@ -1093,10 +1093,13 @@ YAGL_API int glGetUniformLocation(GLuint program, const GLchar *name)
goto out;
}
- if (name) {
- YAGL_LOG_TRACE("getting uniform %s location", name);
+ if (!name) {
+ ret = -1;
+ goto out;
}
+ YAGL_LOG_TRACE("getting uniform %s location", name);
+
ret = yagl_gles2_program_get_uniform_location(program_obj, name);
out: