Mesa (master): glsl: Check calloc return value in link_intrastage_shaders( )

Tapani Pälli tpalli at kemper.freedesktop.org
Tue Sep 23 07:52:10 UTC 2014


Module: Mesa
Branch: master
Commit: d2f0442bf632eef7dddcd77add8556f6be029b5e
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=d2f0442bf632eef7dddcd77add8556f6be029b5e

Author: Juha-Pekka Heikkila <juhapekka.heikkila at gmail.com>
Date:   Wed May  7 16:20:12 2014 +0300

glsl: Check calloc return value in link_intrastage_shaders()

Check calloc return value while adding build-in functions.

Signed-off-by: Juha-Pekka Heikkila <juhapekka.heikkila at gmail.com>
Reviewed-by: Anuj Phogat <anuj.phogat at gmail.com>

---

 src/glsl/linker.cpp |   15 +++++++++++----
 1 file changed, 11 insertions(+), 4 deletions(-)

diff --git a/src/glsl/linker.cpp b/src/glsl/linker.cpp
index 7689198..75e8b16 100644
--- a/src/glsl/linker.cpp
+++ b/src/glsl/linker.cpp
@@ -1714,12 +1714,19 @@ link_intrastage_shaders(void *mem_ctx,
        */
       gl_shader **linking_shaders = (gl_shader **)
          calloc(num_shaders + 1, sizeof(gl_shader *));
-      memcpy(linking_shaders, shader_list, num_shaders * sizeof(gl_shader *));
-      linking_shaders[num_shaders] = _mesa_glsl_get_builtin_function_shader();
 
-      ok = link_function_calls(prog, linked, linking_shaders, num_shaders + 1);
+      ok = linking_shaders != NULL;
 
-      free(linking_shaders);
+      if (ok) {
+         memcpy(linking_shaders, shader_list, num_shaders * sizeof(gl_shader *));
+         linking_shaders[num_shaders] = _mesa_glsl_get_builtin_function_shader();
+
+         ok = link_function_calls(prog, linked, linking_shaders, num_shaders + 1);
+
+         free(linking_shaders);
+      } else {
+         _mesa_error_no_memory(__func__);
+      }
    } else {
       ok = link_function_calls(prog, linked, shader_list, num_shaders);
    }




More information about the mesa-commit mailing list