diff options
author | Sylwester Nawrocki <s.nawrocki@samsung.com> | 2020-10-12 17:26:27 +0200 |
---|---|---|
committer | Sylwester Nawrocki <s.nawrocki@samsung.com> | 2020-10-13 17:27:17 +0200 |
commit | aef0e34edd8e4a5fe49eb53153b9c2cdf2c8e8e6 (patch) | |
tree | 944fbcd43fcb17e6e13d35c7a0844a647b9d28dc | |
parent | 2a1d580dbc6ad895923bf47be2eeb35f5a631bc6 (diff) | |
download | emulator-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.c | 7 |
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: |