From 2e8aae2a30b04174fe12f73cf05aa45da83cf3ed Mon Sep 17 00:00:00 2001 From: Joogab Yun Date: Mon, 29 May 2017 17:51:07 +0900 Subject: [PATCH] [evas_gl_thread] check null about string value in glShaderSource_evgl_api_thread_cmd() fixed crash at ES2-CTS.gtf.GL2Tests.shader_source.shadersource_invalidshaderhandle testing Change-Id: Ie94ec331338bec525207bef63390be75c493f2fc --- .../evas/engines/gl_common/evas_gl_thread_gl.c | 22 +++++++++++++++++----- 1 file changed, 17 insertions(+), 5 deletions(-) diff --git a/src/modules/evas/engines/gl_common/evas_gl_thread_gl.c b/src/modules/evas/engines/gl_common/evas_gl_thread_gl.c index b4feeb3..f4526a3 100644 --- a/src/modules/evas/engines/gl_common/evas_gl_thread_gl.c +++ b/src/modules/evas/engines/gl_common/evas_gl_thread_gl.c @@ -31,9 +31,15 @@ int i, len = 0; \ for (i = 0; i < count; i++) \ { \ - if (length) len = length[i]; \ - else len = strlen(string[i]); \ - if ((unsigned int)len + 1 > _mp_default_memory_size) \ + if (length) { \ + len = length[i]; \ + if (len < 0) \ + len = string[i] ? strlen(string[i]) : 0; \ + } \ + else { \ + len = string[i] ? strlen(string[i]) : 0; \ + } \ + if (len == 0 || ((unsigned int)len + 1 > _mp_default_memory_size )) \ { \ thread_mode = EVAS_GL_THREAD_MODE_FINISH; \ goto finish; \ @@ -46,8 +52,14 @@ memset(thread_data->string_copied, 0x00, sizeof(char *) * count); \ for (i = 0, len = 0; i < count; i++) \ { \ - if (length) len = length[i]; \ - else len = strlen(string[i]); \ + if (length) { \ + len = length[i]; \ + if (len < 0) \ + len = string[i] ? strlen(string[i]) : 0; \ + } \ + else { \ + len = string[i] ? strlen(string[i]) : 0; \ + } \ thread_data->string_copied[i] = eina_mempool_malloc(_mp_default, len + 1); \ if (thread_data->string_copied[i]) \ { \ -- 2.7.4