summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLukasz Kostyra <l.kostyra@samsung.com>2021-11-02 11:21:19 +0100
committerLukasz Kostyra <l.kostyra@samsung.com>2021-11-02 11:21:19 +0100
commita360b4231df4e7c357616e6488f5dd8a7b450a53 (patch)
tree09b41b61ba5090914e801aaa8b88d3966de4a33a
parent724d6455facd4ef696eef58efa982356e4671489 (diff)
downloademulator-yagl-a360b4231df4e7c357616e6488f5dd8a7b450a53.tar.gz
emulator-yagl-a360b4231df4e7c357616e6488f5dd8a7b450a53.tar.bz2
emulator-yagl-a360b4231df4e7c357616e6488f5dd8a7b450a53.zip
yagl_glsl_state: Prevent division by zero in yagl_glsl_state_pp_solve_binarysubmit/tizen/20211103.073433accepted/tizen/unified/20211103.121806
Resolves coverity issue CID 1241990 Change-Id: Ie60284afee63a108d9b2f10ffc07e9cc04363909
-rw-r--r--GLESv2/yagl_glsl_state.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/GLESv2/yagl_glsl_state.c b/GLESv2/yagl_glsl_state.c
index 72149ab..a60785d 100644
--- a/GLESv2/yagl_glsl_state.c
+++ b/GLESv2/yagl_glsl_state.c
@@ -728,6 +728,7 @@ static int yagl_glsl_state_pp_solve_binary(struct yagl_glsl_state *state,
{
char *tmp = NULL;
int a = 0, b = 0;
+ YAGL_LOG_FUNC_SET(yagl_glsl_state_pp_solve_binary);
assert(result != NULL);
@@ -753,6 +754,13 @@ static int yagl_glsl_state_pp_solve_binary(struct yagl_glsl_state *state,
b = tok_b.value;
}
+ if ((op == yagl_glsl_pp_op_mod) || (op == yagl_glsl_pp_op_div)) {
+ if (b == 0) {
+ YAGL_LOG_ERROR("Expression parse error - evaluated to division by zero");
+ return 0;
+ }
+ }
+
switch (op) {
case yagl_glsl_pp_op_or: *result = (a || b); break;
case yagl_glsl_pp_op_and: *result = (a && b); break;